aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Myers <josmyers@redhat.com>2024-06-17 13:47:09 +0000
committerJoseph Myers <josmyers@redhat.com>2024-06-17 13:47:09 +0000
commitbb014f50c4a0c8d8db1ba5af55c104e430b5533d (patch)
treea1ca91748bb999691442701c3b786ebc3372114f
parentca38eff28015f376c020b4dfad5351e45be8d090 (diff)
downloadglibc-bb014f50c4a0c8d8db1ba5af55c104e430b5533d.zip
glibc-bb014f50c4a0c8d8db1ba5af55c104e430b5533d.tar.gz
glibc-bb014f50c4a0c8d8db1ba5af55c104e430b5533d.tar.bz2
Implement C23 logp1
C23 adds various <math.h> 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.
-rw-r--r--NEWS2
-rw-r--r--manual/math.texi12
-rw-r--r--math/Makefile9
-rw-r--r--math/Versions2
-rw-r--r--math/bits/mathcalls.h3
-rwxr-xr-xmath/gen-tgmath-tests.py1
-rw-r--r--math/libm-test-log1p.inc12
-rw-r--r--math/test-tgmath.c12
-rw-r--r--math/tgmath.h3
-rw-r--r--math/w_log1p_template.c2
-rw-r--r--sysdeps/aarch64/libm-test-ulps20
-rw-r--r--sysdeps/alpha/fpu/libm-test-ulps20
-rw-r--r--sysdeps/arc/fpu/libm-test-ulps16
-rw-r--r--sysdeps/arc/nofpu/libm-test-ulps4
-rw-r--r--sysdeps/arm/libm-test-ulps16
-rw-r--r--sysdeps/csky/fpu/libm-test-ulps16
-rw-r--r--sysdeps/csky/nofpu/libm-test-ulps16
-rw-r--r--sysdeps/hppa/fpu/libm-test-ulps16
-rw-r--r--sysdeps/i386/fpu/libm-test-ulps23
-rw-r--r--sysdeps/i386/i686/fpu/multiarch/libm-test-ulps23
-rw-r--r--sysdeps/ieee754/float128/Makefile2
-rw-r--r--sysdeps/ieee754/float128/float128_private.h1
-rw-r--r--sysdeps/ieee754/ldbl-128/Makefile2
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/Versions1
-rw-r--r--sysdeps/ieee754/ldbl-96/Makefile2
-rw-r--r--sysdeps/ieee754/ldbl-opt/Makefile2
-rw-r--r--sysdeps/ieee754/ldbl-opt/nldbl-log1p.c1
-rw-r--r--sysdeps/loongarch/lp64/libm-test-ulps20
-rw-r--r--sysdeps/m68k/coldfire/fpu/libm-test-ulps3
-rw-r--r--sysdeps/mach/hurd/i386/libm.abilist8
-rw-r--r--sysdeps/mach/hurd/x86_64/libm.abilist8
-rw-r--r--sysdeps/microblaze/libm-test-ulps4
-rw-r--r--sysdeps/mips/mips32/libm-test-ulps16
-rw-r--r--sysdeps/mips/mips64/libm-test-ulps20
-rw-r--r--sysdeps/nios2/libm-test-ulps4
-rw-r--r--sysdeps/or1k/fpu/libm-test-ulps16
-rw-r--r--sysdeps/or1k/nofpu/libm-test-ulps16
-rw-r--r--sysdeps/powerpc/fpu/libm-test-ulps24
-rw-r--r--sysdeps/powerpc/nofpu/libm-test-ulps20
-rw-r--r--sysdeps/powerpc/powerpc64/le/fpu/multiarch/Makefile2
-rw-r--r--sysdeps/powerpc/powerpc64/le/fpu/multiarch/float128-ifunc-redirects.h4
-rw-r--r--sysdeps/powerpc/powerpc64/le/fpu/multiarch/float128-ifunc.h4
-rw-r--r--sysdeps/powerpc/powerpc64/le/fpu/multiarch/math-type-macros-float128.h2
-rw-r--r--sysdeps/riscv/nofpu/libm-test-ulps20
-rw-r--r--sysdeps/riscv/rvd/libm-test-ulps20
-rw-r--r--sysdeps/s390/fpu/libm-test-ulps20
-rw-r--r--sysdeps/sh/libm-test-ulps8
-rw-r--r--sysdeps/sparc/fpu/libm-test-ulps20
-rw-r--r--sysdeps/unix/sysv/linux/aarch64/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/alpha/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/arc/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/arm/be/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/arm/le/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/csky/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/hppa/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/i386/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/be/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/le/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips32/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/nios2/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/or1k/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist9
-rw-r--r--sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/sh/be/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/sh/le/libm.abilist6
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/64/libm.abilist8
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist8
-rw-r--r--sysdeps/x86_64/fpu/libm-test-ulps24
80 files changed, 725 insertions, 12 deletions
diff --git a/NEWS b/NEWS
index 20e263f..c5fbdc6 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 <tgmath.h>.
- - 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 c99501c..56f2295 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 58e5c07..c55976c 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 <test-$$type.h>"; \
@@ -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 46b9b87..f6ddd2f 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 fbfc27a..40f9cf3 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 1131481..307b657 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 67ad03f..bcac6ff 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 141e96b..290e9cb 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);
@@ -652,6 +654,14 @@ TYPE
}
TYPE
+(F(logp1)) (TYPE x)
+{
+ ++count;
+ P ();
+ return x;
+}
+
+TYPE
(F(pow)) (TYPE x, TYPE y)
{
++count;
diff --git a/math/tgmath.h b/math/tgmath.h
index d9ee3e3..78fd2f5 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 bfdedb0..100f2cd 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 656d4b0..bcae276 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 f2929d6..392d23f 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 56ff914..41c8ef1 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 6ac2830..d3f4595 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 fc7ba14..c96ec03 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 6e1356e..fc634f8 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 8a2de74..a1e28c8 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 3d60fc2..8b4dfb6 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 f2139fc..ef85156 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 b892c43..e2b2492 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 f869e80..f0f6aae 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 38a8bdd..19aa6c4 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 9cbfc7f..1901238 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 c9a7436..018e0a8 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 170e77b..a3ec2c5 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 d1eda5d..9c204ff 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 455b25a..b0de985 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 185c5b4..f9db4d3 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 ad3649f..1b25a70 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 113daa4..88010e5 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 0c7ffd4..394e598 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 faa3184..d3666eb 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 5720e73..2984d0d 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 933aba4..f2fd058 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 2cbef48..c8d1a72 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 948ec01..59b9f07 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 785bae7..726855f 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 78e9a9a..e41e585 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 35a1e7b..94d737a 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 b59c4b2..43d9e5f 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 40df525..155aabc 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 ce337e4..f235f82 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 790d974..0506db0 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 <float128-ifunc-redirects.h>
diff --git a/sysdeps/riscv/nofpu/libm-test-ulps b/sysdeps/riscv/nofpu/libm-test-ulps
index bc7e615..d8cff3e 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 a3a05a8..fced981 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 e24adb9..f2da849 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 9c297f4..3c84259 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 2d490e0..d6a6b70 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 a4bb539..40027fc 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 8ff65e3..5967de8 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 af9df26..57affc3 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 0e46025..e225b99 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 0e46025..e225b99 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 4c12160..2a9f9a6 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 3ea5b61..6fa8003 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 696e52e..b6b1aa0 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 1c6f02a..b225d61 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 0e46025..e225b99 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 be8262b..cd4cafb 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 cc091b2..604af40 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 cc091b2..604af40 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 4d442a9..56ec45f 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 ae7b4a7..e97dd13 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 9ed3fbd..1603d16 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 69655f7..7565572 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 564eb87..1f61a9c 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 a57eedb..c9af2d2 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 7564069..b0af67d 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 b02a711..28f3ee6 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 7bf0bd7..dae4531 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 c22d9bb..dc506b8 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 2fb712e..818e2c4 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 4048958..03d51e1 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 a5363e90..b6a03d1 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 a5363e90..b6a03d1 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 9bda9bd..312544d 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 61d2aa0..391b583 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 bbf646f..47b5b91 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 7c7b884..809c5f4 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 893c22b..97876ca 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