[COMMITTED] math: Update tanh from CORE-MATH (revision bb39e4fa)
Adhemerval Zanella <[email protected]>
| Newsgroups | gmane.comp.lib.glibc.alpha |
|---|---|
| Message-ID | <[email protected]> |
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.
---
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);
--
2.53.0