aboutsummaryrefslogtreecommitdiff
path: root/math
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 /math
parentbb014f50c4a0c8d8db1ba5af55c104e430b5533d (diff)
downloadglibc-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 'math')
-rw-r--r--math/Makefile6
-rw-r--r--math/Versions2
-rw-r--r--math/auto-libm-test-in57
-rw-r--r--math/auto-libm-test-out-log10p13063
-rw-r--r--math/bits/mathcalls.h3
-rw-r--r--math/gen-auto-libm-tests.c1
-rwxr-xr-xmath/gen-tgmath-tests.py1
-rw-r--r--math/libm-test-log10p1.inc53
-rw-r--r--math/s_log10p1_template.c49
-rw-r--r--math/test-tgmath.c12
-rw-r--r--math/tgmath.h3
11 files changed, 3249 insertions, 1 deletions
diff --git a/math/Makefile b/math/Makefile
index c55976cba8..95085d9601 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -127,6 +127,7 @@ gen-libm-calls = \
s_fminimum_numF \
s_fminmagF \
s_iseqsigF \
+ s_log10p1F \
s_log2p1F \
s_nanF \
s_nextdownF \
@@ -651,6 +652,7 @@ libm-test-funcs-auto = \
lgamma \
log \
log10 \
+ log10p1 \
log1p \
log2 \
log2p1 \
@@ -962,6 +964,7 @@ tgmath3-macros = \
llround \
log \
log10 \
+ log10p1 \
log1p \
log2 \
log2p1 \
@@ -1376,6 +1379,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-s_log10p1.c += -fno-builtin-log10p1l
CFLAGS-w_log1p.c += -fno-builtin-log1pl -fno-builtin-logp1l
CFLAGS-e_log2.c += -fno-builtin-log2l
CFLAGS-s_log2p1.c += -fno-builtin-log2p1l
@@ -1502,6 +1506,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-s_log10p1.c += -fno-builtin-log10p1f32x -fno-builtin-log10p1f64
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
@@ -1617,6 +1622,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-s_log10p1f.c += -fno-builtin-log10p1f32
CFLAGS-w_log1pf.c += -fno-builtin-log1pf32 -fno-builtin-logp1f32
CFLAGS-e_log2f.c += -fno-builtin-log2f32
CFLAGS-s_log2p1f.c += -fno-builtin-log2p1f32
diff --git a/math/Versions b/math/Versions
index f6ddd2f4f7..633722f8c6 100644
--- a/math/Versions
+++ b/math/Versions
@@ -642,9 +642,11 @@ libm {
GLIBC_2.40 {
# Functions not involving _Float64x or _Float128, for all configurations.
log2p1; log2p1f; log2p1l; log2p1f32; log2p1f64; log2p1f32x;
+ log10p1; log10p1f; log10p1l; log10p1f32; log10p1f64; log10p1f32x;
logp1; logp1f; logp1l; logp1f32; logp1f64; logp1f32x;
# Functions involving _Float64x or _Float128, for some configurations.
log2p1f64x; log2p1f128;
+ log10p1f64x; log10p1f128;
logp1f64x; logp1f128;
}
}
diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in
index 8982338b3a..16b1d3e0c6 100644
--- a/math/auto-libm-test-in
+++ b/math/auto-libm-test-in
@@ -6576,6 +6576,63 @@ log10 0x9.b3727e3feb538p-4
log10 0xf.bf1b2p-4
log10 0x1.6b5f7ap+96
+log10p1 0
+log10p1 -0
+log10p1 e-1
+log10p1 -0.25
+log10p1 -0.875
+log10p1 0x1p-5
+log10p1 0x1p-10
+log10p1 0x1p-15
+log10p1 0x1p-20
+log10p1 0x1p-25
+log10p1 0x1p-30
+log10p1 0x1p-35
+log10p1 0x1p-40
+log10p1 0x1p-45
+log10p1 0x1p-50
+log10p1 0x1p-55
+log10p1 0x1p-60
+log10p1 0x1p-100
+log10p1 0x1p-600
+log10p1 0x1p-10000
+log10p1 min
+log10p1 min_subnorm
+log10p1 -min
+log10p1 -min_subnorm
+log10p1 0x1p10
+log10p1 0x1p20
+log10p1 0x1p30
+log10p1 0x1p50
+log10p1 0x1p60
+log10p1 0x1p100
+log10p1 0x1p1000
+log10p1 0x6.a0cf42befce9ed4085ef59254b48p-4
+log10p1 max
+log10p1 0x1p-125
+log10p1 0x1p-1021
+log10p1 0x1p-16381
+log10p1 -0x1p-125
+log10p1 -0x1p-1021
+log10p1 -0x1p-16381
+
+log10p1 0x7.2a4368p-4
+log10p1 0x6.d3a118p-4
+log10p1 0x5.03f228p+0
+log10p1 0x7.264963888ac9p-4
+log10p1 0x8.786bdp-4
+log10p1 0x7.89dc17790eeb4p-4
+log10p1 0x9.81ccf8887c24a7bp-4
+log10p1 0xa.5028608bd65f38dp-4
+log10p1 0x5.bf78873e20a2d468p-4
+log10p1 0x7.aa5198p-4
+log10p1 0x2.564fap+0
+log10p1 0x7.fc242a2235222ef8p-4
+log10p1 -0x4.f37d3c9ce0b14bdd86eb157df5d4p-4
+log10p1 0x7.2eca50c4d93196362b4f37f6e8dcp-4
+log10p1 -0x6.3fef3067427e43dfcde9e48f74bcp-4
+log10p1 0x6.af53d00fd2845d4772260ef5adc4p-4
+
log1p 0
log1p -0 no-mathvec
log1p e-1
diff --git a/math/auto-libm-test-out-log10p1 b/math/auto-libm-test-out-log10p1
new file mode 100644
index 0000000000..3102161374
--- /dev/null
+++ b/math/auto-libm-test-out-log10p1
@@ -0,0 +1,3063 @@
+log10p1 0
+= log10p1 downward binary32 0x0p+0 : 0x0p+0 : inexact-ok
+= log10p1 tonearest binary32 0x0p+0 : 0x0p+0 : inexact-ok
+= log10p1 towardzero binary32 0x0p+0 : 0x0p+0 : inexact-ok
+= log10p1 upward binary32 0x0p+0 : 0x0p+0 : inexact-ok
+= log10p1 downward binary64 0x0p+0 : 0x0p+0 : inexact-ok
+= log10p1 tonearest binary64 0x0p+0 : 0x0p+0 : inexact-ok
+= log10p1 towardzero binary64 0x0p+0 : 0x0p+0 : inexact-ok
+= log10p1 upward binary64 0x0p+0 : 0x0p+0 : inexact-ok
+= log10p1 downward intel96 0x0p+0 : 0x0p+0 : inexact-ok
+= log10p1 tonearest intel96 0x0p+0 : 0x0p+0 : inexact-ok
+= log10p1 towardzero intel96 0x0p+0 : 0x0p+0 : inexact-ok
+= log10p1 upward intel96 0x0p+0 : 0x0p+0 : inexact-ok
+= log10p1 downward m68k96 0x0p+0 : 0x0p+0 : inexact-ok
+= log10p1 tonearest m68k96 0x0p+0 : 0x0p+0 : inexact-ok
+= log10p1 towardzero m68k96 0x0p+0 : 0x0p+0 : inexact-ok
+= log10p1 upward m68k96 0x0p+0 : 0x0p+0 : inexact-ok
+= log10p1 downward binary128 0x0p+0 : 0x0p+0 : inexact-ok
+= log10p1 tonearest binary128 0x0p+0 : 0x0p+0 : inexact-ok
+= log10p1 towardzero binary128 0x0p+0 : 0x0p+0 : inexact-ok
+= log10p1 upward binary128 0x0p+0 : 0x0p+0 : inexact-ok
+= log10p1 downward ibm128 0x0p+0 : 0x0p+0 : inexact-ok
+= log10p1 tonearest ibm128 0x0p+0 : 0x0p+0 : inexact-ok
+= log10p1 towardzero ibm128 0x0p+0 : 0x0p+0 : inexact-ok
+= log10p1 upward ibm128 0x0p+0 : 0x0p+0 : inexact-ok
+log10p1 -0
+= log10p1 downward binary32 -0x0p+0 : -0x0p+0 : inexact-ok
+= log10p1 tonearest binary32 -0x0p+0 : -0x0p+0 : inexact-ok
+= log10p1 towardzero binary32 -0x0p+0 : -0x0p+0 : inexact-ok
+= log10p1 upward binary32 -0x0p+0 : -0x0p+0 : inexact-ok
+= log10p1 downward binary64 -0x0p+0 : -0x0p+0 : inexact-ok
+= log10p1 tonearest binary64 -0x0p+0 : -0x0p+0 : inexact-ok
+= log10p1 towardzero binary64 -0x0p+0 : -0x0p+0 : inexact-ok
+= log10p1 upward binary64 -0x0p+0 : -0x0p+0 : inexact-ok
+= log10p1 downward intel96 -0x0p+0 : -0x0p+0 : inexact-ok
+= log10p1 tonearest intel96 -0x0p+0 : -0x0p+0 : inexact-ok
+= log10p1 towardzero intel96 -0x0p+0 : -0x0p+0 : inexact-ok
+= log10p1 upward intel96 -0x0p+0 : -0x0p+0 : inexact-ok
+= log10p1 downward m68k96 -0x0p+0 : -0x0p+0 : inexact-ok
+= log10p1 tonearest m68k96 -0x0p+0 : -0x0p+0 : inexact-ok
+= log10p1 towardzero m68k96 -0x0p+0 : -0x0p+0 : inexact-ok
+= log10p1 upward m68k96 -0x0p+0 : -0x0p+0 : inexact-ok
+= log10p1 downward binary128 -0x0p+0 : -0x0p+0 : inexact-ok
+= log10p1 tonearest binary128 -0x0p+0 : -0x0p+0 : inexact-ok
+= log10p1 towardzero binary128 -0x0p+0 : -0x0p+0 : inexact-ok
+= log10p1 upward binary128 -0x0p+0 : -0x0p+0 : inexact-ok
+= log10p1 downward ibm128 -0x0p+0 : -0x0p+0 : inexact-ok
+= log10p1 tonearest ibm128 -0x0p+0 : -0x0p+0 : inexact-ok
+= log10p1 towardzero ibm128 -0x0p+0 : -0x0p+0 : inexact-ok
+= log10p1 upward ibm128 -0x0p+0 : -0x0p+0 : inexact-ok
+log10p1 e-1
+= log10p1 downward binary32 0x1.b7e152p+0 : 0x6.f2decp-4 : inexact-ok
+= log10p1 tonearest binary32 0x1.b7e152p+0 : 0x6.f2dec8p-4 : inexact-ok
+= log10p1 towardzero binary32 0x1.b7e152p+0 : 0x6.f2decp-4 : inexact-ok
+= log10p1 upward binary32 0x1.b7e152p+0 : 0x6.f2dec8p-4 : inexact-ok
+= log10p1 downward binary64 0x1.b7e152p+0 : 0x6.f2dec6dc3adfp-4 : inexact-ok
+= log10p1 tonearest binary64 0x1.b7e152p+0 : 0x6.f2dec6dc3adfp-4 : inexact-ok
+= log10p1 towardzero binary64 0x1.b7e152p+0 : 0x6.f2dec6dc3adfp-4 : inexact-ok
+= log10p1 upward binary64 0x1.b7e152p+0 : 0x6.f2dec6dc3adf4p-4 : inexact-ok
+= log10p1 downward intel96 0x1.b7e152p+0 : 0x6.f2dec6dc3adf1c3p-4 : inexact-ok
+= log10p1 tonearest intel96 0x1.b7e152p+0 : 0x6.f2dec6dc3adf1c38p-4 : inexact-ok
+= log10p1 towardzero intel96 0x1.b7e152p+0 : 0x6.f2dec6dc3adf1c3p-4 : inexact-ok
+= log10p1 upward intel96 0x1.b7e152p+0 : 0x6.f2dec6dc3adf1c38p-4 : inexact-ok
+= log10p1 downward m68k96 0x1.b7e152p+0 : 0x6.f2dec6dc3adf1c3p-4 : inexact-ok
+= log10p1 tonearest m68k96 0x1.b7e152p+0 : 0x6.f2dec6dc3adf1c38p-4 : inexact-ok
+= log10p1 towardzero m68k96 0x1.b7e152p+0 : 0x6.f2dec6dc3adf1c3p-4 : inexact-ok
+= log10p1 upward m68k96 0x1.b7e152p+0 : 0x6.f2dec6dc3adf1c38p-4 : inexact-ok
+= log10p1 downward binary128 0x1.b7e152p+0 : 0x6.f2dec6dc3adf1c3688ce28874f6cp-4 : inexact-ok
+= log10p1 tonearest binary128 0x1.b7e152p+0 : 0x6.f2dec6dc3adf1c3688ce28874f7p-4 : inexact-ok
+= log10p1 towardzero binary128 0x1.b7e152p+0 : 0x6.f2dec6dc3adf1c3688ce28874f6cp-4 : inexact-ok
+= log10p1 upward binary128 0x1.b7e152p+0 : 0x6.f2dec6dc3adf1c3688ce28874f7p-4 : inexact-ok
+= log10p1 downward ibm128 0x1.b7e152p+0 : 0x6.f2dec6dc3adf1c3688ce28874ep-4 : inexact-ok
+= log10p1 tonearest ibm128 0x1.b7e152p+0 : 0x6.f2dec6dc3adf1c3688ce28875p-4 : inexact-ok
+= log10p1 towardzero ibm128 0x1.b7e152p+0 : 0x6.f2dec6dc3adf1c3688ce28874ep-4 : inexact-ok
+= log10p1 upward ibm128 0x1.b7e152p+0 : 0x6.f2dec6dc3adf1c3688ce28875p-4 : inexact-ok
+= log10p1 downward binary32 0x1.b7e15p+0 : 0x6.f2decp-4 : inexact-ok
+= log10p1 tonearest binary32 0x1.b7e15p+0 : 0x6.f2decp-4 : inexact-ok
+= log10p1 towardzero binary32 0x1.b7e15p+0 : 0x6.f2decp-4 : inexact-ok
+= log10p1 upward binary32 0x1.b7e15p+0 : 0x6.f2dec8p-4 : inexact-ok
+= log10p1 downward binary64 0x1.b7e15p+0 : 0x6.f2dec1bf69104p-4 : inexact-ok
+= log10p1 tonearest binary64 0x1.b7e15p+0 : 0x6.f2dec1bf69108p-4 : inexact-ok
+= log10p1 towardzero binary64 0x1.b7e15p+0 : 0x6.f2dec1bf69104p-4 : inexact-ok
+= log10p1 upward binary64 0x1.b7e15p+0 : 0x6.f2dec1bf69108p-4 : inexact-ok
+= log10p1 downward intel96 0x1.b7e15p+0 : 0x6.f2dec1bf69107298p-4 : inexact-ok
+= log10p1 tonearest intel96 0x1.b7e15p+0 : 0x6.f2dec1bf691072ap-4 : inexact-ok
+= log10p1 towardzero intel96 0x1.b7e15p+0 : 0x6.f2dec1bf69107298p-4 : inexact-ok
+= log10p1 upward intel96 0x1.b7e15p+0 : 0x6.f2dec1bf691072ap-4 : inexact-ok
+= log10p1 downward m68k96 0x1.b7e15p+0 : 0x6.f2dec1bf69107298p-4 : inexact-ok
+= log10p1 tonearest m68k96 0x1.b7e15p+0 : 0x6.f2dec1bf691072ap-4 : inexact-ok
+= log10p1 towardzero m68k96 0x1.b7e15p+0 : 0x6.f2dec1bf69107298p-4 : inexact-ok
+= log10p1 upward m68k96 0x1.b7e15p+0 : 0x6.f2dec1bf691072ap-4 : inexact-ok
+= log10p1 downward binary128 0x1.b7e15p+0 : 0x6.f2dec1bf6910729e025b16fcf01cp-4 : inexact-ok
+= log10p1 tonearest binary128 0x1.b7e15p+0 : 0x6.f2dec1bf6910729e025b16fcf01cp-4 : inexact-ok
+= log10p1 towardzero binary128 0x1.b7e15p+0 : 0x6.f2dec1bf6910729e025b16fcf01cp-4 : inexact-ok
+= log10p1 upward binary128 0x1.b7e15p+0 : 0x6.f2dec1bf6910729e025b16fcf02p-4 : inexact-ok
+= log10p1 downward ibm128 0x1.b7e15p+0 : 0x6.f2dec1bf6910729e025b16fcfp-4 : inexact-ok
+= log10p1 tonearest ibm128 0x1.b7e15p+0 : 0x6.f2dec1bf6910729e025b16fcfp-4 : inexact-ok
+= log10p1 towardzero ibm128 0x1.b7e15p+0 : 0x6.f2dec1bf6910729e025b16fcfp-4 : inexact-ok
+= log10p1 upward ibm128 0x1.b7e15p+0 : 0x6.f2dec1bf6910729e025b16fcf2p-4 : inexact-ok
+= log10p1 downward binary64 0x1.b7e151628aed3p+0 : 0x6.f2dec549b9438p-4 : inexact-ok
+= log10p1 tonearest binary64 0x1.b7e151628aed3p+0 : 0x6.f2dec549b9438p-4 : inexact-ok
+= log10p1 towardzero binary64 0x1.b7e151628aed3p+0 : 0x6.f2dec549b9438p-4 : inexact-ok
+= log10p1 upward binary64 0x1.b7e151628aed3p+0 : 0x6.f2dec549b943cp-4 : inexact-ok
+= log10p1 downward intel96 0x1.b7e151628aed3p+0 : 0x6.f2dec549b9439ae8p-4 : inexact-ok
+= log10p1 tonearest intel96 0x1.b7e151628aed3p+0 : 0x6.f2dec549b9439afp-4 : inexact-ok
+= log10p1 towardzero intel96 0x1.b7e151628aed3p+0 : 0x6.f2dec549b9439ae8p-4 : inexact-ok
+= log10p1 upward intel96 0x1.b7e151628aed3p+0 : 0x6.f2dec549b9439afp-4 : inexact-ok
+= log10p1 downward m68k96 0x1.b7e151628aed3p+0 : 0x6.f2dec549b9439ae8p-4 : inexact-ok
+= log10p1 tonearest m68k96 0x1.b7e151628aed3p+0 : 0x6.f2dec549b9439afp-4 : inexact-ok
+= log10p1 towardzero m68k96 0x1.b7e151628aed3p+0 : 0x6.f2dec549b9439ae8p-4 : inexact-ok
+= log10p1 upward m68k96 0x1.b7e151628aed3p+0 : 0x6.f2dec549b9439afp-4 : inexact-ok
+= log10p1 downward binary128 0x1.b7e151628aed3p+0 : 0x6.f2dec549b9439aef3f7580a63b28p-4 : inexact-ok
+= log10p1 tonearest binary128 0x1.b7e151628aed3p+0 : 0x6.f2dec549b9439aef3f7580a63b2cp-4 : inexact-ok
+= log10p1 towardzero binary128 0x1.b7e151628aed3p+0 : 0x6.f2dec549b9439aef3f7580a63b28p-4 : inexact-ok
+= log10p1 upward binary128 0x1.b7e151628aed3p+0 : 0x6.f2dec549b9439aef3f7580a63b2cp-4 : inexact-ok
+= log10p1 downward ibm128 0x1.b7e151628aed3p+0 : 0x6.f2dec549b9439aef3f7580a63ap-4 : inexact-ok
+= log10p1 tonearest ibm128 0x1.b7e151628aed3p+0 : 0x6.f2dec549b9439aef3f7580a63cp-4 : inexact-ok
+= log10p1 towardzero ibm128 0x1.b7e151628aed3p+0 : 0x6.f2dec549b9439aef3f7580a63ap-4 : inexact-ok
+= log10p1 upward ibm128 0x1.b7e151628aed3p+0 : 0x6.f2dec549b9439aef3f7580a63cp-4 : inexact-ok
+= log10p1 downward binary64 0x1.b7e151628aed2p+0 : 0x6.f2dec549b9434p-4 : inexact-ok
+= log10p1 tonearest binary64 0x1.b7e151628aed2p+0 : 0x6.f2dec549b9438p-4 : inexact-ok
+= log10p1 towardzero binary64 0x1.b7e151628aed2p+0 : 0x6.f2dec549b9434p-4 : inexact-ok
+= log10p1 upward binary64 0x1.b7e151628aed2p+0 : 0x6.f2dec549b9438p-4 : inexact-ok
+= log10p1 downward intel96 0x1.b7e151628aed2p+0 : 0x6.f2dec549b9437208p-4 : inexact-ok
+= log10p1 tonearest intel96 0x1.b7e151628aed2p+0 : 0x6.f2dec549b9437208p-4 : inexact-ok
+= log10p1 towardzero intel96 0x1.b7e151628aed2p+0 : 0x6.f2dec549b9437208p-4 : inexact-ok
+= log10p1 upward intel96 0x1.b7e151628aed2p+0 : 0x6.f2dec549b943721p-4 : inexact-ok
+= log10p1 downward m68k96 0x1.b7e151628aed2p+0 : 0x6.f2dec549b9437208p-4 : inexact-ok
+= log10p1 tonearest m68k96 0x1.b7e151628aed2p+0 : 0x6.f2dec549b9437208p-4 : inexact-ok
+= log10p1 towardzero m68k96 0x1.b7e151628aed2p+0 : 0x6.f2dec549b9437208p-4 : inexact-ok
+= log10p1 upward m68k96 0x1.b7e151628aed2p+0 : 0x6.f2dec549b943721p-4 : inexact-ok
+= log10p1 downward binary128 0x1.b7e151628aed2p+0 : 0x6.f2dec549b9437208b105fe9ad56p-4 : inexact-ok
+= log10p1 tonearest binary128 0x1.b7e151628aed2p+0 : 0x6.f2dec549b9437208b105fe9ad564p-4 : inexact-ok
+= log10p1 towardzero binary128 0x1.b7e151628aed2p+0 : 0x6.f2dec549b9437208b105fe9ad56p-4 : inexact-ok
+= log10p1 upward binary128 0x1.b7e151628aed2p+0 : 0x6.f2dec549b9437208b105fe9ad564p-4 : inexact-ok
+= log10p1 downward ibm128 0x1.b7e151628aed2p+0 : 0x6.f2dec549b9437208b105fe9ad4p-4 : inexact-ok
+= log10p1 tonearest ibm128 0x1.b7e151628aed2p+0 : 0x6.f2dec549b9437208b105fe9ad6p-4 : inexact-ok
+= log10p1 towardzero ibm128 0x1.b7e151628aed2p+0 : 0x6.f2dec549b9437208b105fe9ad4p-4 : inexact-ok
+= log10p1 upward ibm128 0x1.b7e151628aed2p+0 : 0x6.f2dec549b9437208b105fe9ad6p-4 : inexact-ok
+= log10p1 downward intel96 0x1.b7e151628aed2a6cp+0 : 0x6.f2dec549b9438ca8p-4 : inexact-ok
+= log10p1 tonearest intel96 0x1.b7e151628aed2a6cp+0 : 0x6.f2dec549b9438cbp-4 : inexact-ok
+= log10p1 towardzero intel96 0x1.b7e151628aed2a6cp+0 : 0x6.f2dec549b9438ca8p-4 : inexact-ok
+= log10p1 upward intel96 0x1.b7e151628aed2a6cp+0 : 0x6.f2dec549b9438cbp-4 : inexact-ok
+= log10p1 downward m68k96 0x1.b7e151628aed2a6cp+0 : 0x6.f2dec549b9438ca8p-4 : inexact-ok
+= log10p1 tonearest m68k96 0x1.b7e151628aed2a6cp+0 : 0x6.f2dec549b9438cbp-4 : inexact-ok
+= log10p1 towardzero m68k96 0x1.b7e151628aed2a6cp+0 : 0x6.f2dec549b9438ca8p-4 : inexact-ok
+= log10p1 upward m68k96 0x1.b7e151628aed2a6cp+0 : 0x6.f2dec549b9438cbp-4 : inexact-ok
+= log10p1 downward binary128 0x1.b7e151628aed2a6cp+0 : 0x6.f2dec549b9438cacde4d208fc208p-4 : inexact-ok
+= log10p1 tonearest binary128 0x1.b7e151628aed2a6cp+0 : 0x6.f2dec549b9438cacde4d208fc20cp-4 : inexact-ok
+= log10p1 towardzero binary128 0x1.b7e151628aed2a6cp+0 : 0x6.f2dec549b9438cacde4d208fc208p-4 : inexact-ok
+= log10p1 upward binary128 0x1.b7e151628aed2a6cp+0 : 0x6.f2dec549b9438cacde4d208fc20cp-4 : inexact-ok
+= log10p1 downward ibm128 0x1.b7e151628aed2a6cp+0 : 0x6.f2dec549b9438cacde4d208fc2p-4 : inexact-ok
+= log10p1 tonearest ibm128 0x1.b7e151628aed2a6cp+0 : 0x6.f2dec549b9438cacde4d208fc2p-4 : inexact-ok
+= log10p1 towardzero ibm128 0x1.b7e151628aed2a6cp+0 : 0x6.f2dec549b9438cacde4d208fc2p-4 : inexact-ok
+= log10p1 upward ibm128 0x1.b7e151628aed2a6cp+0 : 0x6.f2dec549b9438cacde4d208fc4p-4 : inexact-ok
+= log10p1 downward intel96 0x1.b7e151628aed2a6ap+0 : 0x6.f2dec549b9438cap-4 : inexact-ok
+= log10p1 tonearest intel96 0x1.b7e151628aed2a6ap+0 : 0x6.f2dec549b9438ca8p-4 : inexact-ok
+= log10p1 towardzero intel96 0x1.b7e151628aed2a6ap+0 : 0x6.f2dec549b9438cap-4 : inexact-ok
+= log10p1 upward intel96 0x1.b7e151628aed2a6ap+0 : 0x6.f2dec549b9438ca8p-4 : inexact-ok
+= log10p1 downward m68k96 0x1.b7e151628aed2a6ap+0 : 0x6.f2dec549b9438cap-4 : inexact-ok
+= log10p1 tonearest m68k96 0x1.b7e151628aed2a6ap+0 : 0x6.f2dec549b9438ca8p-4 : inexact-ok
+= log10p1 towardzero m68k96 0x1.b7e151628aed2a6ap+0 : 0x6.f2dec549b9438cap-4 : inexact-ok
+= log10p1 upward m68k96 0x1.b7e151628aed2a6ap+0 : 0x6.f2dec549b9438ca8p-4 : inexact-ok
+= log10p1 downward binary128 0x1.b7e151628aed2a6ap+0 : 0x6.f2dec549b9438ca7c17b529f809cp-4 : inexact-ok
+= log10p1 tonearest binary128 0x1.b7e151628aed2a6ap+0 : 0x6.f2dec549b9438ca7c17b529f809cp-4 : inexact-ok
+= log10p1 towardzero binary128 0x1.b7e151628aed2a6ap+0 : 0x6.f2dec549b9438ca7c17b529f809cp-4 : inexact-ok
+= log10p1 upward binary128 0x1.b7e151628aed2a6ap+0 : 0x6.f2dec549b9438ca7c17b529f80ap-4 : inexact-ok
+= log10p1 downward ibm128 0x1.b7e151628aed2a6ap+0 : 0x6.f2dec549b9438ca7c17b529f8p-4 : inexact-ok
+= log10p1 tonearest ibm128 0x1.b7e151628aed2a6ap+0 : 0x6.f2dec549b9438ca7c17b529f8p-4 : inexact-ok
+= log10p1 towardzero ibm128 0x1.b7e151628aed2a6ap+0 : 0x6.f2dec549b9438ca7c17b529f8p-4 : inexact-ok
+= log10p1 upward ibm128 0x1.b7e151628aed2a6ap+0 : 0x6.f2dec549b9438ca7c17b529f82p-4 : inexact-ok
+= log10p1 downward binary128 0x1.b7e151628aed2a6abf7158809cf5p+0 : 0x6.f2dec549b9438ca9aadd557d699cp-4 : inexact-ok
+= log10p1 tonearest binary128 0x1.b7e151628aed2a6abf7158809cf5p+0 : 0x6.f2dec549b9438ca9aadd557d69ap-4 : inexact-ok
+= log10p1 towardzero binary128 0x1.b7e151628aed2a6abf7158809cf5p+0 : 0x6.f2dec549b9438ca9aadd557d699cp-4 : inexact-ok
+= log10p1 upward binary128 0x1.b7e151628aed2a6abf7158809cf5p+0 : 0x6.f2dec549b9438ca9aadd557d69ap-4 : inexact-ok
+= log10p1 downward binary128 0x1.b7e151628aed2a6abf7158809cf4p+0 : 0x6.f2dec549b9438ca9aadd557d699cp-4 : inexact-ok
+= log10p1 tonearest binary128 0x1.b7e151628aed2a6abf7158809cf4p+0 : 0x6.f2dec549b9438ca9aadd557d699cp-4 : inexact-ok
+= log10p1 towardzero binary128 0x1.b7e151628aed2a6abf7158809cf4p+0 : 0x6.f2dec549b9438ca9aadd557d699cp-4 : inexact-ok
+= log10p1 upward binary128 0x1.b7e151628aed2a6abf7158809cf4p+0 : 0x6.f2dec549b9438ca9aadd557d69ap-4 : inexact-ok
+= log10p1 downward binary128 0x1.b7e151628aed2a6abf7158809dp+0 : 0x6.f2dec549b9438ca9aadd557d69b8p-4 : inexact-ok
+= log10p1 tonearest binary128 0x1.b7e151628aed2a6abf7158809dp+0 : 0x6.f2dec549b9438ca9aadd557d69bcp-4 : inexact-ok
+= log10p1 towardzero binary128 0x1.b7e151628aed2a6abf7158809dp+0 : 0x6.f2dec549b9438ca9aadd557d69b8p-4 : inexact-ok
+= log10p1 upward binary128 0x1.b7e151628aed2a6abf7158809dp+0 : 0x6.f2dec549b9438ca9aadd557d69bcp-4 : inexact-ok
+= log10p1 downward ibm128 0x1.b7e151628aed2a6abf7158809dp+0 : 0x6.f2dec549b9438ca9aadd557d68p-4 : inexact-ok
+= log10p1 tonearest ibm128 0x1.b7e151628aed2a6abf7158809dp+0 : 0x6.f2dec549b9438ca9aadd557d6ap-4 : inexact-ok
+= log10p1 towardzero ibm128 0x1.b7e151628aed2a6abf7158809dp+0 : 0x6.f2dec549b9438ca9aadd557d68p-4 : inexact-ok
+= log10p1 upward ibm128 0x1.b7e151628aed2a6abf7158809dp+0 : 0x6.f2dec549b9438ca9aadd557d6ap-4 : inexact-ok
+= log10p1 downward binary128 0x1.b7e151628aed2a6abf7158809c8p+0 : 0x6.f2dec549b9438ca9aadd557d687p-4 : inexact-ok
+= log10p1 tonearest binary128 0x1.b7e151628aed2a6abf7158809c8p+0 : 0x6.f2dec549b9438ca9aadd557d6874p-4 : inexact-ok
+= log10p1 towardzero binary128 0x1.b7e151628aed2a6abf7158809c8p+0 : 0x6.f2dec549b9438ca9aadd557d687p-4 : inexact-ok
+= log10p1 upward binary128 0x1.b7e151628aed2a6abf7158809c8p+0 : 0x6.f2dec549b9438ca9aadd557d6874p-4 : inexact-ok
+= log10p1 downward ibm128 0x1.b7e151628aed2a6abf7158809c8p+0 : 0x6.f2dec549b9438ca9aadd557d68p-4 : inexact-ok
+= log10p1 tonearest ibm128 0x1.b7e151628aed2a6abf7158809c8p+0 : 0x6.f2dec549b9438ca9aadd557d68p-4 : inexact-ok
+= log10p1 towardzero ibm128 0x1.b7e151628aed2a6abf7158809c8p+0 : 0x6.f2dec549b9438ca9aadd557d68p-4 : inexact-ok
+= log10p1 upward ibm128 0x1.b7e151628aed2a6abf7158809c8p+0 : 0x6.f2dec549b9438ca9aadd557d6ap-4 : inexact-ok
+log10p1 -0.25
+= log10p1 downward binary32 -0x4p-4 : -0x1.ffbfc4p-4 : inexact-ok
+= log10p1 tonearest binary32 -0x4p-4 : -0x1.ffbfc2p-4 : inexact-ok
+= log10p1 towardzero binary32 -0x4p-4 : -0x1.ffbfc2p-4 : inexact-ok
+= log10p1 upward binary32 -0x4p-4 : -0x1.ffbfc2p-4 : inexact-ok
+= log10p1 downward binary64 -0x4p-4 : -0x1.ffbfc2bbc7804p-4 : inexact-ok
+= log10p1 tonearest binary64 -0x4p-4 : -0x1.ffbfc2bbc7803p-4 : inexact-ok
+= log10p1 towardzero binary64 -0x4p-4 : -0x1.ffbfc2bbc7803p-4 : inexact-ok
+= log10p1 upward binary64 -0x4p-4 : -0x1.ffbfc2bbc7803p-4 : inexact-ok
+= log10p1 downward intel96 -0x4p-4 : -0x1.ffbfc2bbc780375ap-4 : inexact-ok
+= log10p1 tonearest intel96 -0x4p-4 : -0x1.ffbfc2bbc7803758p-4 : inexact-ok
+= log10p1 towardzero intel96 -0x4p-4 : -0x1.ffbfc2bbc7803758p-4 : inexact-ok
+= log10p1 upward intel96 -0x4p-4 : -0x1.ffbfc2bbc7803758p-4 : inexact-ok
+= log10p1 downward m68k96 -0x4p-4 : -0x1.ffbfc2bbc780375ap-4 : inexact-ok
+= log10p1 tonearest m68k96 -0x4p-4 : -0x1.ffbfc2bbc7803758p-4 : inexact-ok
+= log10p1 towardzero m68k96 -0x4p-4 : -0x1.ffbfc2bbc7803758p-4 : inexact-ok
+= log10p1 upward m68k96 -0x4p-4 : -0x1.ffbfc2bbc7803758p-4 : inexact-ok
+= log10p1 downward binary128 -0x4p-4 : -0x1.ffbfc2bbc780375837c4b0b84f39p-4 : inexact-ok
+= log10p1 tonearest binary128 -0x4p-4 : -0x1.ffbfc2bbc780375837c4b0b84f39p-4 : inexact-ok
+= log10p1 towardzero binary128 -0x4p-4 : -0x1.ffbfc2bbc780375837c4b0b84f38p-4 : inexact-ok
+= log10p1 upward binary128 -0x4p-4 : -0x1.ffbfc2bbc780375837c4b0b84f38p-4 : inexact-ok
+= log10p1 downward ibm128 -0x4p-4 : -0x1.ffbfc2bbc780375837c4b0b84f8p-4 : inexact-ok
+= log10p1 tonearest ibm128 -0x4p-4 : -0x1.ffbfc2bbc780375837c4b0b84fp-4 : inexact-ok
+= log10p1 towardzero ibm128 -0x4p-4 : -0x1.ffbfc2bbc780375837c4b0b84fp-4 : inexact-ok
+= log10p1 upward ibm128 -0x4p-4 : -0x1.ffbfc2bbc780375837c4b0b84fp-4 : inexact-ok
+log10p1 -0.875
+= log10p1 downward binary32 -0xep-4 : -0xe.730e8p-4 : inexact-ok
+= log10p1 tonearest binary32 -0xep-4 : -0xe.730e8p-4 : inexact-ok
+= log10p1 towardzero binary32 -0xep-4 : -0xe.730e7p-4 : inexact-ok
+= log10p1 upward binary32 -0xep-4 : -0xe.730e7p-4 : inexact-ok
+= log10p1 downward binary64 -0xep-4 : -0xe.730e7c779b7f8p-4 : inexact-ok
+= log10p1 tonearest binary64 -0xep-4 : -0xe.730e7c779b7fp-4 : inexact-ok
+= log10p1 towardzero binary64 -0xep-4 : -0xe.730e7c779b7fp-4 : inexact-ok
+= log10p1 upward binary64 -0xep-4 : -0xe.730e7c779b7fp-4 : inexact-ok
+= log10p1 downward intel96 -0xep-4 : -0xe.730e7c779b7f365p-4 : inexact-ok
+= log10p1 tonearest intel96 -0xep-4 : -0xe.730e7c779b7f365p-4 : inexact-ok
+= log10p1 towardzero intel96 -0xep-4 : -0xe.730e7c779b7f364p-4 : inexact-ok
+= log10p1 upward intel96 -0xep-4 : -0xe.730e7c779b7f364p-4 : inexact-ok
+= log10p1 downward m68k96 -0xep-4 : -0xe.730e7c779b7f365p-4 : inexact-ok
+= log10p1 tonearest m68k96 -0xep-4 : -0xe.730e7c779b7f365p-4 : inexact-ok
+= log10p1 towardzero m68k96 -0xep-4 : -0xe.730e7c779b7f364p-4 : inexact-ok
+= log10p1 upward m68k96 -0xep-4 : -0xe.730e7c779b7f364p-4 : inexact-ok
+= log10p1 downward binary128 -0xep-4 : -0xe.730e7c779b7f364d74e0682113bp-4 : inexact-ok
+= log10p1 tonearest binary128 -0xep-4 : -0xe.730e7c779b7f364d74e0682113bp-4 : inexact-ok
+= log10p1 towardzero binary128 -0xep-4 : -0xe.730e7c779b7f364d74e0682113a8p-4 : inexact-ok
+= log10p1 upward binary128 -0xep-4 : -0xe.730e7c779b7f364d74e0682113a8p-4 : inexact-ok
+= log10p1 downward ibm128 -0xep-4 : -0xe.730e7c779b7f364d74e0682114p-4 : inexact-ok
+= log10p1 tonearest ibm128 -0xep-4 : -0xe.730e7c779b7f364d74e0682114p-4 : inexact-ok
+= log10p1 towardzero ibm128 -0xep-4 : -0xe.730e7c779b7f364d74e068211p-4 : inexact-ok
+= log10p1 upward ibm128 -0xep-4 : -0xe.730e7c779b7f364d74e068211p-4 : inexact-ok
+log10p1 0x1p-5
+= log10p1 downward binary32 0x8p-8 : 0x3.6bd21p-8 : inexact-ok
+= log10p1 tonearest binary32 0x8p-8 : 0x3.6bd21p-8 : inexact-ok
+= log10p1 towardzero binary32 0x8p-8 : 0x3.6bd21p-8 : inexact-ok
+= log10p1 upward binary32 0x8p-8 : 0x3.6bd214p-8 : inexact-ok
+= log10p1 downward binary64 0x8p-8 : 0x3.6bd211d626f2p-8 : inexact-ok
+= log10p1 tonearest binary64 0