aboutsummaryrefslogtreecommitdiff
path: root/sysdeps
diff options
context:
space:
mode:
authorJoseph Myers <josmyers@redhat.com>2024-06-17 13:48:13 +0000
committerJoseph Myers <josmyers@redhat.com>2024-06-17 13:48:13 +0000
commit55eb99e9a9d840ba452b128be14d6529c2dde039 (patch)
tree6810f148fb04ca7217c67aa3f2e10b72d86a8d2d /sysdeps
parentbb014f50c4a0c8d8db1ba5af55c104e430b5533d (diff)
downloadglibc-55eb99e9a9d840ba452b128be14d6529c2dde039.zip
glibc-55eb99e9a9d840ba452b128be14d6529c2dde039.tar.gz
glibc-55eb99e9a9d840ba452b128be14d6529c2dde039.tar.bz2
Implement C23 log10p1
C23 adds various <math.h> function families originally defined in TS 18661-4. Add the log10p1 functions (log10(1+x): like log1p, but for base-10 logarithms). This is directly analogous to the log2p1 implementation (except that whereas log2p1 has a smaller underflow range than log1p, log10p1 has a larger underflow range). The test inputs are copied from those for log1p and log2p1, plus a few more inputs in that wider underflow range. Tested for x86_64 and x86, and with build-many-glibcs.py.
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/i386/i686/fpu/multiarch/libm-test-ulps24
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/Versions1
-rw-r--r--sysdeps/ieee754/ldbl-opt/Makefile2
-rw-r--r--sysdeps/ieee754/ldbl-opt/nldbl-log10p1.c8
-rw-r--r--sysdeps/mach/hurd/i386/libm.abilist8
-rw-r--r--sysdeps/mach/hurd/x86_64/libm.abilist8
-rw-r--r--sysdeps/powerpc/nofpu/Makefile1
-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
39 files changed, 291 insertions, 0 deletions
diff --git a/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps b/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
index e2b2492..8446b81 100644
--- a/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
+++ b/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
@@ -1378,6 +1378,30 @@ float: 1
float128: 1
ldouble: 1
+Function: "log10p1":
+double: 1
+float: 1
+float128: 3
+ldouble: 2
+
+Function: "log10p1_downward":
+double: 1
+float: 1
+float128: 2
+ldouble: 4
+
+Function: "log10p1_towardzero":
+double: 1
+float: 1
+float128: 2
+ldouble: 4
+
+Function: "log10p1_upward":
+double: 1
+float: 1
+float128: 3
+ldouble: 3
+
Function: "log1p":
double: 1
float128: 3
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/Versions b/sysdeps/ieee754/ldbl-128ibm-compat/Versions
index 018e0a8..696d132 100644
--- a/sysdeps/ieee754/ldbl-128ibm-compat/Versions
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/Versions
@@ -139,6 +139,7 @@ libm {
}
GLIBC_2.40 {
__log2p1ieee128;
+ __log10p1ieee128;
__logp1ieee128;
}
}
diff --git a/sysdeps/ieee754/ldbl-opt/Makefile b/sysdeps/ieee754/ldbl-opt/Makefile
index 9c204ff..d8cceb5 100644
--- a/sysdeps/ieee754/ldbl-opt/Makefile
+++ b/sysdeps/ieee754/ldbl-opt/Makefile
@@ -140,6 +140,7 @@ libnldbl-calls = \
log \
log2 \
log10 \
+ log10p1 \
log1p \
log2p1 \
logb \
@@ -341,6 +342,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-log10p1.c = -fno-builtin-log10p1l
CFLAGS-nldbl-log1p.c = -fno-builtin-log1pl -fno-builtin-logp1l
CFLAGS-nldbl-log2.c = -fno-builtin-log2l
CFLAGS-nldbl-log2p1.c = -fno-builtin-log2p1l
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-log10p1.c b/sysdeps/ieee754/ldbl-opt/nldbl-log10p1.c
new file mode 100644
index 0000000..d00fc95
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-log10p1.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+log10p1l (double x)
+{
+ return log10p1 (x);
+}
diff --git a/sysdeps/mach/hurd/i386/libm.abilist b/sysdeps/mach/hurd/i386/libm.abilist
index 88010e5..c999fc0 100644
--- a/sysdeps/mach/hurd/i386/libm.abilist
+++ b/sysdeps/mach/hurd/i386/libm.abilist
@@ -1181,6 +1181,14 @@ GLIBC_2.35 fsqrt F
GLIBC_2.35 fsqrtl F
GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f128 F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1f64x F
+GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f128 F
diff --git a/sysdeps/mach/hurd/x86_64/libm.abilist b/sysdeps/mach/hurd/x86_64/libm.abilist
index 394e598..256717f 100644
--- a/sysdeps/mach/hurd/x86_64/libm.abilist
+++ b/sysdeps/mach/hurd/x86_64/libm.abilist
@@ -1038,6 +1038,14 @@ GLIBC_2.38 ynf32x F
GLIBC_2.38 ynf64 F
GLIBC_2.38 ynf64x F
GLIBC_2.38 ynl F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f128 F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1f64x F
+GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f128 F
diff --git a/sysdeps/powerpc/nofpu/Makefile b/sysdeps/powerpc/nofpu/Makefile
index 96657c9..71ee2b6 100644
--- a/sysdeps/powerpc/nofpu/Makefile
+++ b/sysdeps/powerpc/nofpu/Makefile
@@ -54,5 +54,6 @@ CFLAGS-s_fmaximum_magl.c += -fno-builtin-fabsl
CFLAGS-s_fmaximum_mag_numl.c += -fno-builtin-fabsl
CFLAGS-s_fminimum_magl.c += -fno-builtin-fabsl
CFLAGS-s_fminimum_mag_numl.c += -fno-builtin-fabsl
+CFLAGS-s_log10p1l.c += -fno-builtin-fabsl
CFLAGS-s_log2p1l.c += -fno-builtin-fabsl
endif
diff --git a/sysdeps/unix/sysv/linux/aarch64/libm.abilist b/sysdeps/unix/sysv/linux/aarch64/libm.abilist
index 40027fc..5737e6d 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libm.abilist
@@ -1149,6 +1149,14 @@ GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f128 F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1f64x F
+GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f128 F
diff --git a/sysdeps/unix/sysv/linux/alpha/libm.abilist b/sysdeps/unix/sysv/linux/alpha/libm.abilist
index 5967de8..f0e96fb 100644
--- a/sysdeps/unix/sysv/linux/alpha/libm.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libm.abilist
@@ -1308,6 +1308,14 @@ GLIBC_2.4 truncl F
GLIBC_2.4 y0l F
GLIBC_2.4 y1l F
GLIBC_2.4 ynl F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f128 F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1f64x F
+GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f128 F
diff --git a/sysdeps/unix/sysv/linux/arc/libm.abilist b/sysdeps/unix/sysv/linux/arc/libm.abilist
index 57affc3..315a453 100644
--- a/sysdeps/unix/sysv/linux/arc/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libm.abilist
@@ -757,6 +757,12 @@ GLIBC_2.35 fminimumf64 F
GLIBC_2.35 fminimuml F
GLIBC_2.35 fsqrt F
GLIBC_2.35 fsqrtl F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f32 F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libm.abilist b/sysdeps/unix/sysv/linux/arm/be/libm.abilist
index e225b99..20da5b7 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libm.abilist
@@ -848,6 +848,12 @@ GLIBC_2.4 y1l F
GLIBC_2.4 yn F
GLIBC_2.4 ynf F
GLIBC_2.4 ynl F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f32 F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libm.abilist b/sysdeps/unix/sysv/linux/arm/le/libm.abilist
index e225b99..20da5b7 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libm.abilist
@@ -848,6 +848,12 @@ GLIBC_2.4 y1l F
GLIBC_2.4 yn F
GLIBC_2.4 ynf F
GLIBC_2.4 ynl F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f32 F
diff --git a/sysdeps/unix/sysv/linux/csky/libm.abilist b/sysdeps/unix/sysv/linux/csky/libm.abilist
index 2a9f9a6..a8181e8 100644
--- a/sysdeps/unix/sysv/linux/csky/libm.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libm.abilist
@@ -823,6 +823,12 @@ GLIBC_2.35 fminimumf64 F
GLIBC_2.35 fminimuml F
GLIBC_2.35 fsqrt F
GLIBC_2.35 fsqrtl F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f32 F
diff --git a/sysdeps/unix/sysv/linux/hppa/libm.abilist b/sysdeps/unix/sysv/linux/hppa/libm.abilist
index 6fa8003..b10d92f 100644
--- a/sysdeps/unix/sysv/linux/hppa/libm.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libm.abilist
@@ -848,6 +848,12 @@ GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.4 exp2l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f32 F
diff --git a/sysdeps/unix/sysv/linux/i386/libm.abilist b/sysdeps/unix/sysv/linux/i386/libm.abilist
index b6b1aa0..e760f73 100644
--- a/sysdeps/unix/sysv/linux/i386/libm.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libm.abilist
@@ -1188,6 +1188,14 @@ GLIBC_2.35 fsqrt F
GLIBC_2.35 fsqrtl F
GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f128 F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1f64x F
+GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f128 F
diff --git a/sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist b/sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist
index b225d61..1b3f5df 100644
--- a/sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist
@@ -1028,6 +1028,14 @@ GLIBC_2.36 ynf32x F
GLIBC_2.36 ynf64 F
GLIBC_2.36 ynf64x F
GLIBC_2.36 ynl F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f128 F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1f64x F
+GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f128 F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
index e225b99..20da5b7 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
@@ -848,6 +848,12 @@ GLIBC_2.4 y1l F
GLIBC_2.4 yn F
GLIBC_2.4 ynf F
GLIBC_2.4 ynl F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f32 F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
index cd4cafb..89069d5 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
@@ -884,6 +884,12 @@ GLIBC_2.35 fsqrt F
GLIBC_2.35 fsqrtl F
GLIBC_2.35 hypot F
GLIBC_2.35 hypotf F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f32 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
index 604af40..bcd47e7 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
@@ -848,6 +848,12 @@ GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f32 F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
index 604af40..bcd47e7 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
@@ -848,6 +848,12 @@ GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f32 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
index 56ec45feb0..f21b04a 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
@@ -848,6 +848,12 @@ GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.4 exp2l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f32 F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
index e97dd13..4af7729 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
@@ -1149,6 +1149,14 @@ GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f128 F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1f64x F
+GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f128 F
diff --git a/sysdeps/unix/sysv/linux/nios2/libm.abilist b/sysdeps/unix/sysv/linux/nios2/libm.abilist
index 1603d16..95c654f 100644
--- a/sysdeps/unix/sysv/linux/nios2/libm.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libm.abilist
@@ -848,6 +848,12 @@ GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f32 F
diff --git a/sysdeps/unix/sysv/linux/or1k/libm.abilist b/sysdeps/unix/sysv/linux/or1k/libm.abilist
index 7565572..edcd206 100644
--- a/sysdeps/unix/sysv/linux/or1k/libm.abilist
+++ b/sysdeps/unix/sysv/linux/or1k/libm.abilist
@@ -757,6 +757,12 @@ GLIBC_2.35 ynf32 F
GLIBC_2.35 ynf32x F
GLIBC_2.35 ynf64 F
GLIBC_2.35 ynl F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f32 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
index 1f61a9c..f56a507 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
@@ -995,6 +995,12 @@ GLIBC_2.4 truncl F
GLIBC_2.4 y0l F
GLIBC_2.4 y1l F
GLIBC_2.4 ynl F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f32 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
index c9af2d2..be9e896 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
@@ -994,6 +994,12 @@ GLIBC_2.4 truncl F
GLIBC_2.4 y0l F
GLIBC_2.4 y1l F
GLIBC_2.4 ynl F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f32 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
index b0af67d..70eea29 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
@@ -988,6 +988,12 @@ GLIBC_2.4 truncl F
GLIBC_2.4 y0l F
GLIBC_2.4 y1l F
GLIBC_2.4 ynl F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f32 F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
index 28f3ee6..4f9aa4c 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
@@ -1321,8 +1321,17 @@ GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
+GLIBC_2.40 __log10p1ieee128 F
GLIBC_2.40 __log2p1ieee128 F
GLIBC_2.40 __logp1ieee128 F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f128 F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1f64x F
+GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f128 F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist
index dae4531..ef575d0 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist
@@ -1028,6 +1028,14 @@ GLIBC_2.35 fminimumf64x F
GLIBC_2.35 fminimuml F
GLIBC_2.35 fsqrt F
GLIBC_2.35 fsqrtl F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f128 F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1f64x F
+GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f128 F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist
index dc506b8..9e647f7 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist
@@ -1125,6 +1125,14 @@ GLIBC_2.35 fminimumf64x F
GLIBC_2.35 fminimuml F
GLIBC_2.35 fsqrt F
GLIBC_2.35 fsqrtl F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f128 F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1f64x F
+GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f128 F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
index 818e2c4..022cb27 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
@@ -1252,6 +1252,14 @@ GLIBC_2.4 truncl F
GLIBC_2.4 y0l F
GLIBC_2.4 y1l F
GLIBC_2.4 ynl F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f128 F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1f64x F
+GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f128 F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
index 03d51e1..1453d09 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
@@ -1252,6 +1252,14 @@ GLIBC_2.4 truncl F
GLIBC_2.4 y0l F
GLIBC_2.4 y1l F
GLIBC_2.4 ynl F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f128 F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1f64x F
+GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f128 F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libm.abilist b/sysdeps/unix/sysv/linux/sh/be/libm.abilist
index b6a03d1..044945d 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libm.abilist
@@ -848,6 +848,12 @@ GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.4 exp2l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f32 F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libm.abilist b/sysdeps/unix/sysv/linux/sh/le/libm.abilist
index b6a03d1..044945d 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libm.abilist
@@ -848,6 +848,12 @@ GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
GLIBC_2.4 exp2l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f32 F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
index 312544d..92b6a77 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
@@ -1259,6 +1259,14 @@ GLIBC_2.4 truncl F
GLIBC_2.4 y0l F
GLIBC_2.4 y1l F
GLIBC_2.4 ynl F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f128 F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1f64x F
+GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f128 F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
index 391b583..258058b 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
@@ -1149,6 +1149,14 @@ GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f128 F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1f64x F
+GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f128 F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
index 47b5b91..66f264d 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
@@ -1182,6 +1182,14 @@ GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f128 F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1f64x F
+GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f128 F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
index 809c5f4..877d64a 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
@@ -1182,6 +1182,14 @@ GLIBC_2.35 hypotf F
GLIBC_2.38 fmod F
GLIBC_2.38 fmodf F
GLIBC_2.39 exp10 F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f128 F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1f64x F
+GLIBC_2.40 log10p1l F
GLIBC_2.40 log2p1 F
GLIBC_2.40 log2p1f F
GLIBC_2.40 log2p1f128 F
diff --git a/sysdeps/x86_64/fpu/libm-test-ulps b/sysdeps/x86_64/fpu/libm-test-ulps
index 97876ca..f46ac59 100644
--- a/sysdeps/x86_64/fpu/libm-test-ulps
+++ b/sysdeps/x86_64/fpu/libm-test-ulps
@@ -1759,6 +1759,30 @@ float: 1
Function: "log10_vlen8_avx2":
float: 1
+Function: "log10p1":
+double: 1
+float: 1
+float128: 3
+ldouble: 2
+
+Function: "log10p1_downward":
+double: 2
+float: 1
+float128: 2
+ldouble: 4
+
+Function: "log10p1_towardzero":
+double: 2
+float: 2
+float128: 2
+ldouble: 4
+
+Function: "log10p1_upward":
+double: 2
+float: 1
+float128: 3
+ldouble: 3
+
Function: "log1p":
double: 1
float: 1