From bb014f50c4a0c8d8db1ba5af55c104e430b5533d Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Mon, 17 Jun 2024 13:47:09 +0000 Subject: [PATCH] Implement C23 logp1 C23 adds various function families originally defined in TS 18661-4. Add the logp1 functions (aliases for log1p functions - the name is intended to be more consistent with the new log2p1 and log10p1, where clearly it would have been very confusing to name those functions log21p and log101p). As aliases rather than new functions, the content of this patch is somewhat different from those actually adding new functions. Tests are shared with log1p, so this patch *does* mechanically update all affected libm-test-ulps files to expect the same errors for both functions. The vector versions of log1p on aarch64 and x86_64 are *not* updated to have logp1 aliases (and thus there are no corresponding header, tests, abilist or ulps changes for vector functions either). It would be reasonable for such vector aliases and corresponding changes to other files to be made separately. For now, the log1p tests instead avoid testing logp1 in the vector case (a Makefile change is needed to avoid problems with grep, used in generating the .c files for vector function tests, matching more than one ALL_RM_TEST line in a file testing multiple functions with the same inputs, when it assumes that the .inc file only has a single such line). Tested for x86_64 and x86, and with build-many-glibcs.py. --- NEWS | 2 +- manual/math.texi | 12 ++++++++++ math/Makefile | 9 +++---- math/Versions | 2 ++ math/bits/mathcalls.h | 3 +++ math/gen-tgmath-tests.py | 1 + math/libm-test-log1p.inc | 12 ++++++++++ math/test-tgmath.c | 12 +++++++++- math/tgmath.h | 3 +++ math/w_log1p_template.c | 2 ++ sysdeps/aarch64/libm-test-ulps | 20 ++++++++++++++++ sysdeps/alpha/fpu/libm-test-ulps | 20 ++++++++++++++++ sysdeps/arc/fpu/libm-test-ulps | 16 +++++++++++++ sysdeps/arc/nofpu/libm-test-ulps | 4 ++++ sysdeps/arm/libm-test-ulps | 16 +++++++++++++ sysdeps/csky/fpu/libm-test-ulps | 16 +++++++++++++ sysdeps/csky/nofpu/libm-test-ulps | 16 +++++++++++++ sysdeps/hppa/fpu/libm-test-ulps | 16 +++++++++++++ sysdeps/i386/fpu/libm-test-ulps | 23 ++++++++++++++++++ .../i386/i686/fpu/multiarch/libm-test-ulps | 23 ++++++++++++++++++ sysdeps/ieee754/float128/Makefile | 2 +- sysdeps/ieee754/float128/float128_private.h | 1 + sysdeps/ieee754/ldbl-128/Makefile | 2 +- sysdeps/ieee754/ldbl-128ibm-compat/Versions | 1 + sysdeps/ieee754/ldbl-96/Makefile | 2 +- sysdeps/ieee754/ldbl-opt/Makefile | 2 +- sysdeps/ieee754/ldbl-opt/nldbl-log1p.c | 1 + sysdeps/loongarch/lp64/libm-test-ulps | 20 ++++++++++++++++ sysdeps/m68k/coldfire/fpu/libm-test-ulps | 3 +++ sysdeps/mach/hurd/i386/libm.abilist | 8 +++++++ sysdeps/mach/hurd/x86_64/libm.abilist | 8 +++++++ sysdeps/microblaze/libm-test-ulps | 4 ++++ sysdeps/mips/mips32/libm-test-ulps | 16 +++++++++++++ sysdeps/mips/mips64/libm-test-ulps | 20 ++++++++++++++++ sysdeps/nios2/libm-test-ulps | 4 ++++ sysdeps/or1k/fpu/libm-test-ulps | 16 +++++++++++++ sysdeps/or1k/nofpu/libm-test-ulps | 16 +++++++++++++ sysdeps/powerpc/fpu/libm-test-ulps | 24 +++++++++++++++++++ sysdeps/powerpc/nofpu/libm-test-ulps | 20 ++++++++++++++++ .../powerpc64/le/fpu/multiarch/Makefile | 2 +- .../fpu/multiarch/float128-ifunc-redirects.h | 4 ++++ .../le/fpu/multiarch/float128-ifunc.h | 4 +++- .../fpu/multiarch/math-type-macros-float128.h | 2 ++ sysdeps/riscv/nofpu/libm-test-ulps | 20 ++++++++++++++++ sysdeps/riscv/rvd/libm-test-ulps | 20 ++++++++++++++++ sysdeps/s390/fpu/libm-test-ulps | 20 ++++++++++++++++ sysdeps/sh/libm-test-ulps | 8 +++++++ sysdeps/sparc/fpu/libm-test-ulps | 20 ++++++++++++++++ sysdeps/unix/sysv/linux/aarch64/libm.abilist | 8 +++++++ sysdeps/unix/sysv/linux/alpha/libm.abilist | 8 +++++++ sysdeps/unix/sysv/linux/arc/libm.abilist | 6 +++++ sysdeps/unix/sysv/linux/arm/be/libm.abilist | 6 +++++ sysdeps/unix/sysv/linux/arm/le/libm.abilist | 6 +++++ sysdeps/unix/sysv/linux/csky/libm.abilist | 6 +++++ sysdeps/unix/sysv/linux/hppa/libm.abilist | 6 +++++ sysdeps/unix/sysv/linux/i386/libm.abilist | 8 +++++++ .../sysv/linux/loongarch/lp64/libm.abilist | 8 +++++++ .../sysv/linux/m68k/coldfire/libm.abilist | 6 +++++ .../unix/sysv/linux/m68k/m680x0/libm.abilist | 6 +++++ .../sysv/linux/microblaze/be/libm.abilist | 6 +++++ .../sysv/linux/microblaze/le/libm.abilist | 6 +++++ .../unix/sysv/linux/mips/mips32/libm.abilist | 6 +++++ .../unix/sysv/linux/mips/mips64/libm.abilist | 8 +++++++ sysdeps/unix/sysv/linux/nios2/libm.abilist | 6 +++++ sysdeps/unix/sysv/linux/or1k/libm.abilist | 6 +++++ .../linux/powerpc/powerpc32/fpu/libm.abilist | 6 +++++ .../powerpc/powerpc32/nofpu/libm.abilist | 6 +++++ .../linux/powerpc/powerpc64/be/libm.abilist | 6 +++++ .../linux/powerpc/powerpc64/le/libm.abilist | 9 +++++++ .../unix/sysv/linux/riscv/rv32/libm.abilist | 8 +++++++ .../unix/sysv/linux/riscv/rv64/libm.abilist | 8 +++++++ .../unix/sysv/linux/s390/s390-32/libm.abilist | 8 +++++++ .../unix/sysv/linux/s390/s390-64/libm.abilist | 8 +++++++ sysdeps/unix/sysv/linux/sh/be/libm.abilist | 6 +++++ sysdeps/unix/sysv/linux/sh/le/libm.abilist | 6 +++++ .../sysv/linux/sparc/sparc32/libm.abilist | 8 +++++++ .../sysv/linux/sparc/sparc64/libm.abilist | 8 +++++++ .../unix/sysv/linux/x86_64/64/libm.abilist | 8 +++++++ .../unix/sysv/linux/x86_64/x32/libm.abilist | 8 +++++++ sysdeps/x86_64/fpu/libm-test-ulps | 24 +++++++++++++++++++ 80 files changed, 725 insertions(+), 12 deletions(-) diff --git a/NEWS b/NEWS index 20e263f581..c5fbdc6138 100644 --- a/NEWS +++ b/NEWS @@ -26,7 +26,7 @@ Major new features: functions for float, double, long double, _FloatN and _FloatNx, and a type-generic macro in . - - Logarithmic functions: log2p1. + - Logarithmic functions: log2p1, logp1. * A new tunable, glibc.rtld.enable_secure, used to run a program as if it were a setuid process. This is currently a testing tool to allow diff --git a/manual/math.texi b/manual/math.texi index c99501ccb1..56f2295cfd 100644 --- a/manual/math.texi +++ b/manual/math.texi @@ -745,13 +745,25 @@ to subtraction of two numbers that are nearly equal. @deftypefunx {long double} log1pl (long double @var{x}) @deftypefunx _FloatN log1pfN (_Float@var{N} @var{x}) @deftypefunx _FloatNx log1pfNx (_Float@var{N}x @var{x}) +@deftypefunx double logp1 (double @var{x}) +@deftypefunx float logp1f (float @var{x}) +@deftypefunx {long double} logp1l (long double @var{x}) +@deftypefunx _FloatN logp1fN (_Float@var{N} @var{x}) +@deftypefunx _FloatNx logp1fNx (_Float@var{N}x @var{x}) @standards{ISO, math.h} @standardsx{log1pfN, TS 18661-3:2015, math.h} @standardsx{log1pfNx, TS 18661-3:2015, math.h} +@standardsx{logp1, TS 18661-4:2015, math.h} +@standardsx{logp1f, TS 18661-4:2015, math.h} +@standardsx{logp1l, TS 18661-4:2015, math.h} +@standardsx{logp1fN, TS 18661-4:2015, math.h} +@standardsx{logp1fNx, TS 18661-4:2015, math.h} @safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} These functions return a value equivalent to @w{@code{log (1 + @var{x})}}. They are computed in a way that is accurate even if @var{x} is near zero. + +The @code{logp1} names for these functions are from TS 18661-4:2015. @end deftypefun @deftypefun double log2p1 (double @var{x}) diff --git a/math/Makefile b/math/Makefile index 58e5c070cf..c55976cba8 100644 --- a/math/Makefile +++ b/math/Makefile @@ -966,6 +966,7 @@ tgmath3-macros = \ log2 \ log2p1 \ logb \ + logp1 \ lrint \ lround \ nearbyint \ @@ -1145,7 +1146,7 @@ $(foreach t,$(libm-tests-vector),$(objpfx)$(t).c): $(objpfx)test-%.c: type_func=$*; \ type=$${type_func%-*}; \ func=$${type_func##*-}; \ - func_args=$$(grep ALL_RM_TEST libm-test-$$func.inc \ + func_args=$$(grep "ALL_RM_TEST ($$func," libm-test-$$func.inc \ | sed 's/.*RUN_TEST_LOOP_//;s/_.*//'); \ ( \ echo "#include "; \ @@ -1375,7 +1376,7 @@ CFLAGS-s_llrint.c += -fno-builtin-llrintl CFLAGS-s_llround.c += -fno-builtin-llroundl CFLAGS-e_log.c += -fno-builtin-logl CFLAGS-w_log10.c += -fno-builtin-log10l -CFLAGS-w_log1p.c += -fno-builtin-log1pl +CFLAGS-w_log1p.c += -fno-builtin-log1pl -fno-builtin-logp1l CFLAGS-e_log2.c += -fno-builtin-log2l CFLAGS-s_log2p1.c += -fno-builtin-log2p1l CFLAGS-s_logb.c += -fno-builtin-logbl @@ -1501,7 +1502,7 @@ CFLAGS-s_llrint.c += -fno-builtin-llrintf32x -fno-builtin-llrintf64 CFLAGS-s_llround.c += -fno-builtin-llroundf32x -fno-builtin-llroundf64 CFLAGS-e_log.c += -fno-builtin-logf32x -fno-builtin-logf64 CFLAGS-w_log10.c += -fno-builtin-log10f32x -fno-builtin-log10f64 -CFLAGS-w_log1p.c += -fno-builtin-log1pf32x -fno-builtin-log1pf64 +CFLAGS-w_log1p.c += -fno-builtin-log1pf32x -fno-builtin-log1pf64 -fno-builtin-logp1f32x -fno-builtin-logp1f64 CFLAGS-e_log2.c += -fno-builtin-log2f32x -fno-builtin-log2f64 CFLAGS-s_log2p1.c += -fno-builtin-log2p1f32x -fno-builtin-log2p1f64 CFLAGS-s_logb.c += -fno-builtin-logbf32x -fno-builtin-logbf64 @@ -1616,7 +1617,7 @@ CFLAGS-s_llrintf.c += -fno-builtin-llrintf32 CFLAGS-s_llroundf.c += -fno-builtin-llroundf32 CFLAGS-e_logf.c += -fno-builtin-logf32 CFLAGS-w_log10f.c += -fno-builtin-log10f32 -CFLAGS-w_log1pf.c += -fno-builtin-log1pf32 +CFLAGS-w_log1pf.c += -fno-builtin-log1pf32 -fno-builtin-logp1f32 CFLAGS-e_log2f.c += -fno-builtin-log2f32 CFLAGS-s_log2p1f.c += -fno-builtin-log2p1f32 CFLAGS-s_logbf.c += -fno-builtin-logbf32 diff --git a/math/Versions b/math/Versions index 46b9b87010..f6ddd2f4f7 100644 --- a/math/Versions +++ b/math/Versions @@ -642,7 +642,9 @@ libm { GLIBC_2.40 { # Functions not involving _Float64x or _Float128, for all configurations. log2p1; log2p1f; log2p1l; log2p1f32; log2p1f64; log2p1f32x; + logp1; logp1f; logp1l; logp1f32; logp1f64; logp1f32x; # Functions involving _Float64x or _Float128, for some configurations. log2p1f64x; log2p1f128; + logp1f64x; logp1f128; } } diff --git a/math/bits/mathcalls.h b/math/bits/mathcalls.h index fbfc27a452..40f9cf35f7 100644 --- a/math/bits/mathcalls.h +++ b/math/bits/mathcalls.h @@ -115,6 +115,9 @@ __MATHCALL_VEC (exp10,, (_Mdouble_ __x)); /* Return log2(1 + X). */ __MATHCALL (log2p1,, (_Mdouble_ __x)); + +/* Return log(1 + X). */ +__MATHCALL (logp1,, (_Mdouble_ __x)); #endif #if defined __USE_XOPEN_EXTENDED || defined __USE_ISOC99 diff --git a/math/gen-tgmath-tests.py b/math/gen-tgmath-tests.py index 1131481fad..307b657939 100755 --- a/math/gen-tgmath-tests.py +++ b/math/gen-tgmath-tests.py @@ -744,6 +744,7 @@ class Tests(object): # TS 18661-4 functions. self.add_tests('exp10', 'r', ['r']) self.add_tests('log2p1', 'r', ['r']) + self.add_tests('logp1', 'r', ['r']) # C23 functions. self.add_tests('fmaximum', 'r', ['r', 'r']) self.add_tests('fmaximum_mag', 'r', ['r', 'r']) diff --git a/math/libm-test-log1p.inc b/math/libm-test-log1p.inc index 67ad03f67c..bcac6ffa4c 100644 --- a/math/libm-test-log1p.inc +++ b/math/libm-test-log1p.inc @@ -40,10 +40,22 @@ log1p_test (void) ALL_RM_TEST (log1p, 0, log1p_test_data, RUN_TEST_LOOP_f_f, END); } +#if !TEST_MATHVEC +static void +logp1_test (void) +{ + /* logp1 uses the same test data as log1p. */ + ALL_RM_TEST (logp1, 0, log1p_test_data, RUN_TEST_LOOP_f_f, END); +} +#endif + static void do_test (void) { log1p_test (); +#if !TEST_MATHVEC + logp1_test (); +#endif } /* diff --git a/math/test-tgmath.c b/math/test-tgmath.c index 141e96bd6e..290e9cb19f 100644 --- a/math/test-tgmath.c +++ b/math/test-tgmath.c @@ -48,7 +48,7 @@ volatile int count_cdouble; volatile int count_cfloat; volatile int count_cldouble; -#define NCALLS 160 +#define NCALLS 162 #define NCALLS_INT 4 #define NCCALLS 47 @@ -256,6 +256,7 @@ F(compile_test) (void) a = exp10 (exp10 (x)); b = log2 (log2 (a)); a = log2p1 (log2p1 (x)); + a = logp1 (logp1 (x)); a = pow (pow (x, a), pow (c, b)); b = sqrt (sqrt (a)); a = hypot (hypot (x, b), hypot (c, a)); @@ -370,6 +371,7 @@ F(compile_test) (void) a = exp10 (y); a = log2 (y); a = log2p1 (y); + a = logp1 (y); a = pow (y, y); a = sqrt (y); a = hypot (y, y); @@ -651,6 +653,14 @@ TYPE return x; } +TYPE +(F(logp1)) (TYPE x) +{ + ++count; + P (); + return x; +} + TYPE (F(pow)) (TYPE x, TYPE y) { diff --git a/math/tgmath.h b/math/tgmath.h index d9ee3e3a17..78fd2f5ae8 100644 --- a/math/tgmath.h +++ b/math/tgmath.h @@ -877,6 +877,9 @@ /* Return log2(1 + X). */ #define log2p1(Val) __TGMATH_UNARY_REAL_ONLY (Val, log2p1) + +/* Return log(1 + X). */ +#define logp1(Val) __TGMATH_UNARY_REAL_ONLY (Val, logp1) #endif diff --git a/math/w_log1p_template.c b/math/w_log1p_template.c index bfdedb0c76..100f2cdcf8 100644 --- a/math/w_log1p_template.c +++ b/math/w_log1p_template.c @@ -33,3 +33,5 @@ M_DECL_FUNC (__w_log1p) (FLOAT x) return M_SUF (__log1p) (x); } declare_mgen_alias (__w_log1p, log1p) +strong_alias (M_SUF (__w_log1p), M_SUF (__w_logp1)) +declare_mgen_alias (__w_logp1, logp1) diff --git a/sysdeps/aarch64/libm-test-ulps b/sysdeps/aarch64/libm-test-ulps index 656d4b0169..bcae2764ef 100644 --- a/sysdeps/aarch64/libm-test-ulps +++ b/sysdeps/aarch64/libm-test-ulps @@ -1412,6 +1412,26 @@ double: 1 float: 2 ldouble: 1 +Function: "logp1": +double: 1 +float: 1 +ldouble: 3 + +Function: "logp1_downward": +double: 1 +float: 2 +ldouble: 3 + +Function: "logp1_towardzero": +double: 2 +float: 2 +ldouble: 3 + +Function: "logp1_upward": +double: 2 +float: 2 +ldouble: 2 + Function: "pow": double: 1 float: 1 diff --git a/sysdeps/alpha/fpu/libm-test-ulps b/sysdeps/alpha/fpu/libm-test-ulps index f2929d6ffc..392d23f80a 100644 --- a/sysdeps/alpha/fpu/libm-test-ulps +++ b/sysdeps/alpha/fpu/libm-test-ulps @@ -1221,6 +1221,26 @@ double: 1 float: 2 ldouble: 1 +Function: "logp1": +double: 1 +float: 1 +ldouble: 3 + +Function: "logp1_downward": +double: 2 +float: 2 +ldouble: 3 + +Function: "logp1_towardzero": +double: 2 +float: 2 +ldouble: 3 + +Function: "logp1_upward": +double: 2 +float: 2 +ldouble: 2 + Function: "pow": double: 1 float: 1 diff --git a/sysdeps/arc/fpu/libm-test-ulps b/sysdeps/arc/fpu/libm-test-ulps index 56ff9149cb..41c8ef16d7 100644 --- a/sysdeps/arc/fpu/libm-test-ulps +++ b/sysdeps/arc/fpu/libm-test-ulps @@ -979,6 +979,22 @@ Function: "log_upward": double: 1 float: 1 +Function: "logp1": +double: 1 +float: 1 + +Function: "logp1_downward": +double: 1 +float: 2 + +Function: "logp1_towardzero": +double: 2 +float: 2 + +Function: "logp1_upward": +double: 2 +float: 2 + Function: "pow": double: 1 float: 1 diff --git a/sysdeps/arc/nofpu/libm-test-ulps b/sysdeps/arc/nofpu/libm-test-ulps index 6ac2830b25..d3f45957d4 100644 --- a/sysdeps/arc/nofpu/libm-test-ulps +++ b/sysdeps/arc/nofpu/libm-test-ulps @@ -234,6 +234,10 @@ Function: "log2": double: 2 float: 1 +Function: "logp1": +double: 1 +float: 1 + Function: "pow": double: 1 diff --git a/sysdeps/arm/libm-test-ulps b/sysdeps/arm/libm-test-ulps index fc7ba1439a..c96ec03e31 100644 --- a/sysdeps/arm/libm-test-ulps +++ b/sysdeps/arm/libm-test-ulps @@ -991,6 +991,22 @@ Function: "log_upward": double: 1 float: 2 +Function: "logp1": +double: 1 +float: 1 + +Function: "logp1_downward": +double: 2 +float: 2 + +Function: "logp1_towardzero": +double: 2 +float: 2 + +Function: "logp1_upward": +double: 2 +float: 2 + Function: "pow": double: 1 float: 1 diff --git a/sysdeps/csky/fpu/libm-test-ulps b/sysdeps/csky/fpu/libm-test-ulps index 6e1356e532..fc634f89ca 100644 --- a/sysdeps/csky/fpu/libm-test-ulps +++ b/sysdeps/csky/fpu/libm-test-ulps @@ -950,6 +950,22 @@ double: 2 Function: "log2_upward": double: 3 +Function: "logp1": +double: 1 +float: 1 + +Function: "logp1_downward": +double: 2 +float: 2 + +Function: "logp1_towardzero": +double: 2 +float: 2 + +Function: "logp1_upward": +double: 2 +float: 2 + Function: "pow": double: 1 diff --git a/sysdeps/csky/nofpu/libm-test-ulps b/sysdeps/csky/nofpu/libm-test-ulps index 8a2de74d79..a1e28c8ee0 100644 --- a/sysdeps/csky/nofpu/libm-test-ulps +++ b/sysdeps/csky/nofpu/libm-test-ulps @@ -964,6 +964,22 @@ Function: "log_upward": double: 1 float: 2 +Function: "logp1": +double: 1 +float: 1 + +Function: "logp1_downward": +double: 2 +float: 2 + +Function: "logp1_towardzero": +double: 2 +float: 2 + +Function: "logp1_upward": +double: 2 +float: 2 + Function: "pow": double: 1 float: 1 diff --git a/sysdeps/hppa/fpu/libm-test-ulps b/sysdeps/hppa/fpu/libm-test-ulps index 3d60fc25a1..8b4dfb6850 100644 --- a/sysdeps/hppa/fpu/libm-test-ulps +++ b/sysdeps/hppa/fpu/libm-test-ulps @@ -1000,6 +1000,22 @@ Function: "log_upward": double: 1 float: 2 +Function: "logp1": +double: 1 +float: 1 + +Function: "logp1_downward": +double: 2 +float: 2 + +Function: "logp1_towardzero": +double: 2 +float: 2 + +Function: "logp1_upward": +double: 2 +float: 2 + Function: "pow": double: 1 float: 1 diff --git a/sysdeps/i386/fpu/libm-test-ulps b/sysdeps/i386/fpu/libm-test-ulps index f2139fc172..ef851562d1 100644 --- a/sysdeps/i386/fpu/libm-test-ulps +++ b/sysdeps/i386/fpu/libm-test-ulps @@ -1436,6 +1436,29 @@ double: 1 float128: 1 ldouble: 1 +Function: "logp1": +double: 1 +float128: 3 +ldouble: 2 + +Function: "logp1_downward": +double: 1 +float: 1 +float128: 3 +ldouble: 4 + +Function: "logp1_towardzero": +double: 1 +float: 1 +float128: 3 +ldouble: 4 + +Function: "logp1_upward": +double: 1 +float: 1 +float128: 2 +ldouble: 3 + Function: "pow": double: 1 float128: 2 diff --git a/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps b/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps index b892c43e59..e2b2492e2f 100644 --- a/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps +++ b/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps @@ -1463,6 +1463,29 @@ double: 1 float128: 1 ldouble: 1 +Function: "logp1": +double: 1 +float128: 3 +ldouble: 2 + +Function: "logp1_downward": +double: 1 +float: 1 +float128: 3 +ldouble: 4 + +Function: "logp1_towardzero": +double: 1 +float: 1 +float128: 3 +ldouble: 4 + +Function: "logp1_upward": +double: 1 +float: 1 +float128: 2 +ldouble: 3 + Function: "pow": double: 1 float128: 2 diff --git a/sysdeps/ieee754/float128/Makefile b/sysdeps/ieee754/float128/Makefile index f869e80f26..f0f6aae6ae 100644 --- a/sysdeps/ieee754/float128/Makefile +++ b/sysdeps/ieee754/float128/Makefile @@ -100,7 +100,7 @@ CFLAGS-s_llrintf128.c += -fno-builtin-llrintf64x CFLAGS-s_llroundf128.c += -fno-builtin-llroundf64x CFLAGS-e_logf128.c += -fno-builtin-logf64x CFLAGS-w_log10f128.c += -fno-builtin-log10f64x -CFLAGS-w_log1pf128.c += -fno-builtin-log1pf64x +CFLAGS-w_log1pf128.c += -fno-builtin-log1pf64x -fno-builtin-logp1f64x CFLAGS-e_log2f128.c += -fno-builtin-log2f64x CFLAGS-s_logbf128.c += -fno-builtin-logbf64x CFLAGS-s_lrintf128.c += -fno-builtin-lrintf64x diff --git a/sysdeps/ieee754/float128/float128_private.h b/sysdeps/ieee754/float128/float128_private.h index 38a8bdd0fe..19aa6c46f2 100644 --- a/sysdeps/ieee754/float128/float128_private.h +++ b/sysdeps/ieee754/float128/float128_private.h @@ -358,6 +358,7 @@ #define llroundl llroundf128 #define log1pl log1pf128 #define logbl logbf128 +#define logp1l logp1f128 #define logl logf128 #define lrintl lrintf128 #define lroundl lroundf128 diff --git a/sysdeps/ieee754/ldbl-128/Makefile b/sysdeps/ieee754/ldbl-128/Makefile index 9cbfc7ff6e..1901238c5b 100644 --- a/sysdeps/ieee754/ldbl-128/Makefile +++ b/sysdeps/ieee754/ldbl-128/Makefile @@ -89,7 +89,7 @@ CFLAGS-s_llrintl.c += -fno-builtin-llrintf64x -fno-builtin-llrintf128 CFLAGS-s_llroundl.c += -fno-builtin-llroundf64x -fno-builtin-llroundf128 CFLAGS-e_logl.c += -fno-builtin-logf64x -fno-builtin-logf128 CFLAGS-w_log10l.c += -fno-builtin-log10f64x -fno-builtin-log10f128 -CFLAGS-w_log1pl.c += -fno-builtin-log1pf64x -fno-builtin-log1pf128 +CFLAGS-w_log1pl.c += -fno-builtin-log1pf64x -fno-builtin-log1pf128 -fno-builtin-logp1f64x -fno-builtin-logp1f128 CFLAGS-e_log2l.c += -fno-builtin-log2f64x -fno-builtin-log2f128 CFLAGS-s_logbl.c += -fno-builtin-logbf64x -fno-builtin-logbf128 CFLAGS-s_lrintl.c += -fno-builtin-lrintf64x -fno-builtin-lrintf128 diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/Versions b/sysdeps/ieee754/ldbl-128ibm-compat/Versions index c9a74366fd..018e0a8871 100644 --- a/sysdeps/ieee754/ldbl-128ibm-compat/Versions +++ b/sysdeps/ieee754/ldbl-128ibm-compat/Versions @@ -139,6 +139,7 @@ libm { } GLIBC_2.40 { __log2p1ieee128; + __logp1ieee128; } } libc { diff --git a/sysdeps/ieee754/ldbl-96/Makefile b/sysdeps/ieee754/ldbl-96/Makefile index 170e77b2f9..a3ec2c54ca 100644 --- a/sysdeps/ieee754/ldbl-96/Makefile +++ b/sysdeps/ieee754/ldbl-96/Makefile @@ -110,7 +110,7 @@ CFLAGS-s_llrintl.c += -fno-builtin-llrintf64x CFLAGS-s_llroundl.c += -fno-builtin-llroundf64x CFLAGS-e_logl.c += -fno-builtin-logf64x CFLAGS-w_log10l.c += -fno-builtin-log10f64x -CFLAGS-w_log1pl.c += -fno-builtin-log1pf64x +CFLAGS-w_log1pl.c += -fno-builtin-log1pf64x -fno-builtin-logp1f64x CFLAGS-e_log2l.c += -fno-builtin-log2f64x CFLAGS-s_logbl.c += -fno-builtin-logbf64x CFLAGS-s_lrintl.c += -fno-builtin-lrintf64x diff --git a/sysdeps/ieee754/ldbl-opt/Makefile b/sysdeps/ieee754/ldbl-opt/Makefile index d1eda5d022..9c204ff9b3 100644 --- a/sysdeps/ieee754/ldbl-opt/Makefile +++ b/sysdeps/ieee754/ldbl-opt/Makefile @@ -341,7 +341,7 @@ CFLAGS-nldbl-llrint.c = -fno-builtin-llrintl CFLAGS-nldbl-llround.c = -fno-builtin-llroundl CFLAGS-nldbl-log.c = -fno-builtin-logl CFLAGS-nldbl-log10.c = -fno-builtin-log10l -CFLAGS-nldbl-log1p.c = -fno-builtin-log1pl +CFLAGS-nldbl-log1p.c = -fno-builtin-log1pl -fno-builtin-logp1l CFLAGS-nldbl-log2.c = -fno-builtin-log2l CFLAGS-nldbl-log2p1.c = -fno-builtin-log2p1l CFLAGS-nldbl-logb.c = -fno-builtin-logbl diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-log1p.c b/sysdeps/ieee754/ldbl-opt/nldbl-log1p.c index 455b25a9f4..b0de985183 100644 --- a/sysdeps/ieee754/ldbl-opt/nldbl-log1p.c +++ b/sysdeps/ieee754/ldbl-opt/nldbl-log1p.c @@ -6,3 +6,4 @@ log1pl (double x) { return log1p (x); } +weak_alias (log1pl, logp1l) diff --git a/sysdeps/loongarch/lp64/libm-test-ulps b/sysdeps/loongarch/lp64/libm-test-ulps index 185c5b4e92..f9db4d3eac 100644 --- a/sysdeps/loongarch/lp64/libm-test-ulps +++ b/sysdeps/loongarch/lp64/libm-test-ulps @@ -1232,6 +1232,26 @@ Function: "log_upward": double: 1 ldouble: 2 +Function: "logp1": +double: 1 +float: 1 +ldouble: 3 + +Function: "logp1_downward": +double: 2 +float: 2 +ldouble: 3 + +Function: "logp1_towardzero": +double: 2 +float: 2 +ldouble: 3 + +Function: "logp1_upward": +double: 2 +float: 2 +ldouble: 2 + Function: "pow": double: 1 ldouble: 2 diff --git a/sysdeps/m68k/coldfire/fpu/libm-test-ulps b/sysdeps/m68k/coldfire/fpu/libm-test-ulps index ad3649f890..1b25a70e3f 100644 --- a/sysdeps/m68k/coldfire/fpu/libm-test-ulps +++ b/sysdeps/m68k/coldfire/fpu/libm-test-ulps @@ -134,6 +134,9 @@ float: 2 Function: "log1p": float: 1 +Function: "logp1": +float: 1 + Function: "sincos": double: 1 float: 1 diff --git a/sysdeps/mach/hurd/i386/libm.abilist b/sysdeps/mach/hurd/i386/libm.abilist index 113daa4b44..88010e5b2d 100644 --- a/sysdeps/mach/hurd/i386/libm.abilist +++ b/sysdeps/mach/hurd/i386/libm.abilist @@ -1189,3 +1189,11 @@ GLIBC_2.40 log2p1f32x F GLIBC_2.40 log2p1f64 F GLIBC_2.40 log2p1f64x F GLIBC_2.40 log2p1l F +GLIBC_2.40 logp1 F +GLIBC_2.40 logp1f F +GLIBC_2.40 logp1f128 F +GLIBC_2.40 logp1f32 F +GLIBC_2.40 logp1f32x F +GLIBC_2.40 logp1f64 F +GLIBC_2.40 logp1f64x F +GLIBC_2.40 logp1l F diff --git a/sysdeps/mach/hurd/x86_64/libm.abilist b/sysdeps/mach/hurd/x86_64/libm.abilist index 0c7ffd4e3f..394e5988cb 100644 --- a/sysdeps/mach/hurd/x86_64/libm.abilist +++ b/sysdeps/mach/hurd/x86_64/libm.abilist @@ -1046,3 +1046,11 @@ GLIBC_2.40 log2p1f32x F GLIBC_2.40 log2p1f64 F GLIBC_2.40 log2p1f64x F GLIBC_2.40 log2p1l F +GLIBC_2.40 logp1 F +GLIBC_2.40 logp1f F +GLIBC_2.40 logp1f128 F +GLIBC_2.40 logp1f32 F +GLIBC_2.40 logp1f32x F +GLIBC_2.40 logp1f64 F +GLIBC_2.40 logp1f64x F +GLIBC_2.40 logp1l F diff --git a/sysdeps/microblaze/libm-test-ulps b/sysdeps/microblaze/libm-test-ulps index faa3184913..d3666eb7d4 100644 --- a/sysdeps/microblaze/libm-test-ulps +++ b/sysdeps/microblaze/libm-test-ulps @@ -231,6 +231,10 @@ Function: "log2": double: 2 float: 1 +Function: "logp1": +double: 1 +float: 1 + Function: "pow": float: 1 diff --git a/sysdeps/mips/mips32/libm-test-ulps b/sysdeps/mips/mips32/libm-test-ulps index 5720e73288..2984d0d42b 100644 --- a/sysdeps/mips/mips32/libm-test-ulps +++ b/sysdeps/mips/mips32/libm-test-ulps @@ -975,6 +975,22 @@ Function: "log_upward": double: 1 float: 2 +Function: "logp1": +double: 1 +float: 1 + +Function: "logp1_downward": +double: 2 +float: 2 + +Function: "logp1_towardzero": +double: 2 +float: 2 + +Function: "logp1_upward": +double: 2 +float: 2 + Function: "pow": double: 1 float: 1 diff --git a/sysdeps/mips/mips64/libm-test-ulps b/sysdeps/mips/mips64/libm-test-ulps index 933aba4735..f2fd0581ba 100644 --- a/sysdeps/mips/mips64/libm-test-ulps +++ b/sysdeps/mips/mips64/libm-test-ulps @@ -1223,6 +1223,26 @@ double: 1 float: 2 ldouble: 1 +Function: "logp1": +double: 1 +float: 1 +ldouble: 3 + +Function: "logp1_downward": +double: 2 +float: 2 +ldouble: 3 + +Function: "logp1_towardzero": +double: 2 +float: 2 +ldouble: 3 + +Function: "logp1_upward": +double: 2 +float: 2 +ldouble: 2 + Function: "pow": double: 1 float: 1 diff --git a/sysdeps/nios2/libm-test-ulps b/sysdeps/nios2/libm-test-ulps index 2cbef489bb..c8d1a722f7 100644 --- a/sysdeps/nios2/libm-test-ulps +++ b/sysdeps/nios2/libm-test-ulps @@ -237,6 +237,10 @@ Function: "log2": double: 2 float: 1 +Function: "logp1": +double: 1 +float: 1 + Function: "pow": double: 1 float: 3 diff --git a/sysdeps/or1k/fpu/libm-test-ulps b/sysdeps/or1k/fpu/libm-test-ulps index 948ec01cdc..59b9f072f5 100644 --- a/sysdeps/or1k/fpu/libm-test-ulps +++ b/sysdeps/or1k/fpu/libm-test-ulps @@ -955,6 +955,22 @@ double: 1 Function: "log2_upward": double: 1 +Function: "logp1": +double: 1 +float: 1 + +Function: "logp1_downward": +double: 2 +float: 2 + +Function: "logp1_towardzero": +double: 2 +float: 2 + +Function: "logp1_upward": +double: 2 +float: 2 + Function: "pow": double: 1 diff --git a/sysdeps/or1k/nofpu/libm-test-ulps b/sysdeps/or1k/nofpu/libm-test-ulps index 785bae70d0..726855faaa 100644 --- a/sysdeps/or1k/nofpu/libm-test-ulps +++ b/sysdeps/or1k/nofpu/libm-test-ulps @@ -953,6 +953,22 @@ double: 1 Function: "log2_upward": double: 1 +Function: "logp1": +double: 1 +float: 1 + +Function: "logp1_downward": +double: 2 +float: 2 + +Function: "logp1_towardzero": +double: 2 +float: 2 + +Function: "logp1_upward": +double: 2 +float: 2 + Function: "pow": double: 1 diff --git a/sysdeps/powerpc/fpu/libm-test-ulps b/sysdeps/powerpc/fpu/libm-test-ulps index 78e9a9ad6e..e41e585979 100644 --- a/sysdeps/powerpc/fpu/libm-test-ulps +++ b/sysdeps/powerpc/fpu/libm-test-ulps @@ -1546,6 +1546,30 @@ float: 2 float128: 1 ldouble: 1 +Function: "logp1": +double: 1 +float: 1 +float128: 3 +ldouble: 2 + +Function: "logp1_downward": +double: 1 +float: 2 +float128: 3 +ldouble: 2 + +Function: "logp1_towardzero": +double: 2 +float: 2 +float128: 3 +ldouble: 3 + +Function: "logp1_upward": +double: 2 +float: 2 +float128: 2 +ldouble: 3 + Function: "mul_downward_ldouble": double: 1 float: 1 diff --git a/sysdeps/powerpc/nofpu/libm-test-ulps b/sysdeps/powerpc/nofpu/libm-test-ulps index 35a1e7b7fd..94d737a400 100644 --- a/sysdeps/powerpc/nofpu/libm-test-ulps +++ b/sysdeps/powerpc/nofpu/libm-test-ulps @@ -1260,6 +1260,26 @@ double: 1 float: 2 ldouble: 1 +Function: "logp1": +double: 1 +float: 1 +ldouble: 2 + +Function: "logp1_downward": +double: 2 +float: 2 +ldouble: 2 + +Function: "logp1_towardzero": +double: 2 +float: 2 +ldouble: 2 + +Function: "logp1_upward": +double: 2 +float: 2 +ldouble: 2 + Function: "mul_downward_ldouble": double: 1 float: 1 diff --git a/sysdeps/powerpc/powerpc64/le/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc64/le/fpu/multiarch/Makefile index b59c4b21ba..43d9e5fa13 100644 --- a/sysdeps/powerpc/powerpc64/le/fpu/multiarch/Makefile +++ b/sysdeps/powerpc/powerpc64/le/fpu/multiarch/Makefile @@ -295,7 +295,7 @@ CFLAGS-s_llrintf128-ifunc.c += -fno-builtin-llrintf64x CFLAGS-s_llroundf128-ifunc.c += -fno-builtin-llroundf64x CFLAGS-e_logf128-ifunc.c += -fno-builtin-logf64x CFLAGS-w_log10f128-ifunc.c += -fno-builtin-log10f64x -CFLAGS-w_log1pf128-ifunc.c += -fno-builtin-log1pf64x +CFLAGS-w_log1pf128-ifunc.c += -fno-builtin-log1pf64x -fno-builtin-logp1f64x CFLAGS-e_log2f128-ifunc.c += -fno-builtin-log2f64x CFLAGS-s_logbf128-ifunc.c += -fno-builtin-logbf64x CFLAGS-s_lrintf128-ifunc.c += -fno-builtin-lrintf64x diff --git a/sysdeps/powerpc/powerpc64/le/fpu/multiarch/float128-ifunc-redirects.h b/sysdeps/powerpc/powerpc64/le/fpu/multiarch/float128-ifunc-redirects.h index 40df525ea5..155aabc4b0 100644 --- a/sysdeps/powerpc/powerpc64/le/fpu/multiarch/float128-ifunc-redirects.h +++ b/sysdeps/powerpc/powerpc64/le/fpu/multiarch/float128-ifunc-redirects.h @@ -33,6 +33,10 @@ extern __typeof (ldexpf128) F128_SFX_APPEND (__ldexpf128); #define __ldexpf128 F128_SFX_APPEND (__ldexpf128) +extern __typeof (log1pf128) F128_SFX_APPEND (__w_log1pf128); + +#define __w_log1pf128 F128_SFX_APPEND (__w_log1pf128) + /* libm_hidden_proto is disabled by the time we reach here. Ensure some internally called functions are still called without going through the PLT. Note, this code is only diff --git a/sysdeps/powerpc/powerpc64/le/fpu/multiarch/float128-ifunc.h b/sysdeps/powerpc/powerpc64/le/fpu/multiarch/float128-ifunc.h index ce337e4257..f235f824ae 100644 --- a/sysdeps/powerpc/powerpc64/le/fpu/multiarch/float128-ifunc.h +++ b/sysdeps/powerpc/powerpc64/le/fpu/multiarch/float128-ifunc.h @@ -138,7 +138,9 @@ /* Ensure the wrapper functions get exposed via IFUNC, not the wrappee (e.g __w_log1pf128_power8 instead of __log1pf128_power8. */ -#define DECL_ALIAS_w_log1p(x) MAKE_IFUNCP_WRAP_R(w_,x,) +#define DECL_ALIAS_w_log1p(x) \ + MAKE_IFUNCP_WRAP_R (w_, x, ) \ + MAKE_IFUNCP_WRAP_R (w_, logp1, ) #define DECL_ALIAS_w_scalbln(x) MAKE_IFUNCP_WRAP_R(w_,x,) /* These are declared in their respective jX objects. */ diff --git a/sysdeps/powerpc/powerpc64/le/fpu/multiarch/math-type-macros-float128.h b/sysdeps/powerpc/powerpc64/le/fpu/multiarch/math-type-macros-float128.h index 790d9743f8..0506db0855 100644 --- a/sysdeps/powerpc/powerpc64/le/fpu/multiarch/math-type-macros-float128.h +++ b/sysdeps/powerpc/powerpc64/le/fpu/multiarch/math-type-macros-float128.h @@ -106,11 +106,13 @@ F128_REDIR (__remainderf128); extern _Float128 __wrap_scalbnf128 (_Float128, int); extern _Float128 __w_scalblnf128 (_Float128, long int); extern _Float128 __w_log1pf128 (_Float128); +extern _Float128 __w_logp1f128 (_Float128); extern _Float128 __scalbf128 (_Float128, _Float128); F128_REDIR (__scalbf128); F128_REDIR (__wrap_scalbnf128); F128_REDIR (__w_scalblnf128); F128_REDIR (__w_log1pf128); +F128_REDIR (__w_logp1f128); /* Include the redirects shared with math_private.h users. */ #include diff --git a/sysdeps/riscv/nofpu/libm-test-ulps b/sysdeps/riscv/nofpu/libm-test-ulps index bc7e615177..d8cff3e077 100644 --- a/sysdeps/riscv/nofpu/libm-test-ulps +++ b/sysdeps/riscv/nofpu/libm-test-ulps @@ -1208,6 +1208,26 @@ Function: "log_upward": double: 1 ldouble: 1 +Function: "logp1": +double: 1 +float: 1 +ldouble: 3 + +Function: "logp1_downward": +double: 1 +float: 2 +ldouble: 3 + +Function: "logp1_towardzero": +double: 2 +float: 2 +ldouble: 3 + +Function: "logp1_upward": +double: 2 +float: 2 +ldouble: 2 + Function: "pow": double: 1 ldouble: 2 diff --git a/sysdeps/riscv/rvd/libm-test-ulps b/sysdeps/riscv/rvd/libm-test-ulps index a3a05a8705..fced981030 100644 --- a/sysdeps/riscv/rvd/libm-test-ulps +++ b/sysdeps/riscv/rvd/libm-test-ulps @@ -1212,6 +1212,26 @@ Function: "log_upward": double: 1 ldouble: 2 +Function: "logp1": +double: 1 +float: 1 +ldouble: 3 + +Function: "logp1_downward": +double: 1 +float: 2 +ldouble: 3 + +Function: "logp1_towardzero": +double: 2 +float: 2 +ldouble: 3 + +Function: "logp1_upward": +double: 2 +float: 2 +ldouble: 2 + Function: "pow": double: 1 ldouble: 2 diff --git a/sysdeps/s390/fpu/libm-test-ulps b/sysdeps/s390/fpu/libm-test-ulps index e24adb94e8..f2da8493f8 100644 --- a/sysdeps/s390/fpu/libm-test-ulps +++ b/sysdeps/s390/fpu/libm-test-ulps @@ -1230,6 +1230,26 @@ ldouble: 2 Function: "log_upward": ldouble: 1 +Function: "logp1": +double: 1 +float: 1 +ldouble: 3 + +Function: "logp1_downward": +double: 1 +float: 2 +ldouble: 3 + +Function: "logp1_towardzero": +double: 2 +float: 2 +ldouble: 3 + +Function: "logp1_upward": +double: 2 +float: 2 +ldouble: 2 + Function: "pow": double: 1 ldouble: 2 diff --git a/sysdeps/sh/libm-test-ulps b/sysdeps/sh/libm-test-ulps index 9c297f4481..3c84259941 100644 --- a/sysdeps/sh/libm-test-ulps +++ b/sysdeps/sh/libm-test-ulps @@ -475,6 +475,14 @@ float: 1 Function: "log2_towardzero": double: 2 +Function: "logp1": +double: 1 +float: 1 + +Function: "logp1_towardzero": +double: 2 +float: 2 + Function: "pow": double: 1 float: 1 diff --git a/sysdeps/sparc/fpu/libm-test-ulps b/sysdeps/sparc/fpu/libm-test-ulps index 2d490e0713..d6a6b70d66 100644 --- a/sysdeps/sparc/fpu/libm-test-ulps +++ b/sysdeps/sparc/fpu/libm-test-ulps @@ -1223,6 +1223,26 @@ double: 1 float: 2 ldouble: 1 +Function: "logp1": +double: 1 +float: 1 +ldouble: 3 + +Function: "logp1_downward": +double: 2 +float: 2 +ldouble: 3 + +Function: "logp1_towardzero": +double: 2 +float: 2 +ldouble: 3 + +Function: "logp1_upward": +double: 2 +float: 2 +ldouble: 2 + Function: "pow": double: 1 float: 3 diff --git a/sysdeps/unix/sysv/linux/aarch64/libm.abilist b/sysdeps/unix/sysv/linux/aarch64/libm.abilist index a4bb539670..40027fc3d3 100644 --- a/sysdeps/unix/sysv/linux/aarch64/libm.abilist +++ b/sysdeps/unix/sysv/linux/aarch64/libm.abilist @@ -1157,3 +1157,11 @@ GLIBC_2.40 log2p1f32x F GLIBC_2.40 log2p1f64 F GLIBC_2.40 log2p1f64x F GLIBC_2.40 log2p1l F +GLIBC_2.40 logp1 F +GLIBC_2.40 logp1f F +GLIBC_2.40 logp1f128 F +GLIBC_2.40 logp1f32 F +GLIBC_2.40 logp1f32x F +GLIBC_2.40 logp1f64 F +GLIBC_2.40 logp1f64x F +GLIBC_2.40 logp1l F diff --git a/sysdeps/unix/sysv/linux/alpha/libm.abilist b/sysdeps/unix/sysv/linux/alpha/libm.abilist index 8ff65e3f7e..5967de89a1 100644 --- a/sysdeps/unix/sysv/linux/alpha/libm.abilist +++ b/sysdeps/unix/sysv/linux/alpha/libm.abilist @@ -1316,3 +1316,11 @@ GLIBC_2.40 log2p1f32x F GLIBC_2.40 log2p1f64 F GLIBC_2.40 log2p1f64x F GLIBC_2.40 log2p1l F +GLIBC_2.40 logp1 F +GLIBC_2.40 logp1f F +GLIBC_2.40 logp1f128 F +GLIBC_2.40 logp1f32 F +GLIBC_2.40 logp1f32x F +GLIBC_2.40 logp1f64 F +GLIBC_2.40 logp1f64x F +GLIBC_2.40 logp1l F diff --git a/sysdeps/unix/sysv/linux/arc/libm.abilist b/sysdeps/unix/sysv/linux/arc/libm.abilist index af9df2673c..57affc37fc 100644 --- a/sysdeps/unix/sysv/linux/arc/libm.abilist +++ b/sysdeps/unix/sysv/linux/arc/libm.abilist @@ -763,3 +763,9 @@ GLIBC_2.40 log2p1f32 F GLIBC_2.40 log2p1f32x F GLIBC_2.40 log2p1f64 F GLIBC_2.40 log2p1l F +GLIBC_2.40 logp1 F +GLIBC_2.40 logp1f F +GLIBC_2.40 logp1f32 F +GLIBC_2.40 logp1f32x F +GLIBC_2.40 logp1f64 F +GLIBC_2.40 logp1l F diff --git a/sysdeps/unix/sysv/linux/arm/be/libm.abilist b/sysdeps/unix/sysv/linux/arm/be/libm.abilist index 0e460259f3..e225b995c1 100644 --- a/sysdeps/unix/sysv/linux/arm/be/libm.abilist +++ b/sysdeps/unix/sysv/linux/arm/be/libm.abilist @@ -854,3 +854,9 @@ GLIBC_2.40 log2p1f32 F GLIBC_2.40 log2p1f32x F GLIBC_2.40 log2p1f64 F GLIBC_2.40 log2p1l F +GLIBC_2.40 logp1 F +GLIBC_2.40 logp1f F +GLIBC_2.40 logp1f32 F +GLIBC_2.40 logp1f32x F +GLIBC_2.40 logp1f64 F +GLIBC_2.40 logp1l F diff --git a/sysdeps/unix/sysv/linux/arm/le/libm.abilist b/sysdeps/unix/sysv/linux/arm/le/libm.abilist index 0e460259f3..e225b995c1 100644 --- a/sysdeps/unix/sysv/linux/arm/le/libm.abilist +++ b/sysdeps/unix/sysv/linux/arm/le/libm.abilist @@ -854,3 +854,9 @@ GLIBC_2.40 log2p1f32 F GLIBC_2.40 log2p1f32x F GLIBC_2.40 log2p1f64 F GLIBC_2.40 log2p1l F +GLIBC_2.40 logp1 F +GLIBC_2.40 logp1f F +GLIBC_2.40 logp1f32 F +GLIBC_2.40 logp1f32x F +GLIBC_2.40 logp1f64 F +GLIBC_2.40 logp1l F diff --git a/sysdeps/unix/sysv/linux/csky/libm.abilist b/sysdeps/unix/sysv/linux/csky/libm.abilist index 4c1216044d..2a9f9a6779 100644 --- a/sysdeps/unix/sysv/linux/csky/libm.abilist +++ b/sysdeps/unix/sysv/linux/csky/libm.abilist @@ -829,3 +829,9 @@ GLIBC_2.40 log2p1f32 F GLIBC_2.40 log2p1f32x F GLIBC_2.40 log2p1f64 F GLIBC_2.40 log2p1l F +GLIBC_2.40 logp1 F +GLIBC_2.40 logp1f F +GLIBC_2.40 logp1f32 F +GLIBC_2.40 logp1f32x F +GLIBC_2.40 logp1f64 F +GLIBC_2.40 logp1l F diff --git a/sysdeps/unix/sysv/linux/hppa/libm.abilist b/sysdeps/unix/sysv/linux/hppa/libm.abilist index 3ea5b611eb..6fa800390d 100644 --- a/sysdeps/unix/sysv/linux/hppa/libm.abilist +++ b/sysdeps/unix/sysv/linux/hppa/libm.abilist @@ -854,3 +854,9 @@ GLIBC_2.40 log2p1f32 F GLIBC_2.40 log2p1f32x F GLIBC_2.40 log2p1f64 F GLIBC_2.40 log2p1l F +GLIBC_2.40 logp1 F +GLIBC_2.40 logp1f F +GLIBC_2.40 logp1f32 F +GLIBC_2.40 logp1f32x F +GLIBC_2.40 logp1f64 F +GLIBC_2.40 logp1l F diff --git a/sysdeps/unix/sysv/linux/i386/libm.abilist b/sysdeps/unix/sysv/linux/i386/libm.abilist index 696e52e65a..b6b1aa0289 100644 --- a/sysdeps/unix/sysv/linux/i386/libm.abilist +++ b/sysdeps/unix/sysv/linux/i386/libm.abilist @@ -1196,3 +1196,11 @@ GLIBC_2.40 log2p1f32x F GLIBC_2.40 log2p1f64 F GLIBC_2.40 log2p1f64x F GLIBC_2.40 log2p1l F +GLIBC_2.40 logp1 F +GLIBC_2.40 logp1f F +GLIBC_2.40 logp1f128 F +GLIBC_2.40 logp1f32 F +GLIBC_2.40 logp1f32x F +GLIBC_2.40 logp1f64 F +GLIBC_2.40 logp1f64x F +GLIBC_2.40 logp1l F diff --git a/sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist b/sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist index 1c6f02ac5a..b225d61eac 100644 --- a/sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist +++ b/sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist @@ -1036,3 +1036,11 @@ GLIBC_2.40 log2p1f32x F GLIBC_2.40 log2p1f64 F GLIBC_2.40 log2p1f64x F GLIBC_2.40 log2p1l F +GLIBC_2.40 logp1 F +GLIBC_2.40 logp1f F +GLIBC_2.40 logp1f128 F +GLIBC_2.40 logp1f32 F +GLIBC_2.40 logp1f32x F +GLIBC_2.40 logp1f64 F +GLIBC_2.40 logp1f64x F +GLIBC_2.40 logp1l F diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist index 0e460259f3..e225b995c1 100644 --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist @@ -854,3 +854,9 @@ GLIBC_2.40 log2p1f32 F GLIBC_2.40 log2p1f32x F GLIBC_2.40 log2p1f64 F GLIBC_2.40 log2p1l F +GLIBC_2.40 logp1 F +GLIBC_2.40 logp1f F +GLIBC_2.40 logp1f32 F +GLIBC_2.40 logp1f32x F +GLIBC_2.40 logp1f64 F +GLIBC_2.40 logp1l F diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist index be8262bb48..cd4cafbe14 100644 --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist @@ -890,3 +890,9 @@ GLIBC_2.40 log2p1f32 F GLIBC_2.40 log2p1f32x F GLIBC_2.40 log2p1f64 F GLIBC_2.40 log2p1l F +GLIBC_2.40 logp1 F +GLIBC_2.40 logp1f F +GLIBC_2.40 logp1f32 F +GLIBC_2.40 logp1f32x F +GLIBC_2.40 logp1f64 F +GLIBC_2.40 logp1l F diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist index cc091b2d4e..604af40dac 100644 --- a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist @@ -854,3 +854,9 @@ GLIBC_2.40 log2p1f32 F GLIBC_2.40 log2p1f32x F GLIBC_2.40 log2p1f64 F GLIBC_2.40 log2p1l F +GLIBC_2.40 logp1 F +GLIBC_2.40 logp1f F +GLIBC_2.40 logp1f32 F +GLIBC_2.40 logp1f32x F +GLIBC_2.40 logp1f64 F +GLIBC_2.40 logp1l F diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist index cc091b2d4e..604af40dac 100644 --- a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist @@ -854,3 +854,9 @@ GLIBC_2.40 log2p1f32 F GLIBC_2.40 log2p1f32x F GLIBC_2.40 log2p1f64 F GLIBC_2.40 log2p1l F +GLIBC_2.40 logp1 F +GLIBC_2.40 logp1f F +GLIBC_2.40 logp1f32 F +GLIBC_2.40 logp1f32x F +GLIBC_2.40 logp1f64 F +GLIBC_2.40 logp1l F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist index 4d442a989d..56ec45feb0 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist @@ -854,3 +854,9 @@ GLIBC_2.40 log2p1f32 F GLIBC_2.40 log2p1f32x F GLIBC_2.40 log2p1f64 F GLIBC_2.40 log2p1l F +GLIBC_2.40 logp1 F +GLIBC_2.40 logp1f F +GLIBC_2.40 logp1f32 F +GLIBC_2.40 logp1f32x F +GLIBC_2.40 logp1f64 F +GLIBC_2.40 logp1l F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist index ae7b4a7558..e97dd13eb4 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist @@ -1157,3 +1157,11 @@ GLIBC_2.40 log2p1f32x F GLIBC_2.40 log2p1f64 F GLIBC_2.40 log2p1f64x F GLIBC_2.40 log2p1l F +GLIBC_2.40 logp1 F +GLIBC_2.40 logp1f F +GLIBC_2.40 logp1f128 F +GLIBC_2.40 logp1f32 F +GLIBC_2.40 logp1f32x F +GLIBC_2.40 logp1f64 F +GLIBC_2.40 logp1f64x F +GLIBC_2.40 logp1l F diff --git a/sysdeps/unix/sysv/linux/nios2/libm.abilist b/sysdeps/unix/sysv/linux/nios2/libm.abilist index 9ed3fbdee4..1603d163a2 100644 --- a/sysdeps/unix/sysv/linux/nios2/libm.abilist +++ b/sysdeps/unix/sysv/linux/nios2/libm.abilist @@ -854,3 +854,9 @@ GLIBC_2.40 log2p1f32 F GLIBC_2.40 log2p1f32x F GLIBC_2.40 log2p1f64 F GLIBC_2.40 log2p1l F +GLIBC_2.40 logp1 F +GLIBC_2.40 logp1f F +GLIBC_2.40 logp1f32 F +GLIBC_2.40 logp1f32x F +GLIBC_2.40 logp1f64 F +GLIBC_2.40 logp1l F diff --git a/sysdeps/unix/sysv/linux/or1k/libm.abilist b/sysdeps/unix/sysv/linux/or1k/libm.abilist index 69655f7d23..7565572118 100644 --- a/sysdeps/unix/sysv/linux/or1k/libm.abilist +++ b/sysdeps/unix/sysv/linux/or1k/libm.abilist @@ -763,3 +763,9 @@ GLIBC_2.40 log2p1f32 F GLIBC_2.40 log2p1f32x F GLIBC_2.40 log2p1f64 F GLIBC_2.40 log2p1l F +GLIBC_2.40 logp1 F +GLIBC_2.40 logp1f F +GLIBC_2.40 logp1f32 F +GLIBC_2.40 logp1f32x F +GLIBC_2.40 logp1f64 F +GLIBC_2.40 logp1l F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist index 564eb87d4b..1f61a9cb31 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist @@ -1001,3 +1001,9 @@ GLIBC_2.40 log2p1f32 F GLIBC_2.40 log2p1f32x F GLIBC_2.40 log2p1f64 F GLIBC_2.40 log2p1l F +GLIBC_2.40 logp1 F +GLIBC_2.40 logp1f F +GLIBC_2.40 logp1f32 F +GLIBC_2.40 logp1f32x F +GLIBC_2.40 logp1f64 F +GLIBC_2.40 logp1l F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist index a57eedb779..c9af2d21b9 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist @@ -1000,3 +1000,9 @@ GLIBC_2.40 log2p1f32 F GLIBC_2.40 log2p1f32x F GLIBC_2.40 log2p1f64 F GLIBC_2.40 log2p1l F +GLIBC_2.40 logp1 F +GLIBC_2.40 logp1f F +GLIBC_2.40 logp1f32 F +GLIBC_2.40 logp1f32x F +GLIBC_2.40 logp1f64 F +GLIBC_2.40 logp1l F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist index 7564069a37..b0af67d524 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist @@ -994,3 +994,9 @@ GLIBC_2.40 log2p1f32 F GLIBC_2.40 log2p1f32x F GLIBC_2.40 log2p1f64 F GLIBC_2.40 log2p1l F +GLIBC_2.40 logp1 F +GLIBC_2.40 logp1f F +GLIBC_2.40 logp1f32 F +GLIBC_2.40 logp1f32x F +GLIBC_2.40 logp1f64 F +GLIBC_2.40 logp1l F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist index b02a7115af..28f3ee6264 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist @@ -1322,6 +1322,7 @@ GLIBC_2.38 fmod F GLIBC_2.38 fmodf F GLIBC_2.39 exp10 F GLIBC_2.40 __log2p1ieee128 F +GLIBC_2.40 __logp1ieee128 F GLIBC_2.40 log2p1 F GLIBC_2.40 log2p1f F GLIBC_2.40 log2p1f128 F @@ -1330,3 +1331,11 @@ GLIBC_2.40 log2p1f32x F GLIBC_2.40 log2p1f64 F GLIBC_2.40 log2p1f64x F GLIBC_2.40 log2p1l F +GLIBC_2.40 logp1 F +GLIBC_2.40 logp1f F +GLIBC_2.40 logp1f128 F +GLIBC_2.40 logp1f32 F +GLIBC_2.40 logp1f32x F +GLIBC_2.40 logp1f64 F +GLIBC_2.40 logp1f64x F +GLIBC_2.40 logp1l F diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist index 7bf0bd7c7a..dae4531180 100644 --- a/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist @@ -1036,3 +1036,11 @@ GLIBC_2.40 log2p1f32x F GLIBC_2.40 log2p1f64 F GLIBC_2.40 log2p1f64x F GLIBC_2.40 log2p1l F +GLIBC_2.40 logp1 F +GLIBC_2.40 logp1f F +GLIBC_2.40 logp1f128 F +GLIBC_2.40 logp1f32 F +GLIBC_2.40 logp1f32x F +GLIBC_2.40 logp1f64 F +GLIBC_2.40 logp1f64x F +GLIBC_2.40 logp1l F diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist index c22d9bb7c6..dc506b8a8b 100644 --- a/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist @@ -1133,3 +1133,11 @@ GLIBC_2.40 log2p1f32x F GLIBC_2.40 log2p1f64 F GLIBC_2.40 log2p1f64x F GLIBC_2.40 log2p1l F +GLIBC_2.40 logp1 F +GLIBC_2.40 logp1f F +GLIBC_2.40 logp1f128 F +GLIBC_2.40 logp1f32 F +GLIBC_2.40 logp1f32x F +GLIBC_2.40 logp1f64 F +GLIBC_2.40 logp1f64x F +GLIBC_2.40 logp1l F diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist index 2fb712ec71..818e2c419e 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist @@ -1260,3 +1260,11 @@ GLIBC_2.40 log2p1f32x F GLIBC_2.40 log2p1f64 F GLIBC_2.40 log2p1f64x F GLIBC_2.40 log2p1l F +GLIBC_2.40 logp1 F +GLIBC_2.40 logp1f F +GLIBC_2.40 logp1f128 F +GLIBC_2.40 logp1f32 F +GLIBC_2.40 logp1f32x F +GLIBC_2.40 logp1f64 F +GLIBC_2.40 logp1f64x F +GLIBC_2.40 logp1l F diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist index 40489589a7..03d51e1dfe 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist @@ -1260,3 +1260,11 @@ GLIBC_2.40 log2p1f32x F GLIBC_2.40 log2p1f64 F GLIBC_2.40 log2p1f64x F GLIBC_2.40 log2p1l F +GLIBC_2.40 logp1 F +GLIBC_2.40 logp1f F +GLIBC_2.40 logp1f128 F +GLIBC_2.40 logp1f32 F +GLIBC_2.40 logp1f32x F +GLIBC_2.40 logp1f64 F +GLIBC_2.40 logp1f64x F +GLIBC_2.40 logp1l F diff --git a/sysdeps/unix/sysv/linux/sh/be/libm.abilist b/sysdeps/unix/sysv/linux/sh/be/libm.abilist index a5363e90d6..b6a03d1146 100644 --- a/sysdeps/unix/sysv/linux/sh/be/libm.abilist +++ b/sysdeps/unix/sysv/linux/sh/be/libm.abilist @@ -854,3 +854,9 @@ GLIBC_2.40 log2p1f32 F GLIBC_2.40 log2p1f32x F GLIBC_2.40 log2p1f64 F GLIBC_2.40 log2p1l F +GLIBC_2.40 logp1 F +GLIBC_2.40 logp1f F +GLIBC_2.40 logp1f32 F +GLIBC_2.40 logp1f32x F +GLIBC_2.40 logp1f64 F +GLIBC_2.40 logp1l F diff --git a/sysdeps/unix/sysv/linux/sh/le/libm.abilist b/sysdeps/unix/sysv/linux/sh/le/libm.abilist index a5363e90d6..b6a03d1146 100644 --- a/sysdeps/unix/sysv/linux/sh/le/libm.abilist +++ b/sysdeps/unix/sysv/linux/sh/le/libm.abilist @@ -854,3 +854,9 @@ GLIBC_2.40 log2p1f32 F GLIBC_2.40 log2p1f32x F GLIBC_2.40 log2p1f64 F GLIBC_2.40 log2p1l F +GLIBC_2.40 logp1 F +GLIBC_2.40 logp1f F +GLIBC_2.40 logp1f32 F +GLIBC_2.40 logp1f32x F +GLIBC_2.40 logp1f64 F +GLIBC_2.40 logp1l F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist index 9bda9bdeb5..312544d653 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist @@ -1267,3 +1267,11 @@ GLIBC_2.40 log2p1f32x F GLIBC_2.40 log2p1f64 F GLIBC_2.40 log2p1f64x F GLIBC_2.40 log2p1l F +GLIBC_2.40 logp1 F +GLIBC_2.40 logp1f F +GLIBC_2.40 logp1f128 F +GLIBC_2.40 logp1f32 F +GLIBC_2.40 logp1f32x F +GLIBC_2.40 logp1f64 F +GLIBC_2.40 logp1f64x F +GLIBC_2.40 logp1l F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist index 61d2aa05a9..391b583a66 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist @@ -1157,3 +1157,11 @@ GLIBC_2.40 log2p1f32x F GLIBC_2.40 log2p1f64 F GLIBC_2.40 log2p1f64x F GLIBC_2.40 log2p1l F +GLIBC_2.40 logp1 F +GLIBC_2.40 logp1f F +GLIBC_2.40 logp1f128 F +GLIBC_2.40 logp1f32 F +GLIBC_2.40 logp1f32x F +GLIBC_2.40 logp1f64 F +GLIBC_2.40 logp1f64x F +GLIBC_2.40 logp1l F diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist index bbf646fe7f..47b5b9178d 100644 --- a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist @@ -1190,3 +1190,11 @@ GLIBC_2.40 log2p1f32x F GLIBC_2.40 log2p1f64 F GLIBC_2.40 log2p1f64x F GLIBC_2.40 log2p1l F +GLIBC_2.40 logp1 F +GLIBC_2.40 logp1f F +GLIBC_2.40 logp1f128 F +GLIBC_2.40 logp1f32 F +GLIBC_2.40 logp1f32x F +GLIBC_2.40 logp1f64 F +GLIBC_2.40 logp1f64x F +GLIBC_2.40 logp1l F diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist index 7c7b884dde..809c5f4186 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist @@ -1190,3 +1190,11 @@ GLIBC_2.40 log2p1f32x F GLIBC_2.40 log2p1f64 F GLIBC_2.40 log2p1f64x F GLIBC_2.40 log2p1l F +GLIBC_2.40 logp1 F +GLIBC_2.40 logp1f F +GLIBC_2.40 logp1f128 F +GLIBC_2.40 logp1f32 F +GLIBC_2.40 logp1f32x F +GLIBC_2.40 logp1f64 F +GLIBC_2.40 logp1f64x F +GLIBC_2.40 logp1l F diff --git a/sysdeps/x86_64/fpu/libm-test-ulps b/sysdeps/x86_64/fpu/libm-test-ulps index 893c22b19b..97876cadf2 100644 --- a/sysdeps/x86_64/fpu/libm-test-ulps +++ b/sysdeps/x86_64/fpu/libm-test-ulps @@ -1907,6 +1907,30 @@ float: 3 Function: "log_vlen8_avx2": float: 3 +Function: "logp1": +double: 1 +float: 1 +float128: 3 +ldouble: 2 + +Function: "logp1_downward": +double: 2 +float: 2 +float128: 3 +ldouble: 4 + +Function: "logp1_towardzero": +double: 2 +float: 2 +float128: 3 +ldouble: 4 + +Function: "logp1_upward": +double: 2 +float: 2 +float128: 2 +ldouble: 3 + Function: "pow": double: 1 float: 1