[glibc] math: Update tanh from CORE-MATH (revision bb39e4fa)
Adhemerval Zanella via Glibc-cvs <[email protected]>
| Newsgroups | gmane.comp.lib.glibc.cvs |
|---|---|
| Message-ID | <[email protected]> |
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=70cc22b19c2037097f0f0cce89488763c6c49f5b commit 70cc22b19c2037097f0f0cce89488763c6c49f5b Author: Adhemerval Zanella <[email protected]> Date: Tue Aug 25 11:16:54 2026 -0500 math: Update tanh from CORE-MATH (revision bb39e4fa) The bug only exists in the non-FMA-contracted compilation of that branch. On x86_64 it can be triggered with: GLIBC_TUNABLES=glibc.cpu.hwcaps=-AVX2 math/test-double-tanh Or by building without ifunc support. Checked on aarch64-linux-gnu and x86_64-linux-gnu with --disable-multi-arch. Diff: --- SHARED-FILES | 2 +- math/auto-libm-test-in | 6 + math/auto-libm-test-out-tanh | 414 ++++++++++++++++++++++++++++++++++++++++ sysdeps/ieee754/dbl-64/s_tanh.c | 6 +- 4 files changed, 425 insertions(+), 3 deletions(-) diff --git a/SHARED-FILES b/SHARED-FILES index cf2a19c015..b630b41209 100644 --- a/SHARED-FILES +++ b/SHARED-FILES @@ -280,7 +280,7 @@ core-math: sysdeps/ieee754/dbl-64/s_erf.c # src/binary64/erfc/erfc.c, revision 55e9869e sysdeps/ieee754/dbl-64/s_erfc.c - # src/binary64/tanh/tanh.c, revision cf237fa0 + # src/binary64/tanh/tanh.c, revision bb39e4fa sysdeps/ieee754/dbl-64/s_tanh.c # src/binary32/acos/acosf.c, revision 56dd347 sysdeps/ieee754/flt-32/e_acosf.c diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in index 5c4d486af4..939da2c833 100644 --- a/math/auto-libm-test-in +++ b/math/auto-libm-test-in @@ -10119,6 +10119,12 @@ tanh 0x0.fffffffffffffp-1022 tanh 0x3.b9979a543d0fbfa8p-4 tanh 0x1.a0112a16e9318p+1 tanh -0x1.a0112a16e9318p+1 +tanh 0x1.a0bd10af4ac2bp+1 +tanh -0x1.a0bd10af4ac2bp+1 +tanh 0x1.a0bd1178ea346p+1 +tanh -0x1.a0bd1178ea346p+1 +tanh 0x1.a0bd144ac78ap+1 +tanh -0x1.a0bd144ac78ap+1 tanh max tanh -max tanh min diff --git a/math/auto-libm-test-out-tanh b/math/auto-libm-test-out-tanh index 2f2a9166c0..73a8096307 100644 --- a/math/auto-libm-test-out-tanh +++ b/math/auto-libm-test-out-tanh @@ -2601,6 +2601,420 @@ tanh -0x1.a0112a16e9318p+1 = tanh tonearest ibm128 -0x3.4022542dd263p+0 : -0xf.f3b7158906b2800000506e94fp-4 : inexact-ok = tanh towardzero ibm128 -0x3.4022542dd263p+0 : -0xf.f3b7158906b2800000506e94ecp-4 : inexact-ok = tanh upward ibm128 -0x3.4022542dd263p+0 : -0xf.f3b7158906b2800000506e94ecp-4 : inexact-ok +tanh 0x1.a0bd10af4ac2bp+1 += tanh downward binary32 0x3.417a24p+0 : 0xf.f3d7dp-4 : inexact-ok += tanh tonearest binary32 0x3.417a24p+0 : 0xf.f3d7ep-4 : inexact-ok += tanh towardzero binary32 0x3.417a24p+0 : 0xf.f3d7dp-4 : inexact-ok += tanh upward binary32 0x3.417a24p+0 : 0xf.f3d7ep-4 : inexact-ok += tanh downward binary64 0x3.417a24p+0 : 0xf.f3d7dc3db7d6p-4 : inexact-ok += tanh tonearest binary64 0x3.417a24p+0 : 0xf.f3d7dc3db7d68p-4 : inexact-ok += tanh towardzero binary64 0x3.417a24p+0 : 0xf.f3d7dc3db7d6p-4 : inexact-ok += tanh upward binary64 0x3.417a24p+0 : 0xf.f3d7dc3db7d68p-4 : inexact-ok += tanh downward intel96 0x3.417a24p+0 : 0xf.f3d7dc3db7d664cp-4 : inexact-ok += tanh tonearest intel96 0x3.417a24p+0 : 0xf.f3d7dc3db7d664dp-4 : inexact-ok += tanh towardzero intel96 0x3.417a24p+0 : 0xf.f3d7dc3db7d664cp-4 : inexact-ok += tanh upward intel96 0x3.417a24p+0 : 0xf.f3d7dc3db7d664dp-4 : inexact-ok += tanh downward m68k96 0x3.417a24p+0 : 0xf.f3d7dc3db7d664cp-4 : inexact-ok += tanh tonearest m68k96 0x3.417a24p+0 : 0xf.f3d7dc3db7d664dp-4 : inexact-ok += tanh towardzero m68k96 0x3.417a24p+0 : 0xf.f3d7dc3db7d664cp-4 : inexact-ok += tanh upward m68k96 0x3.417a24p+0 : 0xf.f3d7dc3db7d664dp-4 : inexact-ok += tanh downward binary128 0x3.417a24p+0 : 0xf.f3d7dc3db7d664cd14c092d5d88p-4 : inexact-ok += tanh tonearest binary128 0x3.417a24p+0 : 0xf.f3d7dc3db7d664cd14c092d5d88p-4 : inexact-ok += tanh towardzero binary128 0x3.417a24p+0 : 0xf.f3d7dc3db7d664cd14c092d5d88p-4 : inexact-ok += tanh upward binary128 0x3.417a24p+0 : 0xf.f3d7dc3db7d664cd14c092d5d888p-4 : inexact-ok += tanh downward ibm128 0x3.417a24p+0 : 0xf.f3d7dc3db7d664cd14c092d5d8p-4 : inexact-ok += tanh tonearest ibm128 0x3.417a24p+0 : 0xf.f3d7dc3db7d664cd14c092d5d8p-4 : inexact-ok += tanh towardzero ibm128 0x3.417a24p+0 : 0xf.f3d7dc3db7d664cd14c092d5d8p-4 : inexact-ok += tanh upward ibm128 0x3.417a24p+0 : 0xf.f3d7dc3db7d664cd14c092d5dcp-4 : inexact-ok += tanh downward binary32 0x3.417a2p+0 : 0xf.f3d7dp-4 : inexact-ok += tanh tonearest binary32 0x3.417a2p+0 : 0xf.f3d7ep-4 : inexact-ok += tanh towardzero binary32 0x3.417a2p+0 : 0xf.f3d7dp-4 : inexact-ok += tanh upward binary32 0x3.417a2p+0 : 0xf.f3d7ep-4 : inexact-ok += tanh downward binary64 0x3.417a2p+0 : 0xf.f3d7dbdc9ba9p-4 : inexact-ok += tanh tonearest binary64 0x3.417a2p+0 : 0xf.f3d7dbdc9ba9p-4 : inexact-ok += tanh towardzero binary64 0x3.417a2p+0 : 0xf.f3d7dbdc9ba9p-4 : inexact-ok += tanh upward binary64 0x3.417a2p+0 : 0xf.f3d7dbdc9ba98p-4 : inexact-ok += tanh downward intel96 0x3.417a2p+0 : 0xf.f3d7dbdc9ba9389p-4 : inexact-ok += tanh tonearest intel96 0x3.417a2p+0 : 0xf.f3d7dbdc9ba938ap-4 : inexact-ok += tanh towardzero intel96 0x3.417a2p+0 : 0xf.f3d7dbdc9ba9389p-4 : inexact-ok += tanh upward intel96 0x3.417a2p+0 : 0xf.f3d7dbdc9ba938ap-4 : inexact-ok += tanh downward m68k96 0x3.417a2p+0 : 0xf.f3d7dbdc9ba9389p-4 : inexact-ok += tanh tonearest m68k96 0x3.417a2p+0 : 0xf.f3d7dbdc9ba938ap-4 : inexact-ok += tanh towardzero m68k96 0x3.417a2p+0 : 0xf.f3d7dbdc9ba9389p-4 : inexact-ok += tanh upward m68k96 0x3.417a2p+0 : 0xf.f3d7dbdc9ba938ap-4 : inexact-ok += tanh downward binary128 0x3.417a2p+0 : 0xf.f3d7dbdc9ba9389c568b3e2af278p-4 : inexact-ok += tanh tonearest binary128 0x3.417a2p+0 : 0xf.f3d7dbdc9ba9389c568b3e2af28p-4 : inexact-ok += tanh towardzero binary128 0x3.417a2p+0 : 0xf.f3d7dbdc9ba9389c568b3e2af278p-4 : inexact-ok += tanh upward binary128 0x3.417a2p+0 : 0xf.f3d7dbdc9ba9389c568b3e2af28p-4 : inexact-ok += tanh downward ibm128 0x3.417a2p+0 : 0xf.f3d7dbdc9ba9389c568b3e2afp-4 : inexact-ok += tanh tonearest ibm128 0x3.417a2p+0 : 0xf.f3d7dbdc9ba9389c568b3e2af4p-4 : inexact-ok += tanh towardzero ibm128 0x3.417a2p+0 : 0xf.f3d7dbdc9ba9389c568b3e2afp-4 : inexact-ok += tanh upward ibm128 0x3.417a2p+0 : 0xf.f3d7dbdc9ba9389c568b3e2af4p-4 : inexact-ok += tanh downward binary64 0x3.417a215e95856p+0 : 0xf.f3d7dbfddaf9p-4 : inexact-ok += tanh tonearest binary64 0x3.417a215e95856p+0 : 0xf.f3d7dbfddaf9p-4 : inexact-ok += tanh towardzero binary64 0x3.417a215e95856p+0 : 0xf.f3d7dbfddaf9p-4 : inexact-ok += tanh upward binary64 0x3.417a215e95856p+0 : 0xf.f3d7dbfddaf98p-4 : inexact-ok += tanh downward intel96 0x3.417a215e95856p+0 : 0xf.f3d7dbfddaf9p-4 : inexact-ok += tanh tonearest intel96 0x3.417a215e95856p+0 : 0xf.f3d7dbfddaf9p-4 : inexact-ok += tanh towardzero intel96 0x3.417a215e95856p+0 : 0xf.f3d7dbfddaf9p-4 : inexact-ok += tanh upward intel96 0x3.417a215e95856p+0 : 0xf.f3d7dbfddaf9001p-4 : inexact-ok += tanh downward m68k96 0x3.417a215e95856p+0 : 0xf.f3d7dbfddaf9p-4 : inexact-ok += tanh tonearest m68k96 0x3.417a215e95856p+0 : 0xf.f3d7dbfddaf9p-4 : inexact-ok += tanh towardzero m68k96 0x3.417a215e95856p+0 : 0xf.f3d7dbfddaf9p-4 : inexact-ok += tanh upward m68k96 0x3.417a215e95856p+0 : 0xf.f3d7dbfddaf9001p-4 : inexact-ok += tanh downward binary128 0x3.417a215e95856p+0 : 0xf.f3d7dbfddaf9000000a132029408p-4 : inexact-ok += tanh tonearest binary128 0x3.417a215e95856p+0 : 0xf.f3d7dbfddaf9000000a132029408p-4 : inexact-ok += tanh towardzero binary128 0x3.417a215e95856p+0 : 0xf.f3d7dbfddaf9000000a132029408p-4 : inexact-ok += tanh upward binary128 0x3.417a215e95856p+0 : 0xf.f3d7dbfddaf9000000a13202941p-4 : inexact-ok += tanh downward ibm128 0x3.417a215e95856p+0 : 0xf.f3d7dbfddaf9000000a1320294p-4 : inexact-ok += tanh tonearest ibm128 0x3.417a215e95856p+0 : 0xf.f3d7dbfddaf9000000a1320294p-4 : inexact-ok += tanh towardzero ibm128 0x3.417a215e95856p+0 : 0xf.f3d7dbfddaf9000000a1320294p-4 : inexact-ok += tanh upward ibm128 0x3.417a215e95856p+0 : 0xf.f3d7dbfddaf9000000a1320298p-4 : inexact-ok +tanh -0x1.a0bd10af4ac2bp+1 += tanh downward binary32 -0x3.417a2p+0 : -0xf.f3d7ep-4 : inexact-ok += tanh tonearest binary32 -0x3.417a2p+0 : -0xf.f3d7ep-4 : inexact-ok += tanh towardzero binary32 -0x3.417a2p+0 : -0xf.f3d7dp-4 : inexact-ok += tanh upward binary32 -0x3.417a2p+0 : -0xf.f3d7dp-4 : inexact-ok += tanh downward binary64 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba98p-4 : inexact-ok += tanh tonearest binary64 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba9p-4 : inexact-ok += tanh towardzero binary64 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba9p-4 : inexact-ok += tanh upward binary64 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba9p-4 : inexact-ok += tanh downward intel96 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba938ap-4 : inexact-ok += tanh tonearest intel96 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba938ap-4 : inexact-ok += tanh towardzero intel96 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba9389p-4 : inexact-ok += tanh upward intel96 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba9389p-4 : inexact-ok += tanh downward m68k96 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba938ap-4 : inexact-ok += tanh tonearest m68k96 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba938ap-4 : inexact-ok += tanh towardzero m68k96 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba9389p-4 : inexact-ok += tanh upward m68k96 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba9389p-4 : inexact-ok += tanh downward binary128 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba9389c568b3e2af28p-4 : inexact-ok += tanh tonearest binary128 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba9389c568b3e2af28p-4 : inexact-ok += tanh towardzero binary128 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba9389c568b3e2af278p-4 : inexact-ok += tanh upward binary128 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba9389c568b3e2af278p-4 : inexact-ok += tanh downward ibm128 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba9389c568b3e2af4p-4 : inexact-ok += tanh tonearest ibm128 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba9389c568b3e2af4p-4 : inexact-ok += tanh towardzero ibm128 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba9389c568b3e2afp-4 : inexact-ok += tanh upward ibm128 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba9389c568b3e2afp-4 : inexact-ok += tanh downward binary32 -0x3.417a24p+0 : -0xf.f3d7ep-4 : inexact-ok += tanh tonearest binary32 -0x3.417a24p+0 : -0xf.f3d7ep-4 : inexact-ok += tanh towardzero binary32 -0x3.417a24p+0 : -0xf.f3d7dp-4 : inexact-ok += tanh upward binary32 -0x3.417a24p+0 : -0xf.f3d7dp-4 : inexact-ok += tanh downward binary64 -0x3.417a24p+0 : -0xf.f3d7dc3db7d68p-4 : inexact-ok += tanh tonearest binary64 -0x3.417a24p+0 : -0xf.f3d7dc3db7d68p-4 : inexact-ok += tanh towardzero binary64 -0x3.417a24p+0 : -0xf.f3d7dc3db7d6p-4 : inexact-ok += tanh upward binary64 -0x3.417a24p+0 : -0xf.f3d7dc3db7d6p-4 : inexact-ok += tanh downward intel96 -0x3.417a24p+0 : -0xf.f3d7dc3db7d664dp-4 : inexact-ok += tanh tonearest intel96 -0x3.417a24p+0 : -0xf.f3d7dc3db7d664dp-4 : inexact-ok += tanh towardzero intel96 -0x3.417a24p+0 : -0xf.f3d7dc3db7d664cp-4 : inexact-ok += tanh upward intel96 -0x3.417a24p+0 : -0xf.f3d7dc3db7d664cp-4 : inexact-ok += tanh downward m68k96 -0x3.417a24p+0 : -0xf.f3d7dc3db7d664dp-4 : inexact-ok += tanh tonearest m68k96 -0x3.417a24p+0 : -0xf.f3d7dc3db7d664dp-4 : inexact-ok += tanh towardzero m68k96 -0x3.417a24p+0 : -0xf.f3d7dc3db7d664cp-4 : inexact-ok += tanh upward m68k96 -0x3.417a24p+0 : -0xf.f3d7dc3db7d664cp-4 : inexact-ok += tanh downward binary128 -0x3.417a24p+0 : -0xf.f3d7dc3db7d664cd14c092d5d888p-4 : inexact-ok += tanh tonearest binary128 -0x3.417a24p+0 : -0xf.f3d7dc3db7d664cd14c092d5d88p-4 : inexact-ok += tanh towardzero binary128 -0x3.417a24p+0 : -0xf.f3d7dc3db7d664cd14c092d5d88p-4 : inexact-ok += tanh upward binary128 -0x3.417a24p+0 : -0xf.f3d7dc3db7d664cd14c092d5d88p-4 : inexact-ok += tanh downward ibm128 -0x3.417a24p+0 : -0xf.f3d7dc3db7d664cd14c092d5dcp-4 : inexact-ok += tanh tonearest ibm128 -0x3.417a24p+0 : -0xf.f3d7dc3db7d664cd14c092d5d8p-4 : inexact-ok += tanh towardzero ibm128 -0x3.417a24p+0 : -0xf.f3d7dc3db7d664cd14c092d5d8p-4 : inexact-ok += tanh upward ibm128 -0x3.417a24p+0 : -0xf.f3d7dc3db7d664cd14c092d5d8p-4 : inexact-ok += tanh downward binary64 -0x3.417a215e95856p+0 : -0xf.f3d7dbfddaf98p-4 : inexact-ok += tanh tonearest binary64 -0x3.417a215e95856p+0 : -0xf.f3d7dbfddaf9p-4 : inexact-ok += tanh towardzero binary64 -0x3.417a215e95856p+0 : -0xf.f3d7dbfddaf9p-4 : inexact-ok += tanh upward binary64 -0x3.417a215e95856p+0 : -0xf.f3d7dbfddaf9p-4 : inexact-ok += tanh downward intel96 -0x3.417a215e95856p+0 : -0xf.f3d7dbfddaf9001p-4 : inexact-ok += tanh tonearest intel96 -0x3.417a215e95856p+0 : -0xf.f3d7dbfddaf9p-4 : inexact-ok += tanh towardzero intel96 -0x3.417a215e95856p+0 : -0xf.f3d7dbfddaf9p-4 : inexact-ok += tanh upward intel96 -0x3.417a215e95856p+0 : -0xf.f3d7dbfddaf9p-4 : inexact-ok += tanh downward m68k96 -0x3.417a215e95856p+0 : -0xf.f3d7dbfddaf9001p-4 : inexact-ok += tanh tonearest m68k96 -0x3.417a215e95856p+0 : -0xf.f3d7dbfddaf9p-4 : inexact-ok += tanh towardzero m68k96 -0x3.417a215e95856p+0 : -0xf.f3d7dbfddaf9p-4 : inexact-ok += tanh upward m68k96 -0x3.417a215e95856p+0 : -0xf.f3d7dbfddaf9p-4 : inexact-ok += tanh downward binary128 -0x3.417a215e95856p+0 : -0xf.f3d7dbfddaf9000000a13202941p-4 : inexact-ok += tanh tonearest binary128 -0x3.417a215e95856p+0 : -0xf.f3d7dbfddaf9000000a132029408p-4 : inexact-ok += tanh towardzero binary128 -0x3.417a215e95856p+0 : -0xf.f3d7dbfddaf9000000a132029408p-4 : inexact-ok += tanh upward binary128 -0x3.417a215e95856p+0 : -0xf.f3d7dbfddaf9000000a132029408p-4 : inexact-ok += tanh downward ibm128 -0x3.417a215e95856p+0 : -0xf.f3d7dbfddaf9000000a1320298p-4 : inexact-ok += tanh tonearest ibm128 -0x3.417a215e95856p+0 : -0xf.f3d7dbfddaf9000000a1320294p-4 : inexact-ok += tanh towardzero ibm128 -0x3.417a215e95856p+0 : -0xf.f3d7dbfddaf9000000a1320294p-4 : inexact-ok += tanh upward ibm128 -0x3.417a215e95856p+0 : -0xf.f3d7dbfddaf9000000a1320294p-4 : inexact-ok +tanh 0x1.a0bd1178ea346p+1 += tanh downward binary32 0x3.417a24p+0 : 0xf.f3d7dp-4 : inexact-ok += tanh tonearest binary32 0x3.417a24p+0 : 0xf.f3d7ep-4 : inexact-ok += tanh towardzero binary32 0x3.417a24p+0 : 0xf.f3d7dp-4 : inexact-ok += tanh upward binary32 0x3.417a24p+0 : 0xf.f3d7ep-4 : inexact-ok += tanh downward binary64 0x3.417a24p+0 : 0xf.f3d7dc3db7d6p-4 : inexact-ok += tanh tonearest binary64 0x3.417a24p+0 : 0xf.f3d7dc3db7d68p-4 : inexact-ok += tanh towardzero binary64 0x3.417a24p+0 : 0xf.f3d7dc3db7d6p-4 : inexact-ok += tanh upward binary64 0x3.417a24p+0 : 0xf.f3d7dc3db7d68p-4 : inexact-ok += tanh downward intel96 0x3.417a24p+0 : 0xf.f3d7dc3db7d664cp-4 : inexact-ok += tanh tonearest intel96 0x3.417a24p+0 : 0xf.f3d7dc3db7d664dp-4 : inexact-ok += tanh towardzero intel96 0x3.417a24p+0 : 0xf.f3d7dc3db7d664cp-4 : inexact-ok += tanh upward intel96 0x3.417a24p+0 : 0xf.f3d7dc3db7d664dp-4 : inexact-ok += tanh downward m68k96 0x3.417a24p+0 : 0xf.f3d7dc3db7d664cp-4 : inexact-ok += tanh tonearest m68k96 0x3.417a24p+0 : 0xf.f3d7dc3db7d664dp-4 : inexact-ok += tanh towardzero m68k96 0x3.417a24p+0 : 0xf.f3d7dc3db7d664cp-4 : inexact-ok += tanh upward m68k96 0x3.417a24p+0 : 0xf.f3d7dc3db7d664dp-4 : inexact-ok += tanh downward binary128 0x3.417a24p+0 : 0xf.f3d7dc3db7d664cd14c092d5d88p-4 : inexact-ok += tanh tonearest binary128 0x3.417a24p+0 : 0xf.f3d7dc3db7d664cd14c092d5d88p-4 : inexact-ok += tanh towardzero binary128 0x3.417a24p+0 : 0xf.f3d7dc3db7d664cd14c092d5d88p-4 : inexact-ok += tanh upward binary128 0x3.417a24p+0 : 0xf.f3d7dc3db7d664cd14c092d5d888p-4 : inexact-ok += tanh downward ibm128 0x3.417a24p+0 : 0xf.f3d7dc3db7d664cd14c092d5d8p-4 : inexact-ok += tanh tonearest ibm128 0x3.417a24p+0 : 0xf.f3d7dc3db7d664cd14c092d5d8p-4 : inexact-ok += tanh towardzero ibm128 0x3.417a24p+0 : 0xf.f3d7dc3db7d664cd14c092d5d8p-4 : inexact-ok += tanh upward ibm128 0x3.417a24p+0 : 0xf.f3d7dc3db7d664cd14c092d5dcp-4 : inexact-ok += tanh downward binary32 0x3.417a2p+0 : 0xf.f3d7dp-4 : inexact-ok += tanh tonearest binary32 0x3.417a2p+0 : 0xf.f3d7ep-4 : inexact-ok += tanh towardzero binary32 0x3.417a2p+0 : 0xf.f3d7dp-4 : inexact-ok += tanh upward binary32 0x3.417a2p+0 : 0xf.f3d7ep-4 : inexact-ok += tanh downward binary64 0x3.417a2p+0 : 0xf.f3d7dbdc9ba9p-4 : inexact-ok += tanh tonearest binary64 0x3.417a2p+0 : 0xf.f3d7dbdc9ba9p-4 : inexact-ok += tanh towardzero binary64 0x3.417a2p+0 : 0xf.f3d7dbdc9ba9p-4 : inexact-ok += tanh upward binary64 0x3.417a2p+0 : 0xf.f3d7dbdc9ba98p-4 : inexact-ok += tanh downward intel96 0x3.417a2p+0 : 0xf.f3d7dbdc9ba9389p-4 : inexact-ok += tanh tonearest intel96 0x3.417a2p+0 : 0xf.f3d7dbdc9ba938ap-4 : inexact-ok += tanh towardzero intel96 0x3.417a2p+0 : 0xf.f3d7dbdc9ba9389p-4 : inexact-ok += tanh upward intel96 0x3.417a2p+0 : 0xf.f3d7dbdc9ba938ap-4 : inexact-ok += tanh downward m68k96 0x3.417a2p+0 : 0xf.f3d7dbdc9ba9389p-4 : inexact-ok += tanh tonearest m68k96 0x3.417a2p+0 : 0xf.f3d7dbdc9ba938ap-4 : inexact-ok += tanh towardzero m68k96 0x3.417a2p+0 : 0xf.f3d7dbdc9ba9389p-4 : inexact-ok += tanh upward m68k96 0x3.417a2p+0 : 0xf.f3d7dbdc9ba938ap-4 : inexact-ok += tanh downward binary128 0x3.417a2p+0 : 0xf.f3d7dbdc9ba9389c568b3e2af278p-4 : inexact-ok += tanh tonearest binary128 0x3.417a2p+0 : 0xf.f3d7dbdc9ba9389c568b3e2af28p-4 : inexact-ok += tanh towardzero binary128 0x3.417a2p+0 : 0xf.f3d7dbdc9ba9389c568b3e2af278p-4 : inexact-ok += tanh upward binary128 0x3.417a2p+0 : 0xf.f3d7dbdc9ba9389c568b3e2af28p-4 : inexact-ok += tanh downward ibm128 0x3.417a2p+0 : 0xf.f3d7dbdc9ba9389c568b3e2afp-4 : inexact-ok += tanh tonearest ibm128 0x3.417a2p+0 : 0xf.f3d7dbdc9ba9389c568b3e2af4p-4 : inexact-ok += tanh towardzero ibm128 0x3.417a2p+0 : 0xf.f3d7dbdc9ba9389c568b3e2afp-4 : inexact-ok += tanh upward ibm128 0x3.417a2p+0 : 0xf.f3d7dbdc9ba9389c568b3e2af4p-4 : inexact-ok += tanh downward binary64 0x3.417a22f1d468cp+0 : 0xf.f3d7dc2418c68p-4 : inexact-ok += tanh tonearest binary64 0x3.417a22f1d468cp+0 : 0xf.f3d7dc2418c68p-4 : inexact-ok += tanh towardzero binary64 0x3.417a22f1d468cp+0 : 0xf.f3d7dc2418c68p-4 : inexact-ok += tanh upward binary64 0x3.417a22f1d468cp+0 : 0xf.f3d7dc2418c7p-4 : inexact-ok += tanh downward intel96 0x3.417a22f1d468cp+0 : 0xf.f3d7dc2418c68p-4 : inexact-ok += tanh tonearest intel96 0x3.417a22f1d468cp+0 : 0xf.f3d7dc2418c68p-4 : inexact-ok += tanh towardzero intel96 0x3.417a22f1d468cp+0 : 0xf.f3d7dc2418c68p-4 : inexact-ok += tanh upward intel96 0x3.417a22f1d468cp+0 : 0xf.f3d7dc2418c6801p-4 : inexact-ok += tanh downward m68k96 0x3.417a22f1d468cp+0 : 0xf.f3d7dc2418c68p-4 : inexact-ok += tanh tonearest m68k96 0x3.417a22f1d468cp+0 : 0xf.f3d7dc2418c68p-4 : inexact-ok += tanh towardzero m68k96 0x3.417a22f1d468cp+0 : 0xf.f3d7dc2418c68p-4 : inexact-ok += tanh upward m68k96 0x3.417a22f1d468cp+0 : 0xf.f3d7dc2418c6801p-4 : inexact-ok += tanh downward binary128 0x3.417a22f1d468cp+0 : 0xf.f3d7dc2418c68000013a883f3d9p-4 : inexact-ok += tanh tonearest binary128 0x3.417a22f1d468cp+0 : 0xf.f3d7dc2418c68000013a883f3d9p-4 : inexact-ok += tanh towardzero binary128 0x3.417a22f1d468cp+0 : 0xf.f3d7dc2418c68000013a883f3d9p-4 : inexact-ok += tanh upward binary128 0x3.417a22f1d468cp+0 : 0xf.f3d7dc2418c68000013a883f3d98p-4 : inexact-ok += tanh downward ibm128 0x3.417a22f1d468cp+0 : 0xf.f3d7dc2418c68000013a883f3cp-4 : inexact-ok += tanh tonearest ibm128 0x3.417a22f1d468cp+0 : 0xf.f3d7dc2418c68000013a883f3cp-4 : inexact-ok += tanh towardzero ibm128 0x3.417a22f1d468cp+0 : 0xf.f3d7dc2418c68000013a883f3cp-4 : inexact-ok += tanh upward ibm128 0x3.417a22f1d468cp+0 : 0xf.f3d7dc2418c68000013a883f4p-4 : inexact-ok +tanh -0x1.a0bd1178ea346p+1 += tanh downward binary32 -0x3.417a2p+0 : -0xf.f3d7ep-4 : inexact-ok += tanh tonearest binary32 -0x3.417a2p+0 : -0xf.f3d7ep-4 : inexact-ok += tanh towardzero binary32 -0x3.417a2p+0 : -0xf.f3d7dp-4 : inexact-ok += tanh upward binary32 -0x3.417a2p+0 : -0xf.f3d7dp-4 : inexact-ok += tanh downward binary64 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba98p-4 : inexact-ok += tanh tonearest binary64 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba9p-4 : inexact-ok += tanh towardzero binary64 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba9p-4 : inexact-ok += tanh upward binary64 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba9p-4 : inexact-ok += tanh downward intel96 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba938ap-4 : inexact-ok += tanh tonearest intel96 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba938ap-4 : inexact-ok += tanh towardzero intel96 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba9389p-4 : inexact-ok += tanh upward intel96 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba9389p-4 : inexact-ok += tanh downward m68k96 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba938ap-4 : inexact-ok += tanh tonearest m68k96 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba938ap-4 : inexact-ok += tanh towardzero m68k96 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba9389p-4 : inexact-ok += tanh upward m68k96 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba9389p-4 : inexact-ok += tanh downward binary128 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba9389c568b3e2af28p-4 : inexact-ok += tanh tonearest binary128 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba9389c568b3e2af28p-4 : inexact-ok += tanh towardzero binary128 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba9389c568b3e2af278p-4 : inexact-ok += tanh upward binary128 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba9389c568b3e2af278p-4 : inexact-ok += tanh downward ibm128 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba9389c568b3e2af4p-4 : inexact-ok += tanh tonearest ibm128 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba9389c568b3e2af4p-4 : inexact-ok += tanh towardzero ibm128 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba9389c568b3e2afp-4 : inexact-ok += tanh upward ibm128 -0x3.417a2p+0 : -0xf.f3d7dbdc9ba9389c568b3e2afp-4 : inexact-ok += tanh downward binary32 -0x3.417a24p+0 : -0xf.f3d7ep-4 : inexact-ok += tanh tonearest binary32 -0x3.417a24p+0 : -0xf.f3d7ep-4 : inexact-ok += tanh towardzero binary32 -0x3.417a24p+0 : -0xf.f3d7dp-4 : inexact-ok += tanh upward binary32 -0x3.417a24p+0 : -0xf.f3d7dp-4 : inexact-ok += tanh downward binary64 -0x3.417a24p+0 : -0xf.f3d7dc3db7d68p-4 : inexact-ok += tanh tonearest binary64 -0x3.417a24p+0 : -0xf.f3d7dc3db7d68p-4 : inexact-ok += tanh towardzero binary64 -0x3.417a24p+0 : -0xf.f3d7dc3db7d6p-4 : inexact-ok += tanh upward binary64 -0x3.417a24p+0 : -0xf.f3d7dc3db7d6p-4 : inexact-ok += tanh downward intel96 -0x3.417a24p+0 : -0xf.f3d7dc3db7d664dp-4 : inexact-ok += tanh tonearest intel96 -0x3.417a24p+0 : -0xf.f3d7dc3db7d664dp-4 : inexact-ok += tanh towardzero intel96 -0x3.417a24p+0 : -0xf.f3d7dc3db7d664cp-4 : inexact-ok += tanh upward intel96 -0x3.417a24p+0 : -0xf.f3d7dc3db7d664cp-4 : inexact-ok += tanh downward m68k96 -0x3.417a24p+0 : -0xf.f3d7dc3db7d664dp-4 : inexact-ok += tanh tonearest m68k96 -0x3.417a24p+0 : -0xf.f3d7dc3db7d664dp-4 : inexact-ok += tanh towardzero m68k96 -0x3.417a24p+0 : -0xf.f3d7dc3db7d664cp-4 : inexact-ok += tanh upward m68k96 -0x3.417a24p+0 : -0xf.f3d7dc3db7d664cp-4 : inexact-ok += tanh downward binary128 -0x3.417a24p+0 : -0xf.f3d7dc3db7d664cd14c092d5d888p-4 : inexact-ok += tanh tonearest binary128 -0x3.417a24p+0 : -0xf.f3d7dc3db7d664cd14c092d5d88p-4 : inexact-ok += tanh towardzero binary128 -0x3.417a24p+0 : -0xf.f3d7dc3db7d664cd14c092d5d88p-4 : inexact-ok += tanh upward binary128 -0x3.417a24p+0 : -0xf.f3d7dc3db7d664cd14c092d5d88p-4 : inexact-ok += tanh downward ibm128 -0x3.417a24p+0 : -0xf.f3d7dc3db7d664cd14c092d5dcp-4 : inexact-ok += tanh tonearest ibm128 -0x3.417a24p+0 : -0xf.f3d7dc3db7d664cd14c092d5d8p-4 : inexact-ok += tanh towardzero ibm128 -0x3.417a24p+0 : -0xf.f3d7dc3db7d664cd14c092d5d8p-4 : inexact-ok += tanh upward ibm128 -0x3.417a24p+0 : -0xf.f3d7dc3db7d664cd14c092d5d8p-4 : inexact-ok += tanh downward binary64 -0x3.417a22f1d468cp+0 : -0xf.f3d7dc2418c7p-4 : inexact-ok += tanh tonearest binary64 -0x3.417a22f1d468cp+0 : -0xf.f3d7dc2418c68p-4 : inexact-ok += tanh towardzero binary64 -0x3.417a22f1d468cp+0 : -0xf.f3d7dc2418c68p-4 : inexact-ok += tanh upward binary64 -0x3.417a22f1d468cp+0 : -0xf.f3d7dc2418c68p-4 : inexact-ok += tanh downward intel96 -0x3.417a22f1d468cp+0 : -0xf.f3d7dc2418c6801p-4 : inexact-ok += tanh tonearest intel96 -0x3.417a22f1d468cp+0 : -0xf.f3d7dc2418c68p-4 : inexact-ok += tanh towardzero intel96 -0x3.417a22f1d468cp+0 : -0xf.f3d7dc2418c68p-4 : inexact-ok += tanh upward intel96 -0x3.417a22f1d468cp+0 : -0xf.f3d7dc2418c68p-4 : inexact-ok += tanh downward m68k96 -0x3.417a22f1d468cp+0 : -0xf.f3d7dc2418c6801p-4 : inexact-ok += tanh tonearest m68k96 -0x3.417a22f1d468cp+0 : -0xf.f3d7dc2418c68p-4 : inexact-ok += tanh towardzero m68k96 -0x3.417a22f1d468cp+0 : -0xf.f3d7dc2418c68p-4 : inexact-ok += tanh upward m68k96 -0x3.417a22f1d468cp+0 : -0xf.f3d7dc2418c68p-4 : inexact-ok += tanh downward binary128 -0x3.417a22f1d468cp+0 : -0xf.f3d7dc2418c68000013a883f3d98p-4 : inexact-ok += tanh tonearest binary128 -0x3.417a22f1d468cp+0 : -0xf.f3d7dc2418c68000013a883f3d9p-4 : inexact-ok += tanh towardzero binary128 -0x3.417a22f1d468cp+0 : -0xf.f3d7dc2418c68000013a883f3d9p-4 : inexact-ok += tanh upward binary128 -0x3.417a22f1d468cp+0 : -0xf.f3d7dc2418c68000013a883f3d9p-4 : inexact-ok += tanh downward ibm128 -0x3.417a22f1d468cp+0 : -0xf.f3d7dc2418c68000013a883f4p-4 : inexact-ok += tanh tonearest ibm128 -0x3.417a22f1d468cp+0 : -0xf.f3d7dc2418c68000013a883f3cp-4 : inexact-ok += tanh towardzero ibm128 -0x3.417a22f1d468cp+0 : -0xf.f3d7dc2418c68000013a883f3cp-4 : inexact-ok += tanh upward ibm128 -0x3.417a22f1d468cp+0 : -0xf.f3d7dc2418c68000013a883f3cp-4 : inexact-ok +tanh 0x1.a0bd144ac78ap+1 += tanh downward binary32 0x3.417a2cp+0 : 0xf.f3d7dp-4 : inexact-ok += tanh tonearest binary32 0x3.417a2cp+0 : 0xf.f3d7ep-4 : inexact-ok += tanh towardzero binary32 0x3.417a2cp+0 : 0xf.f3d7dp-4 : inexact-ok += tanh upward binary32 0x3.417a2cp+0 : 0xf.f3d7ep-4 : inexact-ok += tanh downward binary64 0x3.417a2cp+0 : 0xf.f3d7dcfff0278p-4 : inexact-ok += tanh tonearest binary64 0x3.417a2cp+0 : 0xf.f3d7dcfff0278p-4 : inexact-ok += tanh towardzero binary64 0x3.417a2cp+0 : 0xf.f3d7dcfff0278p-4 : inexact-ok += tanh upward binary64 0x3.417a2cp+0 : 0xf.f3d7dcfff028p-4 : inexact-ok += tanh downward intel96 0x3.417a2cp+0 : 0xf.f3d7dcfff027a97p-4 : inexact-ok += tanh tonearest intel96 0x3.417a2cp+0 : 0xf.f3d7dcfff027a97p-4 : inexact-ok += tanh towardzero intel96 0x3.417a2cp+0 : 0xf.f3d7dcfff027a97p-4 : inexact-ok += tanh upward intel96 0x3.417a2cp+0 : 0xf.f3d7dcfff027a98p-4 : inexact-ok += tanh downward m68k96 0x3.417a2cp+0 : 0xf.f3d7dcfff027a97p-4 : inexact-ok += tanh tonearest m68k96 0x3.417a2cp+0 : 0xf.f3d7dcfff027a97p-4 : inexact-ok += tanh towardzero m68k96 0x3.417a2cp+0 : 0xf.f3d7dcfff027a97p-4 : inexact-ok += tanh upward m68k96 0x3.417a2cp+0 : 0xf.f3d7dcfff027a98p-4 : inexact-ok += tanh downward binary128 0x3.417a2cp+0 : 0xf.f3d7dcfff027a975636a47803b1p-4 : inexact-ok += tanh tonearest binary128 0x3.417a2cp+0 : 0xf.f3d7dcfff027a975636a47803b18p-4 : inexact-ok += tanh towardzero binary128 0x3.417a2cp+0 : 0xf.f3d7dcfff027a975636a47803b1p-4 : inexact-ok += tanh upward binary128 0x3.417a2cp+0 : 0xf.f3d7dcfff027a975636a47803b18p-4 : inexact-ok += tanh downward ibm128 0x3.417a2cp+0 : 0xf.f3d7dcfff027a975636a478038p-4 : inexact-ok += tanh tonearest ibm128 0x3.417a2cp+0 : 0xf.f3d7dcfff027a975636a47803cp-4 : inexact-ok += tanh towardzero ibm128 0x3.417a2cp+0 : 0xf.f3d7dcfff027a975636a478038p-4 : inexact-ok += tanh upward ibm128 0x3.417a2cp+0 : 0xf.f3d7dcfff027a975636a47803cp-4 : inexact-ok += tanh downward binary32 0x3.417a28p+0 : 0xf.f3d7dp-4 : inexact-ok += tanh tonearest binary32 0x3.417a28p+0 : 0xf.f3d7ep-4 : inexact-ok += tanh towardzero binary32 0x3.417a28p+0 : 0xf.f3d7dp-4 : inexact-ok += tanh upward binary32 0x3.417a28p+0 : 0xf.f3d7ep-4 : inexact-ok += tanh downward binary64 0x3.417a28p+0 : 0xf.f3d7dc9ed4008p-4 : inexact-ok += tanh tonearest binary64 0x3.417a28p+0 : 0xf.f3d7dc9ed4008p-4 : inexact-ok += tanh towardzero binary64 0x3.417a28p+0 : 0xf.f3d7dc9ed4008p-4 : inexact-ok += tanh upward binary64 0x3.417a28p+0 : 0xf.f3d7dc9ed401p-4 : inexact-ok += tanh downward intel96 0x3.417a28p+0 : 0xf.f3d7dc9ed4008a6p-4 : inexact-ok += tanh tonearest intel96 0x3.417a28p+0 : 0xf.f3d7dc9ed4008a7p-4 : inexact-ok += tanh towardzero intel96 0x3.417a28p+0 : 0xf.f3d7dc9ed4008a6p-4 : inexact-ok += tanh upward intel96 0x3.417a28p+0 : 0xf.f3d7dc9ed4008a7p-4 : inexact-ok += tanh downward m68k96 0x3.417a28p+0 : 0xf.f3d7dc9ed4008a6p-4 : inexact-ok += tanh tonearest m68k96 0x3.417a28p+0 : 0xf.f3d7dc9ed4008a7p-4 : inexact-ok += tanh towardzero m68k96 0x3.417a28p+0 : 0xf.f3d7dc9ed4008a6p-4 : inexact-ok += tanh upward m68k96 0x3.417a28p+0 : 0xf.f3d7dc9ed4008a7p-4 : inexact-ok += tanh downward binary128 0x3.417a28p+0 : 0xf.f3d7dc9ed4008a6abbb052f1fdcp-4 : inexact-ok += tanh tonearest binary128 0x3.417a28p+0 : 0xf.f3d7dc9ed4008a6abbb052f1fdc8p-4 : inexact-ok += tanh towardzero binary128 0x3.417a28p+0 : 0xf.f3d7dc9ed4008a6abbb052f1fdcp-4 : inexact-ok += tanh upward binary128 0x3.417a28p+0 : 0xf.f3d7dc9ed4008a6abbb052f1fdc8p-4 : inexact-ok += tanh downward ibm128 0x3.417a28p+0 : 0xf.f3d7dc9ed4008a6abbb052f1fcp-4 : inexact-ok += tanh tonearest ibm128 0x3.417a28p+0 : 0xf.f3d7dc9ed4008a6abbb052f1fcp-4 : inexact-ok += tanh towardzero ibm128 0x3.417a28p+0 : 0xf.f3d7dc9ed4008a6abbb052f1fcp-4 : inexact-ok += tanh upward ibm128 0x3.417a28p+0 : 0xf.f3d7dc9ed4008a6abbb052f2p-4 : inexact-ok += tanh downward binary64 0x3.417a28958f14p+0 : 0xf.f3d7dcad02ebp-4 : inexact-ok += tanh tonearest binary64 0x3.417a28958f14p+0 : 0xf.f3d7dcad02ebp-4 : inexact-ok += tanh towardzero binary64 0x3.417a28958f14p+0 : 0xf.f3d7dcad02ebp-4 : inexact-ok += tanh upward binary64 0x3.417a28958f14p+0 : 0xf.f3d7dcad02eb8p-4 : inexact-ok += tanh downward intel96 0x3.417a28958f14p+0 : 0xf.f3d7dcad02ebp-4 : inexact-ok += tanh tonearest intel96 0x3.417a28958f14p+0 : 0xf.f3d7dcad02ebp-4 : inexact-ok += tanh towardzero intel96 0x3.417a28958f14p+0 : 0xf.f3d7dcad02ebp-4 : inexact-ok += tanh upward intel96 0x3.417a28958f14p+0 : 0xf.f3d7dcad02eb001p-4 : inexact-ok += tanh downward m68k96 0x3.417a28958f14p+0 : 0xf.f3d7dcad02ebp-4 : inexact-ok += tanh tonearest m68k96 0x3.417a28958f14p+0 : 0xf.f3d7dcad02ebp-4 : inexact-ok += tanh towardzero m68k96 0x3.417a28958f14p+0 : 0xf.f3d7dcad02ebp-4 : inexact-ok += tanh upward m68k96 0x3.417a28958f14p+0 : 0xf.f3d7dcad02eb001p-4 : inexact-ok += tanh downward binary128 0x3.417a28958f14p+0 : 0xf.f3d7dcad02eb0000002d2b73bf8p-4 : inexact-ok += tanh tonearest binary128 0x3.417a28958f14p+0 : 0xf.f3d7dcad02eb0000002d2b73bf8p-4 : inexact-ok += tanh towardzero binary128 0x3.417a28958f14p+0 : 0xf.f3d7dcad02eb0000002d2b73bf8p-4 : inexact-ok += tanh upward binary128 0x3.417a28958f14p+0 : 0xf.f3d7dcad02eb0000002d2b73bf88p-4 : inexact-ok += tanh downward ibm128 0x3.417a28958f14p+0 : 0xf.f3d7dcad02eb0000002d2b73bcp-4 : inexact-ok += tanh tonearest ibm128 0x3.417a28958f14p+0 : 0xf.f3d7dcad02eb0000002d2b73cp-4 : inexact-ok += tanh towardzero ibm128 0x3.417a28958f14p+0 : 0xf.f3d7dcad02eb0000002d2b73bcp-4 : inexact-ok += tanh upward ibm128 0x3.417a28958f14p+0 : 0xf.f3d7dcad02eb0000002d2b73cp-4 : inexact-ok +tanh -0x1.a0bd144ac78ap+1 += tanh downward binary32 -0x3.417a28p+0 : -0xf.f3d7ep-4 : inexact-ok += tanh tonearest binary32 -0x3.417a28p+0 : -0xf.f3d7ep-4 : inexact-ok += tanh towardzero binary32 -0x3.417a28p+0 : -0xf.f3d7dp-4 : inexact-ok += tanh upward binary32 -0x3.417a28p+0 : -0xf.f3d7dp-4 : inexact-ok += tanh downward binary64 -0x3.417a28p+0 : -0xf.f3d7dc9ed401p-4 : inexact-ok += tanh tonearest binary64 -0x3.417a28p+0 : -0xf.f3d7dc9ed4008p-4 : inexact-ok += tanh towardzero binary64 -0x3.417a28p+0 : -0xf.f3d7dc9ed4008p-4 : inexact-ok += tanh upward binary64 -0x3.417a28p+0 : -0xf.f3d7dc9ed4008p-4 : inexact-ok += tanh downward intel96 -0x3.417a28p+0 : -0xf.f3d7dc9ed4008a7p-4 : inexact-ok += tanh tonearest intel96 -0x3.417a28p+0 : -0xf.f3d7dc9ed4008a7p-4 : inexact-ok += tanh towardzero intel96 -0x3.417a28p+0 : -0xf.f3d7dc9ed4008a6p-4 : inexact-ok += tanh upward intel96 -0x3.417a28p+0 : -0xf.f3d7dc9ed4008a6p-4 : inexact-ok += tanh downward m68k96 -0x3.417a28p+0 : -0xf.f3d7dc9ed4008a7p-4 : inexact-ok += tanh tonearest m68k96 -0x3.417a28p+0 : -0xf.f3d7dc9ed4008a7p-4 : inexact-ok += tanh towardzero m68k96 -0x3.417a28p+0 : -0xf.f3d7dc9ed4008a6p-4 : inexact-ok += tanh upward m68k96 -0x3.417a28p+0 : -0xf.f3d7dc9ed4008a6p-4 : inexact-ok += tanh downward binary128 -0x3.417a28p+0 : -0xf.f3d7dc9ed4008a6abbb052f1fdc8p-4 : inexact-ok += tanh tonearest binary128 -0x3.417a28p+0 : -0xf.f3d7dc9ed4008a6abbb052f1fdc8p-4 : inexact-ok += tanh towardzero binary128 -0x3.417a28p+0 : -0xf.f3d7dc9ed4008a6abbb052f1fdcp-4 : inexact-ok += tanh upward binary128 -0x3.417a28p+0 : -0xf.f3d7dc9ed4008a6abbb052f1fdcp-4 : inexact-ok += tanh downward ibm128 -0x3.417a28p+0 : -0xf.f3d7dc9ed4008a6abbb052f2p-4 : inexact-ok += tanh tonearest ibm128 -0x3.417a28p+0 : -0xf.f3d7dc9ed4008a6abbb052f1fcp-4 : inexact-ok += tanh towardzero ibm128 -0x3.417a28p+0 : -0xf.f3d7dc9ed4008a6abbb052f1fcp-4 : inexact-ok += tanh upward ibm128 -0x3.417a28p+0 : -0xf.f3d7dc9ed4008a6abbb052f1fcp-4 : inexact-ok += tanh downward binary32 -0x3.417a2cp+0 : -0xf.f3d7ep-4 : inexact-ok += tanh tonearest binary32 -0x3.417a2cp+0 : -0xf.f3d7ep-4 : inexact-ok += tanh towardzero binary32 -0x3.417a2cp+0 : -0xf.f3d7dp-4 : inexact-ok += tanh upward binary32 -0x3.417a2cp+0 : -0xf.f3d7dp-4 : inexact-ok += tanh downward binary64 -0x3.417a2cp+0 : -0xf.f3d7dcfff028p-4 : inexact-ok += tanh tonearest binary64 -0x3.417a2cp+0 : -0xf.f3d7dcfff0278p-4 : inexact-ok += tanh towardzero binary64 -0x3.417a2cp+0 : -0xf.f3d7dcfff0278p-4 : inexact-ok += tanh upward binary64 -0x3.417a2cp+0 : -0xf.f3d7dcfff0278p-4 : inexact-ok += tanh downward intel96 -0x3.417a2cp+0 : -0xf.f3d7dcfff027a98p-4 : inexact-ok += tanh tonearest intel96 -0x3.417a2cp+0 : -0xf.f3d7dcfff027a97p-4 : inexact-ok += tanh towardzero intel96 -0x3.417a2cp+0 : -0xf.f3d7dcfff027a97p-4 : inexact-ok += tanh upward intel96 -0x3.417a2cp+0 : -0xf.f3d7dcfff027a97p-4 : inexact-ok += tanh downward m68k96 -0x3.417a2cp+0 : -0xf.f3d7dcfff027a98p-4 : inexact-ok += tanh tonearest m68k96 -0x3.417a2cp+0 : -0xf.f3d7dcfff027a97p-4 : inexact-ok += tanh towardzero m68k96 -0x3.417a2cp+0 : -0xf.f3d7dcfff027a97p-4 : inexact-ok += tanh upward m68k96 -0x3.417a2cp+0 : -0xf.f3d7dcfff027a97p-4 : inexact-ok += tanh downward binary128 -0x3.417a2cp+0 : -0xf.f3d7dcfff027a975636a47803b18p-4 : inexact-ok += tanh tonearest binary128 -0x3.417a2cp+0 : -0xf.f3d7dcfff027a975636a47803b18p-4 : inexact-ok += tanh towardzero binary128 -0x3.417a2cp+0 : -0xf.f3d7dcfff027a975636a47803b1p-4 : inexact-ok += tanh upward binary128 -0x3.417a2cp+0 : -0xf.f3d7dcfff027a975636a47803b1p-4 : inexact-ok += tanh downward ibm128 -0x3.417a2cp+0 : -0xf.f3d7dcfff027a975636a47803cp-4 : inexact-ok += tanh tonearest ibm128 -0x3.417a2cp+0 : -0xf.f3d7dcfff027a975636a47803cp-4 : inexact-ok += tanh towardzero ibm128 -0x3.417a2cp+0 : -0xf.f3d7dcfff027a975636a478038p-4 : inexact-ok += tanh upward ibm128 -0x3.417a2cp+0 : -0xf.f3d7dcfff027a975636a478038p-4 : inexact-ok += tanh downward binary64 -0x3.417a28958f14p+0 : -0xf.f3d7dcad02eb8p-4 : inexact-ok += tanh tonearest binary64 -0x3.417a28958f14p+0 : -0xf.f3d7dcad02ebp-4 : inexact-ok += tanh towardzero binary64 -0x3.417a28958f14p+0 : -0xf.f3d7dcad02ebp-4 : inexact-ok += tanh upward binary64 -0x3.417a28958f14p+0 : -0xf.f3d7dcad02ebp-4 : inexact-ok += tanh downward intel96 -0x3.417a28958f14p+0 : -0xf.f3d7dcad02eb001p-4 : inexact-ok += tanh tonearest intel96 -0x3.417a28958f14p+0 : -0xf.f3d7dcad02ebp-4 : inexact-ok += tanh towardzero intel96 -0x3.417a28958f14p+0 : -0xf.f3d7dcad02ebp-4 : inexact-ok += tanh upward intel96 -0x3.417a28958f14p+0 : -0xf.f3d7dcad02ebp-4 : inexact-ok += tanh downward m68k96 -0x3.417a28958f14p+0 : -0xf.f3d7dcad02eb001p-4 : inexact-ok += tanh tonearest m68k96 -0x3.417a28958f14p+0 : -0xf.f3d7dcad02ebp-4 : inexact-ok += tanh towardzero m68k96 -0x3.417a28958f14p+0 : -0xf.f3d7dcad02ebp-4 : inexact-ok += tanh upward m68k96 -0x3.417a28958f14p+0 : -0xf.f3d7dcad02ebp-4 : inexact-ok += tanh downward binary128 -0x3.417a28958f14p+0 : -0xf.f3d7dcad02eb0000002d2b73bf88p-4 : inexact-ok += tanh tonearest binary128 -0x3.417a28958f14p+0 : -0xf.f3d7dcad02eb0000002d2b73bf8p-4 : inexact-ok += tanh towardzero binary128 -0x3.417a28958f14p+0 : -0xf.f3d7dcad02eb0000002d2b73bf8p-4 : inexact-ok += tanh upward binary128 -0x3.417a28958f14p+0 : -0xf.f3d7dcad02eb0000002d2b73bf8p-4 : inexact-ok += tanh downward ibm128 -0x3.417a28958f14p+0 : -0xf.f3d7dcad02eb0000002d2b73cp-4 : inexact-ok += tanh tonearest ibm128 -0x3.417a28958f14p+0 : -0xf.f3d7dcad02eb0000002d2b73cp-4 : inexact-ok += tanh towardzero ibm128 -0x3.417a28958f14p+0 : -0xf.f3d7dcad02eb0000002d2b73bcp-4 : inexact-ok += tanh upward ibm128 -0x3.417a28958f14p+0 : -0xf.f3d7dcad02eb0000002d2b73bcp-4 : inexact-ok tanh max = tanh downward binary32 0xf.fffffp+124 : 0xf.fffffp-4 : inexact-ok = tanh tonearest binary32 0xf.fffffp+124 : 0x1p+0 : inexact-ok diff --git a/sysdeps/ieee754/dbl-64/s_tanh.c b/sysdeps/ieee754/dbl-64/s_tanh.c index ef80b9edb6..6d57cef5b8 100644 --- a/sysdeps/ieee754/dbl-64/s_tanh.c +++ b/sysdeps/ieee754/dbl-64/s_tanh.c @@ -233,9 +233,11 @@ __tanh (double x) /* This branch was tested exhaustively with/without fma contraction. During this search, a failure was found with the original error - bound (e = rh*0x1p-62) and x=0x1.a0112a16e9318p+1 (rndu, no fma + bound (e = rh*0x1p-62) and x=+/-0x1.a0112a16e9318p+1 (rndu, no fma + contraction). Another failure was found with + x=+/-0x1.a0bd10af4ac2bp+1 and e = rh*0x1.0cp-62 (rndu, no fma contraction). */ - double e = rh * 0x1.0bp-62; + double e = rh * 0x1.0dp-62; rh = fasttwosub (0.5, ph, &rl); rl -= pl; rh *= copysign (2, x);