[libc-commits] [libc] [llvm] [libc][math] Refactor log to header-only shared math (PR #175395)

Muhammad Bassiouni via libc-commits libc-commits at lists.llvm.org
Sat Jan 10 15:26:04 PST 2026


================
@@ -0,0 +1,845 @@
+#ifndef LLVM_LIBC_SRC___SUPPORT_MATH_LOG_H
+#define LLVM_LIBC_SRC___SUPPORT_MATH_LOG_H
+
+#include "log_range_reduction.h"
+#include "src/__support/FPUtil/FEnvImpl.h"
+#include "src/__support/FPUtil/FPBits.h"
+#include "src/__support/FPUtil/PolyEval.h"
+#include "src/__support/FPUtil/double_double.h"
+#include "src/__support/FPUtil/dyadic_float.h"
+#include "src/__support/FPUtil/multiply_add.h"
+#include "src/__support/common.h"
+#include "src/__support/integer_literals.h"
+#include "src/__support/macros/config.h"
+#include "src/__support/macros/optimization.h" // LIBC_UNLIKELY
+#include "src/__support/math/common_constants.h"
+
+namespace LIBC_NAMESPACE_DECL {
+
+// 128-bit precision dyadic floating point numbers.
+using Float128 = typename fputil::DyadicFloat<128>;
+
+using LIBC_NAMESPACE::operator""_u128;
+
+namespace math {
+
+using namespace common_constants_internal;
+
+#ifndef LIBC_MATH_HAS_SKIP_ACCURATE_PASS
+// A simple upper bound for the error of e_x * log(2) - log(r).
+constexpr double HI_ERR = 0x1.0p-85;
+
+// Extra errors from P is from using x^2 to reduce evaluation latency.
+constexpr double P_ERR = 0x1.0p-50;
----------------
bassiounix wrote:

```suggestion
LIBC_INLINE_VAR constexpr double P_ERR = 0x1.0p-50;
```

https://github.com/llvm/llvm-project/pull/175395


More information about the libc-commits mailing list