diff options
| author | Joseph Myers <josmyers@redhat.com> | 2024-06-17 13:48:13 +0000 |
|---|---|---|
| committer | Joseph Myers <josmyers@redhat.com> | 2024-06-17 13:48:13 +0000 |
| commit | 55eb99e9a9d840ba452b128be14d6529c2dde039 (patch) | |
| tree | 6810f148fb04ca7217c67aa3f2e10b72d86a8d2d /sysdeps | |
| parent | bb014f50c4a0c8d8db1ba5af55c104e430b5533d (diff) | |
| download | glibc-55eb99e9a9d840ba452b128be14d6529c2dde039.tar.xz glibc-55eb99e9a9d840ba452b128be14d6529c2dde039.zip | |
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')
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 e2b2492e2f..8446b81af8 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 018e0a8871..696d132c70 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 9c204ff9b3..d8cceb51b1 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 0000000000..d00fc95570 --- /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 88010e5b2d..c999fc00ce 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 394e5988cb..256717f5a5 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 96657c9676..71ee2b67b8 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 40027fc3d3..5737e6dd1c 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 5967de89a1..f0e96fb621 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 57affc37fc..315a4532ec 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 e225b995c1..20da5b77d7 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 e225b995c1..20da5b77d7 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 2a9f9a6779..a8181e88f0 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 6fa800390d..b10d92f560 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 b6b1aa0289..e760f738b9 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 b225d61eac..1b3f5df285 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 e225b995c1..20da5b77d7 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 cd4cafbe14..89069d51ea 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 604af40dac..bcd47e7b13 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/mi |
