diff options
author | lntue <lntue@google.com> | 2025-07-18 17:54:47 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-07-18 17:54:47 -0400 |
commit | 20c5daa032ca5e4c655d1248ef9cbf8a33183aaf (patch) | |
tree | b25acc78a227557874e38c3779751ca35b46ccc6 /libc | |
parent | 2e67dcfdcd023df2f06e0823eeea23990ce41534 (diff) | |
download | llvm-20c5daa032ca5e4c655d1248ef9cbf8a33183aaf.zip llvm-20c5daa032ca5e4c655d1248ef9cbf8a33183aaf.tar.gz llvm-20c5daa032ca5e4c655d1248ef9cbf8a33183aaf.tar.bz2 |
[libc] Fix conflicting symbols when shared/math.h is included. (#149591)
Diffstat (limited to 'libc')
-rw-r--r-- | libc/src/__support/math/exp.h | 19 | ||||
-rw-r--r-- | libc/src/__support/math/exp10.h | 19 | ||||
-rw-r--r-- | libc/src/__support/math/exp10f_utils.h | 6 |
3 files changed, 23 insertions, 21 deletions
diff --git a/libc/src/__support/math/exp.h b/libc/src/__support/math/exp.h index a538df1..ff59ff7 100644 --- a/libc/src/__support/math/exp.h +++ b/libc/src/__support/math/exp.h @@ -40,11 +40,11 @@ static constexpr double LOG2_E = 0x1.71547652b82fep+0; // Error bounds: // Errors when using double precision. -static constexpr double ERR_D = 0x1.8p-63; +static constexpr double EXP_ERR_D = 0x1.8p-63; #ifndef LIBC_MATH_HAS_SKIP_ACCURATE_PASS // Errors when using double-double precision. -static constexpr double ERR_DD = 0x1.0p-99; +static constexpr double EXP_ERR_DD = 0x1.0p-99; #endif // LIBC_MATH_HAS_SKIP_ACCURATE_PASS // -2^-12 * log(2) @@ -387,7 +387,8 @@ static double exp(double x) { #ifdef LIBC_MATH_HAS_SKIP_ACCURATE_PASS if (LIBC_UNLIKELY(denorm)) { - return ziv_test_denorm</*SKIP_ZIV_TEST=*/true>(hi, exp_mid.hi, lo, ERR_D) + return ziv_test_denorm</*SKIP_ZIV_TEST=*/true>(hi, exp_mid.hi, lo, + EXP_ERR_D) .value(); } else { // to multiply by 2^hi, a fast way is to simply add hi to the exponent @@ -399,12 +400,12 @@ static double exp(double x) { } #else if (LIBC_UNLIKELY(denorm)) { - if (auto r = ziv_test_denorm(hi, exp_mid.hi, lo, ERR_D); + if (auto r = ziv_test_denorm(hi, exp_mid.hi, lo, EXP_ERR_D); LIBC_LIKELY(r.has_value())) return r.value(); } else { - double upper = exp_mid.hi + (lo + ERR_D); - double lower = exp_mid.hi + (lo - ERR_D); + double upper = exp_mid.hi + (lo + EXP_ERR_D); + double lower = exp_mid.hi + (lo - EXP_ERR_D); if (LIBC_LIKELY(upper == lower)) { // to multiply by 2^hi, a fast way is to simply add hi to the exponent @@ -419,12 +420,12 @@ static double exp(double x) { DoubleDouble r_dd = exp_double_double(x, kd, exp_mid); if (LIBC_UNLIKELY(denorm)) { - if (auto r = ziv_test_denorm(hi, r_dd.hi, r_dd.lo, ERR_DD); + if (auto r = ziv_test_denorm(hi, r_dd.hi, r_dd.lo, EXP_ERR_DD); LIBC_LIKELY(r.has_value())) return r.value(); } else { - double upper_dd = r_dd.hi + (r_dd.lo + ERR_DD); - double lower_dd = r_dd.hi + (r_dd.lo - ERR_DD); + double upper_dd = r_dd.hi + (r_dd.lo + EXP_ERR_DD); + double lower_dd = r_dd.hi + (r_dd.lo - EXP_ERR_DD); if (LIBC_LIKELY(upper_dd == lower_dd)) { int64_t exp_hi = static_cast<int64_t>(hi) << FPBits::FRACTION_LEN; diff --git a/libc/src/__support/math/exp10.h b/libc/src/__support/math/exp10.h index 8874852..fa60e40c 100644 --- a/libc/src/__support/math/exp10.h +++ b/libc/src/__support/math/exp10.h @@ -54,11 +54,11 @@ static constexpr double MLOG10_2_EXP2_M12_LO = 0x1.da994fd20dba2p-87; // Error bounds: // Errors when using double precision. -constexpr double ERR_D = 0x1.8p-63; +constexpr double EXP10_ERR_D = 0x1.8p-63; #ifndef LIBC_MATH_HAS_SKIP_ACCURATE_PASS // Errors when using double-double precision. -static constexpr double ERR_DD = 0x1.8p-99; +static constexpr double EXP10_ERR_DD = 0x1.8p-99; #endif // LIBC_MATH_HAS_SKIP_ACCURATE_PASS // Polynomial approximations with double precision. Generated by Sollya with: @@ -207,17 +207,18 @@ static double exp10_denorm(double x) { double lo = fputil::multiply_add(p, mid_lo, exp_mid.lo); #ifdef LIBC_MATH_HAS_SKIP_ACCURATE_PASS - return ziv_test_denorm</*SKIP_ZIV_TEST=*/true>(hi, exp_mid.hi, lo, ERR_D) + return ziv_test_denorm</*SKIP_ZIV_TEST=*/true>(hi, exp_mid.hi, lo, + EXP10_ERR_D) .value(); #else - if (auto r = ziv_test_denorm(hi, exp_mid.hi, lo, ERR_D); + if (auto r = ziv_test_denorm(hi, exp_mid.hi, lo, EXP10_ERR_D); LIBC_LIKELY(r.has_value())) return r.value(); // Use double-double DoubleDouble r_dd = exp10_double_double(x, kd, exp_mid); - if (auto r = ziv_test_denorm(hi, r_dd.hi, r_dd.lo, ERR_DD); + if (auto r = ziv_test_denorm(hi, r_dd.hi, r_dd.lo, EXP10_ERR_DD); LIBC_LIKELY(r.has_value())) return r.value(); @@ -409,8 +410,8 @@ static constexpr double exp10(double x) { cpp::bit_cast<double>(exp_hi + cpp::bit_cast<int64_t>(exp_mid.hi + lo)); return r; #else - double upper = exp_mid.hi + (lo + ERR_D); - double lower = exp_mid.hi + (lo - ERR_D); + double upper = exp_mid.hi + (lo + EXP10_ERR_D); + double lower = exp_mid.hi + (lo - EXP10_ERR_D); if (LIBC_LIKELY(upper == lower)) { // To multiply by 2^hi, a fast way is to simply add hi to the exponent @@ -476,8 +477,8 @@ static constexpr double exp10(double x) { // Use double-double DoubleDouble r_dd = exp10_double_double(x, kd, exp_mid); - double upper_dd = r_dd.hi + (r_dd.lo + ERR_DD); - double lower_dd = r_dd.hi + (r_dd.lo - ERR_DD); + double upper_dd = r_dd.hi + (r_dd.lo + EXP10_ERR_DD); + double lower_dd = r_dd.hi + (r_dd.lo - EXP10_ERR_DD); if (LIBC_LIKELY(upper_dd == lower_dd)) { // To multiply by 2^hi, a fast way is to simply add hi to the exponent diff --git a/libc/src/__support/math/exp10f_utils.h b/libc/src/__support/math/exp10f_utils.h index 0493e1b..c30def9 100644 --- a/libc/src/__support/math/exp10f_utils.h +++ b/libc/src/__support/math/exp10f_utils.h @@ -6,8 +6,8 @@ // //===----------------------------------------------------------------------===// -#ifndef LLVM_LIBC_SRC___SUPPORT_MATH_EXP_FLOAT_CONSTANTS_H -#define LLVM_LIBC_SRC___SUPPORT_MATH_EXP_FLOAT_CONSTANTS_H +#ifndef LLVM_LIBC_SRC___SUPPORT_MATH_EXP10F_UTILS_H +#define LLVM_LIBC_SRC___SUPPORT_MATH_EXP10F_UTILS_H #include "src/__support/FPUtil/FPBits.h" #include "src/__support/FPUtil/PolyEval.h" @@ -154,4 +154,4 @@ LIBC_INLINE static constexpr exp_b_reduc_t exp_b_range_reduc(float x) { } // namespace LIBC_NAMESPACE_DECL -#endif // LLVM_LIBC_SRC___SUPPORT_MATH_EXP_FLOAT_CONSTANTS_H +#endif // LLVM_LIBC_SRC___SUPPORT_MATH_EXP10F_UTILS_H |