diff options
| author | Joseph Myers <josmyers@redhat.com> | 2024-05-20 13:41:39 +0000 |
|---|---|---|
| committer | Joseph Myers <josmyers@redhat.com> | 2024-05-20 13:41:39 +0000 |
| commit | 79c52daf4740b00bef43e4f5a4281b3480459b38 (patch) | |
| tree | cc15e0f7402870b20dbebf8d539df033806d48b0 /math | |
| parent | cf0ca8d52e1653d4aa4311a4649af8dc541ce6b4 (diff) | |
| download | glibc-79c52daf4740b00bef43e4f5a4281b3480459b38.tar.xz glibc-79c52daf4740b00bef43e4f5a4281b3480459b38.zip | |
Implement C23 log2p1
C23 adds various <math.h> function families originally defined in TS
18661-4. Add the log2p1 functions (log2(1+x): like log1p, but for
base-2 logarithms).
This illustrates the intended structure of implementations of all
these function families: define them initially with a type-generic
template implementation. If someone wishes to add type-specific
implementations, it is likely such implementations can be both faster
and more accurate than the type-generic one and can then override it
for types for which they are implemented (adding benchmarks would be
desirable in such cases to demonstrate that a new implementation is
indeed faster).
The test inputs are copied from those for log1p. Note that these
changes make gen-auto-libm-tests depend on MPFR 4.2 (or later).
The bulk of the changes are fairly generic for any such new function.
(sysdeps/powerpc/nofpu/Makefile only needs changing for those
type-generic templates that use fabs.)
Tested for x86_64 and x86, and with build-many-glibcs.py.
Diffstat (limited to 'math')
| -rw-r--r-- | math/Makefile | 6 | ||||
| -rw-r--r-- | math/Versions | 6 | ||||
| -rw-r--r-- | math/auto-libm-test-in | 51 | ||||
| -rw-r--r-- | math/auto-libm-test-out-log2p1 | 2713 | ||||
| -rw-r--r-- | math/bits/mathcalls.h | 3 | ||||
| -rw-r--r-- | math/gen-auto-libm-tests.c | 1 | ||||
| -rwxr-xr-x | math/gen-tgmath-tests.py | 1 | ||||
| -rw-r--r-- | math/libm-test-log2p1.inc | 53 | ||||
| -rw-r--r-- | math/s_log2p1_template.c | 43 | ||||
| -rw-r--r-- | math/test-tgmath.c | 12 | ||||
| -rw-r--r-- | math/tgmath.h | 3 |
11 files changed, 2891 insertions, 1 deletions
diff --git a/math/Makefile b/math/Makefile index 435939aedb..36024a5039 100644 --- a/math/Makefile +++ b/math/Makefile @@ -127,6 +127,7 @@ gen-libm-calls = \ s_fminimum_numF \ s_fminmagF \ s_iseqsigF \ + s_log2p1F \ s_nanF \ s_nextdownF \ s_significandF \ @@ -650,6 +651,7 @@ libm-test-funcs-auto = \ log10 \ log1p \ log2 \ + log2p1 \ pow \ sin \ sincos \ @@ -892,6 +894,7 @@ tgmath3-macros = \ log10 \ log1p \ log2 \ + log2p1 \ logb \ lrint \ lround \ @@ -1264,6 +1267,7 @@ CFLAGS-e_log.c += -fno-builtin-logl CFLAGS-w_log10.c += -fno-builtin-log10l CFLAGS-w_log1p.c += -fno-builtin-log1pl CFLAGS-e_log2.c += -fno-builtin-log2l +CFLAGS-s_log2p1.c += -fno-builtin-log2p1l CFLAGS-s_logb.c += -fno-builtin-logbl CFLAGS-s_lrint.c += -fno-builtin-lrintl CFLAGS-s_lround.c += -fno-builtin-lroundl @@ -1389,6 +1393,7 @@ 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-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 CFLAGS-s_lrint.c += -fno-builtin-lrintf32x -fno-builtin-lrintf64 CFLAGS-s_lround.c += -fno-builtin-lroundf32x -fno-builtin-lroundf64 @@ -1503,6 +1508,7 @@ CFLAGS-e_logf.c += -fno-builtin-logf32 CFLAGS-w_log10f.c += -fno-builtin-log10f32 CFLAGS-w_log1pf.c += -fno-builtin-log1pf32 CFLAGS-e_log2f.c += -fno-builtin-log2f32 +CFLAGS-s_log2p1f.c += -fno-builtin-log2p1f32 CFLAGS-s_logbf.c += -fno-builtin-logbf32 CFLAGS-s_lrintf.c += -fno-builtin-lrintf32 CFLAGS-s_lroundf.c += -fno-builtin-lroundf32 diff --git a/math/Versions b/math/Versions index 26e15cedea..46b9b87010 100644 --- a/math/Versions +++ b/math/Versions @@ -639,4 +639,10 @@ libm { # No SVID compatible error handling. exp10; } + GLIBC_2.40 { + # Functions not involving _Float64x or _Float128, for all configurations. + log2p1; log2p1f; log2p1l; log2p1f32; log2p1f64; log2p1f32x; + # Functions involving _Float64x or _Float128, for some configurations. + log2p1f64x; log2p1f128; + } } diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in index 05d7ae5002..8982338b3a 100644 --- a/math/auto-libm-test-in +++ b/math/auto-libm-test-in @@ -6664,6 +6664,57 @@ log2 min log2 min_subnorm log2 max +log2p1 0 +log2p1 -0 +log2p1 e-1 +log2p1 -0.25 +log2p1 -0.875 +log2p1 0x1p-5 +log2p1 0x1p-10 +log2p1 0x1p-15 +log2p1 0x1p-20 +log2p1 0x1p-25 +log2p1 0x1p-30 +log2p1 0x1p-35 +log2p1 0x1p-40 +log2p1 0x1p-45 +log2p1 0x1p-50 +log2p1 0x1p-55 +log2p1 0x1p-60 +log2p1 0x1p-100 +log2p1 0x1p-600 +log2p1 0x1p-10000 +log2p1 min +log2p1 min_subnorm +log2p1 -min +log2p1 -min_subnorm +log2p1 0x1p10 +log2p1 0x1p20 +log2p1 0x1p30 +log2p1 0x1p50 +log2p1 0x1p60 +log2p1 0x1p100 +log2p1 0x1p1000 +log2p1 0x6.a0cf42befce9ed4085ef59254b48p-4 +log2p1 max + +log2p1 0x7.2a4368p-4 +log2p1 0x6.d3a118p-4 +log2p1 0x5.03f228p+0 +log2p1 0x7.264963888ac9p-4 +log2p1 0x8.786bdp-4 +log2p1 0x7.89dc17790eeb4p-4 +log2p1 0x9.81ccf8887c24a7bp-4 +log2p1 0xa.5028608bd65f38dp-4 +log2p1 0x5.bf78873e20a2d468p-4 +log2p1 0x7.aa5198p-4 +log2p1 0x2.564fap+0 +log2p1 0x7.fc242a2235222ef8p-4 +log2p1 -0x4.f37d3c9ce0b14bdd86eb157df5d4p-4 +log2p1 0x7.2eca50c4d93196362b4f37f6e8dcp-4 +log2p1 -0x6.3fef3067427e43dfcde9e48f74bcp-4 +log2p1 0x6.af53d00fd2845d4772260ef5adc4p-4 + mul 0 0 mul 0 -0 mul -0 0 diff --git a/math/auto-libm-test-out-log2p1 b/math/auto-libm-test-out-log2p1 new file mode 100644 index 0000000000..c8ec972d6f --- /dev/null +++ b/math/auto-libm-test-out-log2p1 @@ -0,0 +1,2713 @@ +log2p1 0 += log2p1 downward binary32 0x0p+0 : 0x0p+0 : inexact-ok += log2p1 tonearest binary32 0x0p+0 : 0x0p+0 : inexact-ok += log2p1 towardzero binary32 0x0p+0 : 0x0p+0 : inexact-ok += log2p1 upward binary32 0x0p+0 : 0x0p+0 : inexact-ok += log2p1 downward binary64 0x0p+0 : 0x0p+0 : inexact-ok += log2p1 tonearest binary64 0x0p+0 : 0x0p+0 : inexact-ok += log2p1 towardzero binary64 0x0p+0 : 0x0p+0 : inexact-ok += log2p1 upward binary64 0x0p+0 : 0x0p+0 : inexact-ok += log2p1 downward intel96 0x0p+0 : 0x0p+0 : inexact-ok += log2p1 tonearest intel96 0x0p+0 : 0x0p+0 : inexact-ok += log2p1 towardzero intel96 0x0p+0 : 0x0p+0 : inexact-ok += log2p1 upward intel96 0x0p+0 : 0x0p+0 : inexact-ok += log2p1 downward m68k96 0x0p+0 : 0x0p+0 : inexact-ok += log2p1 tonearest m68k96 0x0p+0 : 0x0p+0 : inexact-ok += log2p1 towardzero m68k96 0x0p+0 : 0x0p+0 : inexact-ok += log2p1 upward m68k96 0x0p+0 : 0x0p+0 : inexact-ok += log2p1 downward binary128 0x0p+0 : 0x0p+0 : inexact-ok += log2p1 tonearest binary128 0x0p+0 : 0x0p+0 : inexact-ok += log2p1 towardzero binary128 0x0p+0 : 0x0p+0 : inexact-ok += log2p1 upward binary128 0x0p+0 : 0x0p+0 : inexact-ok += log2p1 downward ibm128 0x0p+0 : 0x0p+0 : inexact-ok += log2p1 tonearest ibm128 0x0p+0 : 0x0p+0 : inexact-ok += log2p1 towardzero ibm128 0x0p+0 : 0x0p+0 : inexact-ok += log2p1 upward ibm128 0x0p+0 : 0x0p+0 : inexact-ok +log2p1 -0 += log2p1 downward binary32 -0x0p+0 : -0x0p+0 : inexact-ok += log2p1 tonearest binary32 -0x0p+0 : -0x0p+0 : inexact-ok += log2p1 towardzero binary32 -0x0p+0 : -0x0p+0 : inexact-ok += log2p1 upward binary32 -0x0p+0 : -0x0p+0 : inexact-ok += log2p1 downward binary64 -0x0p+0 : -0x0p+0 : inexact-ok += log2p1 tonearest binary64 -0x0p+0 : -0x0p+0 : inexact-ok += log2p1 towardzero binary64 -0x0p+0 : -0x0p+0 : inexact-ok += log2p1 upward binary64 -0x0p+0 : -0x0p+0 : inexact-ok += log2p1 downward intel96 -0x0p+0 : -0x0p+0 : inexact-ok += log2p1 tonearest intel96 -0x0p+0 : -0x0p+0 : inexact-ok += log2p1 towardzero intel96 -0x0p+0 : -0x0p+0 : inexact-ok += log2p1 upward intel96 -0x0p+0 : -0x0p+0 : inexact-ok += log2p1 downward m68k96 -0x0p+0 : -0x0p+0 : inexact-ok += log2p1 tonearest m68k96 -0x0p+0 : -0x0p+0 : inexact-ok += log2p1 towardzero m68k96 -0x0p+0 : -0x0p+0 : inexact-ok += log2p1 upward m68k96 -0x0p+0 : -0x0p+0 : inexact-ok += log2p1 downward binary128 -0x0p+0 : -0x0p+0 : inexact-ok += log2p1 tonearest binary128 -0x0p+0 : -0x0p+0 : inexact-ok += log2p1 towardzero binary128 -0x0p+0 : -0x0p+0 : inexact-ok += log2p1 upward binary128 -0x0p+0 : -0x0p+0 : inexact-ok += log2p1 downward ibm128 -0x0p+0 : -0x0p+0 : inexact-ok += log2p1 tonearest ibm128 -0x0p+0 : -0x0p+0 : inexact-ok += log2p1 towardzero ibm128 -0x0p+0 : -0x0p+0 : inexact-ok += log2p1 upward ibm128 -0x0p+0 : -0x0p+0 : inexact-ok +log2p1 e-1 += log2p1 downward binary32 0x1.b7e152p+0 : 0x1.715476p+0 : inexact-ok += log2p1 tonearest binary32 0x1.b7e152p+0 : 0x1.715476p+0 : inexact-ok += log2p1 towardzero binary32 0x1.b7e152p+0 : 0x1.715476p+0 : inexact-ok += log2p1 upward binary32 0x1.b7e152p+0 : 0x1.715478p+0 : inexact-ok += log2p1 downward binary64 0x1.b7e152p+0 : 0x1.715476a649bcdp+0 : inexact-ok += log2p1 tonearest binary64 0x1.b7e152p+0 : 0x1.715476a649bcep+0 : inexact-ok += log2p1 towardzero binary64 0x1.b7e152p+0 : 0x1.715476a649bcdp+0 : inexact-ok += log2p1 upward binary64 0x1.b7e152p+0 : 0x1.715476a649bcep+0 : inexact-ok += log2p1 downward intel96 0x1.b7e152p+0 : 0x1.715476a649bcdd1p+0 : inexact-ok += log2p1 tonearest intel96 0x1.b7e152p+0 : 0x1.715476a649bcdd1p+0 : inexact-ok += log2p1 towardzero intel96 0x1.b7e152p+0 : 0x1.715476a649bcdd1p+0 : inexact-ok += log2p1 upward intel96 0x1.b7e152p+0 : 0x1.715476a649bcdd12p+0 : inexact-ok += log2p1 downward m68k96 0x1.b7e152p+0 : 0x1.715476a649bcdd1p+0 : inexact-ok += log2p1 tonearest m68k96 0x1.b7e152p+0 : 0x1.715476a649bcdd1p+0 : inexact-ok += log2p1 towardzero m68k96 0x1.b7e152p+0 : 0x1.715476a649bcdd1p+0 : inexact-ok += log2p1 upward m68k96 0x1.b7e152p+0 : 0x1.715476a649bcdd12p+0 : inexact-ok += log2p1 downward binary128 0x1.b7e152p+0 : 0x1.715476a649bcdd1095ef715f7243p+0 : inexact-ok += log2p1 tonearest binary128 0x1.b7e152p+0 : 0x1.715476a649bcdd1095ef715f7243p+0 : inexact-ok += log2p1 towardzero binary128 0x1.b7e152p+0 : 0x1.715476a649bcdd1095ef715f7243p+0 : inexact-ok += log2p1 upward binary128 0x1.b7e152p+0 : 0x1.715476a649bcdd1095ef715f7244p+0 : inexact-ok += log2p1 downward ibm128 0x1.b7e152p+0 : 0x1.715476a649bcdd1095ef715f72p+0 : inexact-ok += log2p1 tonearest ibm128 0x1.b7e152p+0 : 0x1.715476a649bcdd1095ef715f728p+0 : inexact-ok += log2p1 towardzero ibm128 0x1.b7e152p+0 : 0x1.715476a649bcdd1095ef715f72p+0 : inexact-ok += log2p1 upward ibm128 0x1.b7e152p+0 : 0x1.715476a649bcdd1095ef715f728p+0 : inexact-ok += log2p1 downward binary32 0x1.b7e15p+0 : 0x1.715474p+0 : inexact-ok += log2p1 tonearest binary32 0x1.b7e15p+0 : 0x1.715476p+0 : inexact-ok += log2p1 towardzero binary32 0x1.b7e15p+0 : 0x1.715474p+0 : inexact-ok += log2p1 upward binary32 0x1.b7e15p+0 : 0x1.715476p+0 : inexact-ok += log2p1 downward binary64 0x1.b7e15p+0 : 0x1.715475968cddcp+0 : inexact-ok += log2p1 tonearest binary64 0x1.b7e15p+0 : 0x1.715475968cddcp+0 : inexact-ok += log2p1 towardzero binary64 0x1.b7e15p+0 : 0x1.715475968cddcp+0 : inexact-ok += log2p1 upward binary64 0x1.b7e15p+0 : 0x1.715475968cdddp+0 : inexact-ok += log2p1 downward intel96 0x1.b7e15p+0 : 0x1.715475968cddc4e6p+0 : inexact-ok += log2p1 tonearest intel96 0x1.b7e15p+0 : 0x1.715475968cddc4e6p+0 : inexact-ok += log2p1 towardzero intel96 0x1.b7e15p+0 : 0x1.715475968cddc4e6p+0 : inexact-ok += log2p1 upward intel96 0x1.b7e15p+0 : 0x1.715475968cddc4e8p+0 : inexact-ok += log2p1 downward m68k96 0x1.b7e15p+0 : 0x1.715475968cddc4e6p+0 : inexact-ok += log2p1 tonearest m68k96 0x1.b7e15p+0 : 0x1.715475968cddc4e6p+0 : inexact-ok += log2p1 towardzero m68k96 0x1.b7e15p+0 : 0x1.715475968cddc4e6p+0 : inexact-ok += log2p1 upward m68k96 0x1.b7e15p+0 : 0x1.715475968cddc4e8p+0 : inexact-ok += log2p1 downward binary128 0x1.b7e15p+0 : 0x1.715475968cddc4e6c2b1cbd1a7c7p+0 : inexact-ok += log2p1 tonearest binary128 0x1.b7e15p+0 : 0x1.715475968cddc4e6c2b1cbd1a7c8p+0 : inexact-ok += log2p1 towardzero binary128 0x1.b7e15p+0 : 0x1.715475968cddc4e6c2b1cbd1a7c7p+0 : inexact-ok += log2p1 upward binary128 0x1.b7e15p+0 : 0x1.715475968cddc4e6c2b1cbd1a7c8p+0 : inexact-ok += log2p1 downward ibm128 0x1.b7e15p+0 : 0x1.715475968cddc4e6c2b1cbd1a78p+0 : inexact-ok += log2p1 tonearest ibm128 0x1.b7e15p+0 : 0x1.715475968cddc4e6c2b1cbd1a8p+0 : inexact-ok += log2p1 towardzero ibm128 0x1.b7e15p+0 : 0x1.715475968cddc4e6c2b1cbd1a78p+0 : inexact-ok += log2p1 upward ibm128 0x1.b7e15p+0 : 0x1.715475968cddc4e6c2b1cbd1a8p+0 : inexact-ok += log2p1 downward binary64 0x1.b7e151628aed3p+0 : 0x1.71547652b82fep+0 : inexact-ok += log2p1 tonearest binary64 0x1.b7e151628aed3p+0 : 0x1.71547652b82fep+0 : inexact-ok += log2p1 towardzero binary64 0x1.b7e151628aed3p+0 : 0x1.71547652b82fep+0 : inexact-ok += log2p1 upward binary64 0x1.b7e151628aed3p+0 : 0x1.71547652b82ffp+0 : inexact-ok += log2p1 downward intel96 0x1.b7e151628aed3p+0 : 0x1.71547652b82fe46ep+0 : inexact-ok += log2p1 tonearest intel96 0x1.b7e151628aed3p+0 : 0x1.71547652b82fe46ep+0 : inexact-ok += log2p1 towardzero intel96 0x1.b7e151628aed3p+0 : 0x1.71547652b82fe46ep+0 : inexact-ok += log2p1 upward intel96 0x1.b7e151628aed3p+0 : 0x1.71547652b82fe47p+0 : inexact-ok += log2p1 downward m68k96 0x1.b7e151628aed3p+0 : 0x1.71547652b82fe46ep+0 : inexact-ok += log2p1 tonearest m68k96 0x1.b7e151628aed3p+0 : 0x1.71547652b82fe46ep+0 : inexact-ok += log2p1 towardzero m68k96 0x1.b7e151628aed3p+0 : 0x1.71547652b82fe46ep+0 : inexact-ok += log2p1 upward m68k96 0x1.b7e151628aed3p+0 : 0x1.71547652b82fe47p+0 : inexact-ok += log2p1 downward binary128 0x1.b7e151628aed3p+0 : 0x1.71547652b82fe46e0bf78d510ab9p+0 : inexact-ok += log2p1 tonearest binary128 0x1.b7e151628aed3p+0 : 0x1.71547652b82fe46e0bf78d510ab9p+0 : inexact-ok += log2p1 towardzero binary128 0x1.b7e151628aed3p+0 : 0x1.71547652b82fe46e0bf78d510ab9p+0 : inexact-ok += log2p1 upward binary128 0x1.b7e151628aed3p+0 : 0x1.71547652b82fe46e0bf78d510abap+0 : inexact-ok += log2p1 downward ibm128 0x1.b7e151628aed3p+0 : 0x1.71547652b82fe46e0bf78d510a8p+0 : inexact-ok += log2p1 tonearest ibm128 0x1.b7e151628aed3p+0 : 0x1.71547652b82fe46e0bf78d510a8p+0 : inexact-ok += log2p1 towardzero ibm128 0x1.b7e151628aed3p+0 : 0x1.71547652b82fe46e0bf78d510a8p+0 : inexact-ok += log2p1 upward ibm128 0x1.b7e151628aed3p+0 : 0x1.71547652b82fe46e0bf78d510bp+0 : inexact-ok += log2p1 downward binary64 0x1.b7e151628aed2p+0 : 0x1.71547652b82fdp+0 : inexact-ok += log2p1 tonearest binary64 0x1.b7e151628aed2p+0 : 0x1.71547652b82fep+0 : inexact-ok += log2p1 towardzero binary64 0x1.b7e151628aed2p+0 : 0x1.71547652b82fdp+0 : inexact-ok += log2p1 upward binary64 0x1.b7e151628aed2p+0 : 0x1.71547652b82fep+0 : inexact-ok += log2p1 downward intel96 0x1.b7e151628aed2p+0 : 0x1.71547652b82fdbfp+0 : inexact-ok += log2p1 tonearest intel96 0x1.b7e151628aed2p+0 : 0x1.71547652b82fdbfp+0 : inexact-ok += log2p1 towardzero intel96 0x1.b7e151628aed2p+0 : 0x1.71547652b82fdbfp+0 : inexact-ok += log2p1 upward intel96 0x1.b7e151628aed2p+0 : 0x1.71547652b82fdbf2p+0 : inexact-ok += log2p1 downward m68k96 0x1.b7e151628aed2p+0 : 0x1.71547652b82fdbfp+0 : inexact-ok += log2p1 tonearest m68k96 0x1.b7e151628aed2p+0 : 0x1.71547652b82fdbfp+0 : inexact-ok += log2p1 towardzero m68k96 0x1.b7e151628aed2p+0 : 0x1.71547652b82fdbfp+0 : inexact-ok += log2p1 upward m68k96 0x1.b7e151628aed2p+0 : 0x1.71547652b82fdbf2p+0 : inexact-ok += log2p1 downward binary128 0x1.b7e151628aed2p+0 : 0x1.71547652b82fdbf024ffffda5e62p+0 : inexact-ok += log2p1 tonearest binary128 0x1.b7e151628aed2p+0 : 0x1.71547652b82fdbf024ffffda5e62p+0 : inexact-ok += log2p1 towardzero binary128 0x1.b7e151628aed2p+0 : 0x1.71547652b82fdbf024ffffda5e62p+0 : inexact-ok += log2p1 upward binary128 0x1.b7e151628aed2p+0 : 0x1.71547652b82fdbf024ffffda5e63p+0 : inexact-ok += log2p1 downward ibm128 0x1.b7e151628aed2p+0 : 0x1.71547652b82fdbf024ffffda5ep+0 : inexact-ok += log2p1 tonearest ibm128 0x1.b7e151628aed2p+0 : 0x1.71547652b82fdbf024ffffda5e8p+0 : inexact-ok += log2p1 towardzero ibm128 0x1.b7e151628aed2p+0 : 0x1.71547652b82fdbf024ffffda5ep+0 : inexact-ok += log2p1 upward ibm128 0x1.b7e151628aed2p+0 : 0x1.71547652b82fdbf024ffffda5e8p+0 : inexact-ok += log2p1 downward intel96 0x1.b7e151628aed2a6cp+0 : 0x1.71547652b82fe178p+0 : inexact-ok += log2p1 tonearest intel96 0x1.b7e151628aed2a6cp+0 : 0x1.71547652b82fe178p+0 : inexact-ok += log2p1 towardzero intel96 0x1.b7e151628aed2a6cp+0 : 0x1.71547652b82fe178p+0 : inexact-ok += log2p1 upward intel96 0x1.b7e151628aed2a6cp+0 : 0x1.71547652b82fe17ap+0 : inexact-ok += log2p1 downward m68k96 0x1.b7e151628aed2a6cp+0 : 0x1.71547652b82fe178p+0 : inexact-ok += log2p1 tonearest m68k96 0x1.b7e151628aed2a6cp+0 : 0x1.71547652b82fe178p+0 : inexact-ok += log2p1 towardzero m68k96 0x1.b7e151628aed2a6cp+0 : 0x1.71547652b82fe178p+0 : inexact-ok += log2p1 upward m68k96 0x1.b7e151628aed2a6cp+0 : 0x1.71547652b82fe17ap+0 : inexact-ok += log2p1 downward binary128 0x1.b7e151628aed2a6cp+0 : 0x1.71547652b82fe1782731bf3f6b29p+0 : inexact-ok += log2p1 tonearest binary128 0x1.b7e151628aed2a6cp+0 : 0x1.71547652b82fe1782731bf3f6b29p+0 : inexact-ok += log2p1 towardzero binary128 0x1.b7e151628aed2a6cp+0 : 0x1.71547652b82fe1782731bf3f6b29p+0 : inexact-ok += log2p1 upward binary128 0x1.b7e151628aed2a6cp+0 : 0x1.71547652b82fe1782731bf3f6b2ap+0 : inexact-ok += log2p1 downward ibm128 0x1.b7e151628aed2a6cp+0 : 0x1.71547652b82fe1782731bf3f6bp+0 : inexact-ok += log2p1 tonearest ibm128 0x1.b7e151628aed2a6cp+0 : 0x1.71547652b82fe1782731bf3f6bp+0 : inexact-ok += log2p1 towardzero ibm128 0x1.b7e151628aed2a6cp+0 : 0x1.71547652b82fe1782731bf3f6bp+0 : inexact-ok += log2p1 upward ibm128 0x1.b7e151628aed2a6cp+0 : 0x1.71547652b82fe1782731bf3f6b8p+0 : inexact-ok += log2p1 downward intel96 0x1.b7e151628aed2a6ap+0 : 0x1.71547652b82fe176p+0 : inexact-ok += log2p1 tonearest intel96 0x1.b7e151628aed2a6ap+0 : 0x1.71547652b82fe178p+0 : inexact-ok += log2p1 towardzero intel96 0x1.b7e151628aed2a6ap+0 : 0x1.71547652b82fe176p+0 : inexact-ok += log2p1 upward intel96 0x1.b7e151628aed2a6ap+0 : 0x1.71547652b82fe178p+0 : inexact-ok += log2p1 downward m68k96 0x1.b7e151628aed2a6ap+0 : 0x1.71547652b82fe176p+0 : inexact-ok += log2p1 tonearest m68k96 0x1.b7e151628aed2a6ap+0 : 0x1.71547652b82fe178p+0 : inexact-ok += log2p1 towardzero m68k96 0x1.b7e151628aed2a6ap+0 : 0x1.71547652b82fe176p+0 : inexact-ok += log2p1 upward m68k96 0x1.b7e151628aed2a6ap+0 : 0x1.71547652b82fe178p+0 : inexact-ok += log2p1 downward binary128 0x1.b7e151628aed2a6ap+0 : 0x1.71547652b82fe1771774e04dbc53p+0 : inexact-ok += log2p1 tonearest binary128 0x1.b7e151628aed2a6ap+0 : 0x1.71547652b82fe1771774e04dbc54p+0 : inexact-ok += log2p1 towardzero binary128 0x1.b7e151628aed2a6ap+0 : 0x1.71547652b82fe1771774e04dbc53p+0 : inexact-ok += log2p1 upward binary128 0x1.b7e151628aed2a6ap+0 : 0x1.71547652b82fe1771774e04dbc54p+0 : inexact-ok += log2p1 downward ibm128 0x1.b7e151628aed2a6ap+0 : 0x1.71547652b82fe1771774e04dbcp+0 : inexact-ok += log2p1 tonearest ibm128 0x1.b7e151628aed2a6ap+0 : 0x1.71547652b82fe1771774e04dbc8p+0 : inexact-ok += log2p1 towardzero ibm128 0x1.b7e151628aed2a6ap+0 : 0x1.71547652b82fe1771774e04dbcp+0 : inexact-ok += log2p1 upward ibm128 0x1.b7e151628aed2a6ap+0 : 0x1.71547652b82fe1771774e04dbc8p+0 : inexact-ok += log2p1 downward binary128 0x1.b7e151628aed2a6abf7158809cf5p+0 : 0x1.71547652b82fe1777d0ffda0d23ap+0 : inexact-ok += log2p1 tonearest binary128 0x1.b7e151628aed2a6abf7158809cf5p+0 : 0x1.71547652b82fe1777d0ffda0d23bp+0 : inexact-ok += log2p1 towardzero binary128 0x1.b7e151628aed2a6abf7158809cf5p+0 : 0x1.71547652b82fe1777d0ffda0d23ap+0 : inexact-ok += log2p1 upward binary128 0x1.b7e151628aed2a6abf7158809cf5p+0 : 0x1.71547652b82fe1777d0ffda0d23bp+0 : inexact-ok += log2p1 downward binary128 0x1.b7e151628aed2a6abf7158809cf4p+0 : 0x1.71547652b82fe1777d0ffda0d239p+0 : inexact-ok += log2p1 tonearest binary128 0x1.b7e151628aed2a6abf7158809cf4p+0 : 0x1.71547652b82fe1777d0ffda0d23ap+0 : inexact-ok += log2p1 towardzero binary128 0x1.b7e151628aed2a6abf7158809cf4p+0 : 0x1.71547652b82fe1777d0ffda0d239p+0 : inexact-ok += log2p1 upward binary128 0x1.b7e151628aed2a6abf7158809cf4p+0 : 0x1.71547652b82fe1777d0ffda0d23ap+0 : inexact-ok += log2p1 downward binary128 0x1.b7e151628aed2a6abf7158809dp+0 : 0x1.71547652b82fe1777d0ffda0d24p+0 : inexact-ok += log2p1 tonearest binary128 0x1.b7e151628aed2a6abf7158809dp+0 : 0x1.71547652b82fe1777d0ffda0d24p+0 : inexact-ok += log2p1 towardzero binary128 0x1.b7e151628aed2a6abf7158809dp+0 : 0x1.71547652b82fe1777d0ffda0d24p+0 : inexact-ok += log2p1 upward binary128 0x1.b7e151628aed2a6abf7158809dp+0 : 0x1.71547652b82fe1777d0ffda0d241p+0 : inexact-ok += log2p1 downward ibm128 0x1.b7e151628aed2a6abf7158809dp+0 : 0x1.71547652b82fe1777d0ffda0d2p+0 : inexact-ok += log2p1 tonearest ibm128 0x1.b7e151628aed2a6abf7158809dp+0 : 0x1.71547652b82fe1777d0ffda0d28p+0 : inexact-ok += log2p1 towardzero ibm128 0x1.b7e151628aed2a6abf7158809dp+0 : 0x1.71547652b82fe1777d0ffda0d2p+0 : inexact-ok += log2p1 upward ibm128 0x1.b7e151628aed2a6abf7158809dp+0 : 0x1.71547652b82fe1777d0ffda0d28p+0 : inexact-ok += log2p1 downward binary128 0x1.b7e151628aed2a6abf7158809c8p+0 : 0x1.71547652b82fe1777d0ffda0d1fcp+0 : inexact-ok += log2p1 tonearest binary128 0x1.b7e151628aed2a6abf7158809c8p+0 : 0x1.71547652b82fe1777d0ffda0d1fcp+0 : inexact-ok += log2p1 towardzero binary128 0x1.b7e151628aed2a6abf7158809c8p+0 : 0x1.71547652b82fe1777d0ffda0d1fcp+0 : inexact-ok += log2p1 upward binary128 0x1.b7e151628aed2a6abf7158809c8p+0 : 0x1.71547652b82fe1777d0ffda0d1fdp+0 : inexact-ok += log2p1 downward ibm128 0x1.b7e151628aed2a6abf7158809c8p+0 : 0x1.71547652b82fe1777d0ffda0d18p+0 : inexact-ok += log2p1 tonearest ibm128 0x1.b7e151628aed2a6abf7158809c8p+0 : 0x1.71547652b82fe1777d0ffda0d2p+0 : inexact-ok += log2p1 towardzero ibm128 0x1.b7e151628aed2a6abf7158809c8p+0 : 0x1.71547652b82fe1777d0ffda0d18p+0 : inexact-ok += log2p1 upward ibm128 0x1.b7e151628aed2a6abf7158809c8p+0 : 0x1.71547652b82fe1777d0ffda0d2p+0 : inexact-ok +log2p1 -0.25 += log2p1 downward binary32 -0x4p-4 : -0x6.a3fe6p-4 : inexact-ok += log2p1 tonearest binary32 -0x4p-4 : -0x6.a3fe6p-4 : inexact-ok += log2p1 towardzero binary32 -0x4p-4 : -0x6.a3fe58p-4 : inexact-ok += log2p1 upward binary32 -0x4p-4 : -0x6.a3fe58p-4 : inexact-ok += log2p1 downward binary64 -0x4p-4 : -0x6.a3fe5c604297cp-4 : inexact-ok += log2p1 tonearest binary64 -0x4p-4 : -0x6.a3fe5c6042978p-4 : inexact-ok += log2p1 towardzero binary64 -0x4p-4 : -0x6.a3fe5c6042978p-4 : inexact-ok += log2p1 upward binary64 -0x4p-4 : -0x6.a3fe5c6042978p-4 : inexact-ok += log2p1 downward intel96 -0x4p-4 : -0x6.a3fe5c6042978608p-4 : inexact-ok += log2p1 tonearest intel96 -0x4p-4 : -0x6.a3fe5c6042978608p-4 : inexact-ok += log2p1 towardzero intel96 -0x4p-4 : -0x6.a3fe5c60429786p-4 : inexact-ok += log2p1 upward intel96 -0x4p-4 : -0x6.a3fe5c60429786p-4 : inexact-ok += log2p1 downward m68k96 -0x4p-4 : -0x6.a3fe5c6042978608p-4 : inexact-ok += log2p1 tonearest m68k96 -0x4p-4 : -0x6.a3fe5c6042978608p-4 : inexact-ok += log2p1 towardzero m68k96 -0x4p-4 : -0x6.a3fe5c60429786p-4 : inexact-ok += log2p1 upward m68k96 -0x4p-4 : -0x6.a3fe5c60429786p-4 : inexact-ok += log2p1 downward binary128 -0x4p-4 : -0x6.a3fe5c6042978605ff4edf5f9748p-4 : inexact-ok += log2p1 tonearest binary128 -0x4p-4 : -0x6.a3fe5c6042978605ff4edf5f9744p-4 : inexact-ok += log2p1 towardzero binary128 -0x4p-4 : -0x6.a3fe5c6042978605ff4edf5f9744p-4 : inexact-ok += log2p1 upward binary128 -0x4p-4 : -0x6.a3fe5c6042978605ff4edf5f9744p-4 : inexact-ok += log2p1 downward ibm128 -0x4p-4 : -0x6.a3fe5c6042978605ff4edf5f98p-4 : inexact-ok += log2p1 tonearest ibm128 -0x4p-4 : -0x6.a3fe5c6042978605ff4edf5f98p-4 : inexact-ok += log2p1 towardzero ibm128 -0x4p-4 : -0x6.a3fe5c6042978605ff4edf5f96p-4 : inexact-ok += log2p1 upward ibm128 -0x4p-4 : -0x6.a3fe5c6042978605ff4edf5f96p-4 : inexact-ok +log2p1 -0.875 += log2p1 downward binary32 -0xep-4 : -0x3p+0 : inexact-ok += log2p1 tonearest binary32 -0xep-4 : -0x3p+0 : inexact-ok += log2p1 towardzero binary32 -0xep-4 : -0x3p+0 : inexact-ok += log2p1 upward binary32 -0xep-4 : -0x3p+0 : inexact-ok += log2p1 downward binary64 -0xep-4 : -0x3p+0 : inexact-ok += log2p1 tonearest binary64 -0xep-4 : -0x3p+0 : inexact-ok += log2p1 towardzero binary64 -0xep-4 : -0x3p+0 : inexact-ok += log2p1 upward binary64 -0xep-4 : -0x3p+0 : inexact-ok += log2p1 downward intel96 -0xep-4 : -0x3p+0 : inexact-ok += log2p1 tonearest intel96 -0xep-4 : -0x3p+0 : inexact-ok += log2p1 towardzero intel96 -0xep-4 : -0x3p+0 : inexact-ok += log2p1 upward intel96 -0xep-4 : -0x3p+0 : inexact-ok += log2p1 downward m68k96 -0xep-4 : -0x3p+0 : inexact-ok += log2p1 tonearest m68k96 -0xep-4 : -0x3p+0 : inexact-ok += log2p1 towardzero m68k96 -0xep-4 : -0x3p+0 : inexact-ok += log2p1 upward m68k96 -0xep-4 : -0x3p+0 : inexact-ok += log2p1 downward binary128 -0xep-4 : -0x3p+0 : inexact-ok += log2p1 tonearest binary128 -0xep-4 : -0x3p+0 : inexact-ok += log2p1 towardzero binary128 -0xep-4 : -0x3p+0 : inexact-ok += log2p1 upward binary128 -0xep-4 : -0x3p+0 : inexact-ok += log2p1 downward ibm128 -0xep-4 : -0x3p+0 : inexact-ok += log2p1 tonearest ibm128 -0xep-4 : -0x3p+0 : inexact-ok += log2p1 towardzero ibm128 -0xep-4 : -0x3p+0 : inexact-ok += log2p1 upward ibm128 -0xep-4 : -0x3p+0 : inexact-ok +log2p1 0x1p-5 += log2p1 downward binary32 0x8p-8 : 0xb.5d69bp-8 : inexact-ok += log2p1 tonearest binary32 0x8p-8 : 0xb.5d69cp-8 : inexact-ok += log2p1 towardzero binary32 0x8p-8 : 0xb.5d69bp-8 : inexact-ok += log2p1 upward binary32 0x8p-8 : 0xb.5d69cp-8 : inexact-ok += log2p1 downward binary64 0x8p-8 : 0xb.5d69bac77ec38p-8 : inexact-ok += log2p1 tonearest binary64 0x8p-8 : 0xb.5d69bac77ec38p-8 : inexact-ok += log2p1 towardzero binary64 0x8p-8 : 0xb.5d69bac77ec38p-8 : inexact-ok += log2p1 upward binary64 0x8p-8 : 0xb.5d69bac77ec4p-8 : inexact-ok += log2p1 downward intel96 0x8p-8 : 0xb.5d69bac77ec3989p-8 : inexact-ok += log2p1 tonearest intel96 0x8p-8 : 0xb.5d69bac77ec398ap-8 : inexact-ok += log2p1 towardzero intel96 0x8p-8 : 0xb.5d69bac77ec3989p-8 : inexact-ok += log2p1 upward intel96 0x8p-8 : 0xb.5d69bac77ec398ap-8 : inexact-ok += log2p1 downward m68k96 0x8p-8 : 0xb.5d69bac77ec3989p-8 : inexact-ok += log2p1 tonearest m68k96 0x8p-8 : 0xb.5d69bac77ec398ap-8 : inexact-ok += log2p1 towardzero m68k96 0x8p-8 : 0xb.5d69bac77ec3989p-8 : inexact-ok += log2p1 upward m68k96 0x8p-8 : 0xb.5d69bac77ec398ap-8 : inexact-ok += log2p1 downward binary128 0x8p-8 : 0xb.5d69bac77ec3989b03784b5be08p-8 : inexact-ok += log2p1 tonearest binary128 0x8p-8 : 0xb.5d69bac77ec3989b03784b5be088p-8 : inexact-ok += log2p1 towardzero binary128 0x8p-8 : 0xb.5d69bac77ec3989b03784b5be08p-8 : inexact-ok += log2p1 upward binary128 0x8p-8 : 0xb.5d69bac77ec3989b03784b5be088p-8 : inexact-ok += log2p1 downward ibm128 0x8p-8 : 0xb.5d69bac77ec3989b03784b5bep-8 : inexact-ok += log2p1 tonearest ibm128 0x8p-8 : 0xb.5d69bac77ec3989b03784b5bep-8 : inexact-ok += log2p1 towardzero ibm128 0x8p-8 : 0xb.5d69bac77ec3989b03784b5bep-8 : inexact-ok += log2p1 upwar |
