aboutsummaryrefslogtreecommitdiff
path: root/libc
diff options
context:
space:
mode:
authorlntue <lntue@google.com>2025-07-18 17:54:47 -0400
committerGitHub <noreply@github.com>2025-07-18 17:54:47 -0400
commit20c5daa032ca5e4c655d1248ef9cbf8a33183aaf (patch)
treeb25acc78a227557874e38c3779751ca35b46ccc6 /libc
parent2e67dcfdcd023df2f06e0823eeea23990ce41534 (diff)
downloadllvm-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.h19
-rw-r--r--libc/src/__support/math/exp10.h19
-rw-r--r--libc/src/__support/math/exp10f_utils.h6
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