- Notifications
You must be signed in to change notification settings - Fork14.5k
[libc] Updated exp fuzz tests#148912
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Conversation
Fuzz tests were previously in the wrong format, updated them to correct format.
@llvm/pr-subscribers-libc Author: None (sribee8) ChangesFuzz tests were previously in the wrong format, updated them to correct format. Full diff:https://github.com/llvm/llvm-project/pull/148912.diff 4 Files Affected:
diff --git a/libc/fuzzing/math/exp10_fuzz.cpp b/libc/fuzzing/math/exp10_fuzz.cppindex 2baef03a264a4..3dba9b129521f 100644--- a/libc/fuzzing/math/exp10_fuzz.cpp+++ b/libc/fuzzing/math/exp10_fuzz.cpp@@ -12,27 +12,37 @@ #include "src/math/exp10.h" #include "utils/MPFRWrapper/mpfr_inc.h"+#include <cstdint>+#include <cstring>+#include <iostream> #include <math.h>-extern "C" int LLVMFuzzerTestOneInput(double x) {- // remove NaN and inf- if (isnan(x) || isinf(x))- return 0;- // signed zeros already tested in unit tests- if (signbit(x) && x == 0.0)- return 0;+extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { mpfr_t input; mpfr_init2(input, 53);- mpfr_set_d(input, x, MPFR_RNDN);- int output = mpfr_exp10(input, input, MPFR_RNDN);- mpfr_subnormalize(input, output, MPFR_RNDN);- double to_compare = mpfr_get_d(input, MPFR_RNDN);+ for (size_t i = 0; i < size / sizeof(double); ++i) {+ double x;+ std::memcpy(&x, data, sizeof(double)); // remove NaN and inf+ if (isnan(x) || isinf(x))+ return 0;+ // signed zeros already tested in unit tests+ if (signbit(x) && x == 0.0)+ return 0;- double result = LIBC_NAMESPACE::exp10(x);+ mpfr_set_d(input, x, MPFR_RNDN);+ int output = mpfr_exp10(input, input, MPFR_RNDN);+ mpfr_subnormalize(input, output, MPFR_RNDN);+ double to_compare = mpfr_get_d(input, MPFR_RNDN);- if (result != to_compare)- __builtin_trap();+ double result = LIBC_NAMESPACE::exp10(x);+ if (result != to_compare) {+ std::cout << std::hexfloat << "Failing input: " << x << std::endl;+ std::cout << std::hexfloat << "Failing output: " << result << std::endl;+ std::cout << std::hexfloat << "Expected: " << to_compare << std::endl;+ __builtin_trap();+ }+ } mpfr_clear(input); return 0; }diff --git a/libc/fuzzing/math/exp2_fuzz.cpp b/libc/fuzzing/math/exp2_fuzz.cppindex 8a2959047a6ca..3c2f58915fa50 100644--- a/libc/fuzzing/math/exp2_fuzz.cpp+++ b/libc/fuzzing/math/exp2_fuzz.cpp@@ -12,27 +12,38 @@ #include "src/math/exp2.h" #include "utils/MPFRWrapper/mpfr_inc.h"+#include <cstdint>+#include <cstring>+#include <iostream> #include <math.h>-extern "C" int LLVMFuzzerTestOneInput(double x) {- // remove NaN and inf- if (isnan(x) || isinf(x))- return 0;- // signed zeros already tested in unit tests- if (signbit(x) && x == 0.0)- return 0;+extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { mpfr_t input; mpfr_init2(input, 53);- mpfr_set_d(input, x, MPFR_RNDN);- int output = mpfr_exp2(input, input, MPFR_RNDN);- mpfr_subnormalize(input, output, MPFR_RNDN);- double to_compare = mpfr_get_d(input, MPFR_RNDN);+ for (size_t i = 0; i < size / sizeof(double); ++i) {+ double x;+ std::memcpy(&x, data, sizeof(double));+ // remove NaN and inf+ if (isnan(x) || isinf(x))+ return 0;+ // signed zeros already tested in unit tests+ if (signbit(x) && x == 0.0)+ return 0;- double result = LIBC_NAMESPACE::exp2(x);+ mpfr_set_d(input, x, MPFR_RNDN);+ int output = mpfr_exp2(input, input, MPFR_RNDN);+ mpfr_subnormalize(input, output, MPFR_RNDN);+ double to_compare = mpfr_get_d(input, MPFR_RNDN);- if (result != to_compare)- __builtin_trap();+ double result = LIBC_NAMESPACE::exp2(x);+ if (result != to_compare) {+ std::cout << std::hexfloat << "Failing input: " << x << std::endl;+ std::cout << std::hexfloat << "Failing output: " << result << std::endl;+ std::cout << std::hexfloat << "Expected: " << to_compare << std::endl;+ __builtin_trap();+ }+ } mpfr_clear(input); return 0; }diff --git a/libc/fuzzing/math/exp_fuzz.cpp b/libc/fuzzing/math/exp_fuzz.cppindex 97bc12dfa64c9..13a81623d5c02 100644--- a/libc/fuzzing/math/exp_fuzz.cpp+++ b/libc/fuzzing/math/exp_fuzz.cpp@@ -12,27 +12,38 @@ #include "src/math/exp.h" #include "utils/MPFRWrapper/mpfr_inc.h"+#include <cstdint>+#include <cstring>+#include <iostream> #include <math.h>-extern "C" int LLVMFuzzerTestOneInput(double x) {- // remove NaN and inf- if (isnan(x) || isinf(x))- return 0;- // signed zeros already tested in unit tests- if (signbit(x) && x == 0.0)- return 0;+extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { mpfr_t input; mpfr_init2(input, 53);- mpfr_set_d(input, x, MPFR_RNDN);- int output = mpfr_exp(input, input, MPFR_RNDN);- mpfr_subnormalize(input, output, MPFR_RNDN);- double to_compare = mpfr_get_d(input, MPFR_RNDN);+ for (size_t i = 0; i < size / sizeof(double); ++i) {+ double x;+ std::memcpy(&x, data, sizeof(double));+ // remove NaN and inf+ if (isnan(x) || isinf(x))+ return 0;+ // signed zeros already tested in unit tests+ if (signbit(x) && x == 0.0)+ return 0;- double result = LIBC_NAMESPACE::exp(x);+ mpfr_set_d(input, x, MPFR_RNDN);+ int output = mpfr_exp(input, input, MPFR_RNDN);+ mpfr_subnormalize(input, output, MPFR_RNDN);+ double to_compare = mpfr_get_d(input, MPFR_RNDN);- if (result != to_compare)- __builtin_trap();+ double result = LIBC_NAMESPACE::exp(x);+ if (result != to_compare) {+ std::cout << std::hexfloat << "Failing input: " << x << std::endl;+ std::cout << std::hexfloat << "Failing output: " << result << std::endl;+ std::cout << std::hexfloat << "Expected: " << to_compare << std::endl;+ __builtin_trap();+ }+ } mpfr_clear(input); return 0; }diff --git a/libc/fuzzing/math/expm1_fuzz.cpp b/libc/fuzzing/math/expm1_fuzz.cppindex db507bb02b1d7..464d799565747 100644--- a/libc/fuzzing/math/expm1_fuzz.cpp+++ b/libc/fuzzing/math/expm1_fuzz.cpp@@ -12,27 +12,38 @@ #include "src/math/expm1.h" #include "utils/MPFRWrapper/mpfr_inc.h"+#include <cstdint>+#include <cstring>+#include <iostream> #include <math.h>-extern "C" int LLVMFuzzerTestOneInput(double x) {- // remove NaN and inf- if (isnan(x) || isinf(x))- return 0;- // signed zeros already tested in unit tests- if (signbit(x) && x == 0.0)- return 0;+extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { mpfr_t input; mpfr_init2(input, 53);- mpfr_set_d(input, x, MPFR_RNDN);- int output = mpfr_expm1(input, input, MPFR_RNDN);- mpfr_subnormalize(input, output, MPFR_RNDN);- double to_compare = mpfr_get_d(input, MPFR_RNDN);+ for (size_t i = 0; i < size / sizeof(double); ++i) {+ double x;+ std::memcpy(&x, data, sizeof(double));+ // remove NaN and inf+ if (isnan(x) || isinf(x))+ return 0;+ // signed zeros already tested in unit tests+ if (signbit(x) && x == 0.0)+ return 0;- double result = LIBC_NAMESPACE::expm1(x);+ mpfr_set_d(input, x, MPFR_RNDN);+ int output = mpfr_expm1(input, input, MPFR_RNDN);+ mpfr_subnormalize(input, output, MPFR_RNDN);+ double to_compare = mpfr_get_d(input, MPFR_RNDN);- if (result != to_compare)- __builtin_trap();+ double result = LIBC_NAMESPACE::expm1(x);+ if (result != to_compare) {+ std::cout << std::hexfloat << "Failing input: " << x << std::endl;+ std::cout << std::hexfloat << "Failing output: " << result << std::endl;+ std::cout << std::hexfloat << "Expected: " << to_compare << std::endl;+ __builtin_trap();+ }+ } mpfr_clear(input); return 0; } |
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
github-actionsbot commentedJul 16, 2025 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
✅ With the latest revision this PR passed the C/C++ code formatter. |
82451d0
intollvm:mainUh oh!
There was an error while loading.Please reload this page.
Fuzz tests were previously in the wrong format, updated them to correct format.