aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2015-08-10 20:35:30 +0000
committerJoseph Myers <joseph@codesourcery.com>2015-08-10 20:35:30 +0000
commit7ee06ef15827f8f2582a94b1ceaad47eaf502744 (patch)
treea9708093ad2f011a6a92b76e7aab574b72593649
parenteb32b0d40308166c4d8f6330cc2958cb1e545075 (diff)
downloadglibc-7ee06ef15827f8f2582a94b1ceaad47eaf502744.zip
glibc-7ee06ef15827f8f2582a94b1ceaad47eaf502744.tar.gz
glibc-7ee06ef15827f8f2582a94b1ceaad47eaf502744.tar.bz2
Fix ldbl-128ibm tanhl inaccuracy (bug 18790).
ldbl-128ibm tanhl uses a too-small threshold to decide when to return +/-1, resulting in large errors. This patch changes it to a more appropriate threshold (the requirement is for 2*exp(-2|x|) to be small in terms of ulps of 1). Tested for x86_64, x86 and powerpc. [BZ #18790] * sysdeps/ieee754/ldbl-128ibm/s_tanhl.c (__tanhl): Increase threshold for returning +/- 1. * math/auto-libm-test-in: Add more tests of tanh. * math/auto-libm-test-out: Regenerated. * sysdeps/i386/fpu/libm-test-ulps: Update.
-rw-r--r--ChangeLog9
-rw-r--r--NEWS2
-rw-r--r--math/auto-libm-test-in36
-rw-r--r--math/auto-libm-test-out900
-rw-r--r--sysdeps/i386/fpu/libm-test-ulps2
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/s_tanhl.c10
6 files changed, 952 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index 3c30529..8d640e8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2015-08-10 Joseph Myers <joseph@codesourcery.com>
+
+ [BZ #18790]
+ * sysdeps/ieee754/ldbl-128ibm/s_tanhl.c (__tanhl): Increase
+ threshold for returning +/- 1.
+ * math/auto-libm-test-in: Add more tests of tanh.
+ * math/auto-libm-test-out: Regenerated.
+ * sysdeps/i386/fpu/libm-test-ulps: Update.
+
2015-08-10 Andreas Schwab <schwab@suse.de>
[BZ #18781]
diff --git a/NEWS b/NEWS
index ef7e1a9..b73fb72 100644
--- a/NEWS
+++ b/NEWS
@@ -10,7 +10,7 @@ Version 2.23
* The following bugs are resolved with this release:
16517, 16519, 17905, 18265, 18480, 18525, 18618, 18647, 18661, 18674,
- 18781, 18787, 18789.
+ 18781, 18787, 18789, 18790.
Version 2.22
diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in
index c33334c..6716cfe 100644
--- a/math/auto-libm-test-in
+++ b/math/auto-libm-test-in
@@ -2692,6 +2692,42 @@ tanh 0.75
tanh -0.75
tanh 1.0
tanh -1.0
+tanh 2
+tanh -2
+tanh 3
+tanh -3
+tanh 4
+tanh -4
+tanh 5
+tanh -5
+tanh 6
+tanh -6
+tanh 7
+tanh -7
+tanh 8
+tanh -8
+tanh 9
+tanh -9
+tanh 10
+tanh -10
+tanh 15
+tanh -15
+tanh 20
+tanh -20
+tanh 22
+tanh -22
+tanh 25
+tanh -25
+tanh 30
+tanh -30
+tanh 35
+tanh -35
+tanh 40
+tanh -40
+tanh 45
+tanh -45
+tanh 50
+tanh -50
tanh 0x1p-57
tanh 0xe.6c659p-4
tanh 0x8.c259ep-4
diff --git a/math/auto-libm-test-out b/math/auto-libm-test-out
index 3471a15..ed49d48 100644
--- a/math/auto-libm-test-out
+++ b/math/auto-libm-test-out
@@ -202399,6 +202399,906 @@ tanh -1.0
= tanh tonearest ldbl-128ibm -0x1p+0L : -0xc.2f7d5a8a79ca2ac3195f149e2p-4L : inexact-ok
= tanh towardzero ldbl-128ibm -0x1p+0L : -0xc.2f7d5a8a79ca2ac3195f149e2p-4L : inexact-ok
= tanh upward ldbl-128ibm -0x1p+0L : -0xc.2f7d5a8a79ca2ac3195f149e2p-4L : inexact-ok
+tanh 2
+= tanh downward flt-32 0x2p+0f : 0xf.6ca82p-4f : inexact-ok
+= tanh tonearest flt-32 0x2p+0f : 0xf.6ca83p-4f : inexact-ok
+= tanh towardzero flt-32 0x2p+0f : 0xf.6ca82p-4f : inexact-ok
+= tanh upward flt-32 0x2p+0f : 0xf.6ca83p-4f : inexact-ok
+= tanh downward dbl-64 0x2p+0 : 0xf.6ca82f0de1e98p-4 : inexact-ok
+= tanh tonearest dbl-64 0x2p+0 : 0xf.6ca82f0de1eap-4 : inexact-ok
+= tanh towardzero dbl-64 0x2p+0 : 0xf.6ca82f0de1e98p-4 : inexact-ok
+= tanh upward dbl-64 0x2p+0 : 0xf.6ca82f0de1eap-4 : inexact-ok
+= tanh downward ldbl-96-intel 0x2p+0L : 0xf.6ca82f0de1e9e99p-4L : inexact-ok
+= tanh tonearest ldbl-96-intel 0x2p+0L : 0xf.6ca82f0de1e9e9ap-4L : inexact-ok
+= tanh towardzero ldbl-96-intel 0x2p+0L : 0xf.6ca82f0de1e9e99p-4L : inexact-ok
+= tanh upward ldbl-96-intel 0x2p+0L : 0xf.6ca82f0de1e9e9ap-4L : inexact-ok
+= tanh downward ldbl-96-m68k 0x2p+0L : 0xf.6ca82f0de1e9e99p-4L : inexact-ok
+= tanh tonearest ldbl-96-m68k 0x2p+0L : 0xf.6ca82f0de1e9e9ap-4L : inexact-ok
+= tanh towardzero ldbl-96-m68k 0x2p+0L : 0xf.6ca82f0de1e9e99p-4L : inexact-ok
+= tanh upward ldbl-96-m68k 0x2p+0L : 0xf.6ca82f0de1e9e9ap-4L : inexact-ok
+= tanh downward ldbl-128 0x2p+0L : 0xf.6ca82f0de1e9e99e2197e1f412a8p-4L : inexact-ok
+= tanh tonearest ldbl-128 0x2p+0L : 0xf.6ca82f0de1e9e99e2197e1f412bp-4L : inexact-ok
+= tanh towardzero ldbl-128 0x2p+0L : 0xf.6ca82f0de1e9e99e2197e1f412a8p-4L : inexact-ok
+= tanh upward ldbl-128 0x2p+0L : 0xf.6ca82f0de1e9e99e2197e1f412bp-4L : inexact-ok
+= tanh downward ldbl-128ibm 0x2p+0L : 0xf.6ca82f0de1e9e99e2197e1f41p-4L : inexact-ok
+= tanh tonearest ldbl-128ibm 0x2p+0L : 0xf.6ca82f0de1e9e99e2197e1f414p-4L : inexact-ok
+= tanh towardzero ldbl-128ibm 0x2p+0L : 0xf.6ca82f0de1e9e99e2197e1f41p-4L : inexact-ok
+= tanh upward ldbl-128ibm 0x2p+0L : 0xf.6ca82f0de1e9e99e2197e1f414p-4L : inexact-ok
+tanh -2
+= tanh downward flt-32 -0x2p+0f : -0xf.6ca83p-4f : inexact-ok
+= tanh tonearest flt-32 -0x2p+0f : -0xf.6ca83p-4f : inexact-ok
+= tanh towardzero flt-32 -0x2p+0f : -0xf.6ca82p-4f : inexact-ok
+= tanh upward flt-32 -0x2p+0f : -0xf.6ca82p-4f : inexact-ok
+= tanh downward dbl-64 -0x2p+0 : -0xf.6ca82f0de1eap-4 : inexact-ok
+= tanh tonearest dbl-64 -0x2p+0 : -0xf.6ca82f0de1eap-4 : inexact-ok
+= tanh towardzero dbl-64 -0x2p+0 : -0xf.6ca82f0de1e98p-4 : inexact-ok
+= tanh upward dbl-64 -0x2p+0 : -0xf.6ca82f0de1e98p-4 : inexact-ok
+= tanh downward ldbl-96-intel -0x2p+0L : -0xf.6ca82f0de1e9e9ap-4L : inexact-ok
+= tanh tonearest ldbl-96-intel -0x2p+0L : -0xf.6ca82f0de1e9e9ap-4L : inexact-ok
+= tanh towardzero ldbl-96-intel -0x2p+0L : -0xf.6ca82f0de1e9e99p-4L : inexact-ok
+= tanh upward ldbl-96-intel -0x2p+0L : -0xf.6ca82f0de1e9e99p-4L : inexact-ok
+= tanh downward ldbl-96-m68k -0x2p+0L : -0xf.6ca82f0de1e9e9ap-4L : inexact-ok
+= tanh tonearest ldbl-96-m68k -0x2p+0L : -0xf.6ca82f0de1e9e9ap-4L : inexact-ok
+= tanh towardzero ldbl-96-m68k -0x2p+0L : -0xf.6ca82f0de1e9e99p-4L : inexact-ok
+= tanh upward ldbl-96-m68k -0x2p+0L : -0xf.6ca82f0de1e9e99p-4L : inexact-ok
+= tanh downward ldbl-128 -0x2p+0L : -0xf.6ca82f0de1e9e99e2197e1f412bp-4L : inexact-ok
+= tanh tonearest ldbl-128 -0x2p+0L : -0xf.6ca82f0de1e9e99e2197e1f412bp-4L : inexact-ok
+= tanh towardzero ldbl-128 -0x2p+0L : -0xf.6ca82f0de1e9e99e2197e1f412a8p-4L : inexact-ok
+= tanh upward ldbl-128 -0x2p+0L : -0xf.6ca82f0de1e9e99e2197e1f412a8p-4L : inexact-ok
+= tanh downward ldbl-128ibm -0x2p+0L : -0xf.6ca82f0de1e9e99e2197e1f414p-4L : inexact-ok
+= tanh tonearest ldbl-128ibm -0x2p+0L : -0xf.6ca82f0de1e9e99e2197e1f414p-4L : inexact-ok
+= tanh towardzero ldbl-128ibm -0x2p+0L : -0xf.6ca82f0de1e9e99e2197e1f41p-4L : inexact-ok
+= tanh upward ldbl-128ibm -0x2p+0L : -0xf.6ca82f0de1e9e99e2197e1f41p-4L : inexact-ok
+tanh 3
+= tanh downward flt-32 0x3p+0f : 0xf.ebbe8p-4f : inexact-ok
+= tanh tonearest flt-32 0x3p+0f : 0xf.ebbe9p-4f : inexact-ok
+= tanh towardzero flt-32 0x3p+0f : 0xf.ebbe8p-4f : inexact-ok
+= tanh upward flt-32 0x3p+0f : 0xf.ebbe9p-4f : inexact-ok
+= tanh downward dbl-64 0x3p+0 : 0xf.ebbe888d057f8p-4 : inexact-ok
+= tanh tonearest dbl-64 0x3p+0 : 0xf.ebbe888d058p-4 : inexact-ok
+= tanh towardzero dbl-64 0x3p+0 : 0xf.ebbe888d057f8p-4 : inexact-ok
+= tanh upward dbl-64 0x3p+0 : 0xf.ebbe888d058p-4 : inexact-ok
+= tanh downward ldbl-96-intel 0x3p+0L : 0xf.ebbe888d057ff1p-4L : inexact-ok
+= tanh tonearest ldbl-96-intel 0x3p+0L : 0xf.ebbe888d057ff1p-4L : inexact-ok
+= tanh towardzero ldbl-96-intel 0x3p+0L : 0xf.ebbe888d057ff1p-4L : inexact-ok
+= tanh upward ldbl-96-intel 0x3p+0L : 0xf.ebbe888d057ff11p-4L : inexact-ok
+= tanh downward ldbl-96-m68k 0x3p+0L : 0xf.ebbe888d057ff1p-4L : inexact-ok
+= tanh tonearest ldbl-96-m68k 0x3p+0L : 0xf.ebbe888d057ff1p-4L : inexact-ok
+= tanh towardzero ldbl-96-m68k 0x3p+0L : 0xf.ebbe888d057ff1p-4L : inexact-ok
+= tanh upward ldbl-96-m68k 0x3p+0L : 0xf.ebbe888d057ff11p-4L : inexact-ok
+= tanh downward ldbl-128 0x3p+0L : 0xf.ebbe888d057ff1057854585bfda8p-4L : inexact-ok
+= tanh tonearest ldbl-128 0x3p+0L : 0xf.ebbe888d057ff1057854585bfdbp-4L : inexact-ok
+= tanh towardzero ldbl-128 0x3p+0L : 0xf.ebbe888d057ff1057854585bfda8p-4L : inexact-ok
+= tanh upward ldbl-128 0x3p+0L : 0xf.ebbe888d057ff1057854585bfdbp-4L : inexact-ok
+= tanh downward ldbl-128ibm 0x3p+0L : 0xf.ebbe888d057ff1057854585bfcp-4L : inexact-ok
+= tanh tonearest ldbl-128ibm 0x3p+0L : 0xf.ebbe888d057ff1057854585bfcp-4L : inexact-ok
+= tanh towardzero ldbl-128ibm 0x3p+0L : 0xf.ebbe888d057ff1057854585bfcp-4L : inexact-ok
+= tanh upward ldbl-128ibm 0x3p+0L : 0xf.ebbe888d057ff1057854585cp-4L : inexact-ok
+tanh -3
+= tanh downward flt-32 -0x3p+0f : -0xf.ebbe9p-4f : inexact-ok
+= tanh tonearest flt-32 -0x3p+0f : -0xf.ebbe9p-4f : inexact-ok
+= tanh towardzero flt-32 -0x3p+0f : -0xf.ebbe8p-4f : inexact-ok
+= tanh upward flt-32 -0x3p+0f : -0xf.ebbe8p-4f : inexact-ok
+= tanh downward dbl-64 -0x3p+0 : -0xf.ebbe888d058p-4 : inexact-ok
+= tanh tonearest dbl-64 -0x3p+0 : -0xf.ebbe888d058p-4 : inexact-ok
+= tanh towardzero dbl-64 -0x3p+0 : -0xf.ebbe888d057f8p-4 : inexact-ok
+= tanh upward dbl-64 -0x3p+0 : -0xf.ebbe888d057f8p-4 : inexact-ok
+= tanh downward ldbl-96-intel -0x3p+0L : -0xf.ebbe888d057ff11p-4L : inexact-ok
+= tanh tonearest ldbl-96-intel -0x3p+0L : -0xf.ebbe888d057ff1p-4L : inexact-ok
+= tanh towardzero ldbl-96-intel -0x3p+0L : -0xf.ebbe888d057ff1p-4L : inexact-ok
+= tanh upward ldbl-96-intel -0x3p+0L : -0xf.ebbe888d057ff1p-4L : inexact-ok
+= tanh downward ldbl-96-m68k -0x3p+0L : -0xf.ebbe888d057ff11p-4L : inexact-ok
+= tanh tonearest ldbl-96-m68k -0x3p+0L : -0xf.ebbe888d057ff1p-4L : inexact-ok
+= tanh towardzero ldbl-96-m68k -0x3p+0L : -0xf.ebbe888d057ff1p-4L : inexact-ok
+= tanh upward ldbl-96-m68k -0x3p+0L : -0xf.ebbe888d057ff1p-4L : inexact-ok
+= tanh downward ldbl-128 -0x3p+0L : -0xf.ebbe888d057ff1057854585bfdbp-4L : inexact-ok
+= tanh tonearest ldbl-128 -0x3p+0L : -0xf.ebbe888d057ff1057854585bfdbp-4L : inexact-ok
+= tanh towardzero ldbl-128 -0x3p+0L : -0xf.ebbe888d057ff1057854585bfda8p-4L : inexact-ok
+= tanh upward ldbl-128 -0x3p+0L : -0xf.ebbe888d057ff1057854585bfda8p-4L : inexact-ok
+= tanh downward ldbl-128ibm -0x3p+0L : -0xf.ebbe888d057ff1057854585cp-4L : inexact-ok
+= tanh tonearest ldbl-128ibm -0x3p+0L : -0xf.ebbe888d057ff1057854585bfcp-4L : inexact-ok
+= tanh towardzero ldbl-128ibm -0x3p+0L : -0xf.ebbe888d057ff1057854585bfcp-4L : inexact-ok
+= tanh upward ldbl-128ibm -0x3p+0L : -0xf.ebbe888d057ff1057854585bfcp-4L : inexact-ok
+tanh 4
+= tanh downward flt-32 0x4p+0f : 0xf.fd40bp-4f : inexact-ok
+= tanh tonearest flt-32 0x4p+0f : 0xf.fd40cp-4f : inexact-ok
+= tanh towardzero flt-32 0x4p+0f : 0xf.fd40bp-4f : inexact-ok
+= tanh upward flt-32 0x4p+0f : 0xf.fd40cp-4f : inexact-ok
+= tanh downward dbl-64 0x4p+0 : 0xf.fd40b84505a1p-4 : inexact-ok
+= tanh tonearest dbl-64 0x4p+0 : 0xf.fd40b84505a1p-4 : inexact-ok
+= tanh towardzero dbl-64 0x4p+0 : 0xf.fd40b84505a1p-4 : inexact-ok
+= tanh upward dbl-64 0x4p+0 : 0xf.fd40b84505a18p-4 : inexact-ok
+= tanh downward ldbl-96-intel 0x4p+0L : 0xf.fd40b84505a10b4p-4L : inexact-ok
+= tanh tonearest ldbl-96-intel 0x4p+0L : 0xf.fd40b84505a10b4p-4L : inexact-ok
+= tanh towardzero ldbl-96-intel 0x4p+0L : 0xf.fd40b84505a10b4p-4L : inexact-ok
+= tanh upward ldbl-96-intel 0x4p+0L : 0xf.fd40b84505a10b5p-4L : inexact-ok
+= tanh downward ldbl-96-m68k 0x4p+0L : 0xf.fd40b84505a10b4p-4L : inexact-ok
+= tanh tonearest ldbl-96-m68k 0x4p+0L : 0xf.fd40b84505a10b4p-4L : inexact-ok
+= tanh towardzero ldbl-96-m68k 0x4p+0L : 0xf.fd40b84505a10b4p-4L : inexact-ok
+= tanh upward ldbl-96-m68k 0x4p+0L : 0xf.fd40b84505a10b5p-4L : inexact-ok
+= tanh downward ldbl-128 0x4p+0L : 0xf.fd40b84505a10b42b92360cee3p-4L : inexact-ok
+= tanh tonearest ldbl-128 0x4p+0L : 0xf.fd40b84505a10b42b92360cee308p-4L : inexact-ok
+= tanh towardzero ldbl-128 0x4p+0L : 0xf.fd40b84505a10b42b92360cee3p-4L : inexact-ok
+= tanh upward ldbl-128 0x4p+0L : 0xf.fd40b84505a10b42b92360cee308p-4L : inexact-ok
+= tanh downward ldbl-128ibm 0x4p+0L : 0xf.fd40b84505a10b42b92360ceep-4L : inexact-ok
+= tanh tonearest ldbl-128ibm 0x4p+0L : 0xf.fd40b84505a10b42b92360cee4p-4L : inexact-ok
+= tanh towardzero ldbl-128ibm 0x4p+0L : 0xf.fd40b84505a10b42b92360ceep-4L : inexact-ok
+= tanh upward ldbl-128ibm 0x4p+0L : 0xf.fd40b84505a10b42b92360cee4p-4L : inexact-ok
+tanh -4
+= tanh downward flt-32 -0x4p+0f : -0xf.fd40cp-4f : inexact-ok
+= tanh tonearest flt-32 -0x4p+0f : -0xf.fd40cp-4f : inexact-ok
+= tanh towardzero flt-32 -0x4p+0f : -0xf.fd40bp-4f : inexact-ok
+= tanh upward flt-32 -0x4p+0f : -0xf.fd40bp-4f : inexact-ok
+= tanh downward dbl-64 -0x4p+0 : -0xf.fd40b84505a18p-4 : inexact-ok
+= tanh tonearest dbl-64 -0x4p+0 : -0xf.fd40b84505a1p-4 : inexact-ok
+= tanh towardzero dbl-64 -0x4p+0 : -0xf.fd40b84505a1p-4 : inexact-ok
+= tanh upward dbl-64 -0x4p+0 : -0xf.fd40b84505a1p-4 : inexact-ok
+= tanh downward ldbl-96-intel -0x4p+0L : -0xf.fd40b84505a10b5p-4L : inexact-ok
+= tanh tonearest ldbl-96-intel -0x4p+0L : -0xf.fd40b84505a10b4p-4L : inexact-ok
+= tanh towardzero ldbl-96-intel -0x4p+0L : -0xf.fd40b84505a10b4p-4L : inexact-ok
+= tanh upward ldbl-96-intel -0x4p+0L : -0xf.fd40b84505a10b4p-4L : inexact-ok
+= tanh downward ldbl-96-m68k -0x4p+0L : -0xf.fd40b84505a10b5p-4L : inexact-ok
+= tanh tonearest ldbl-96-m68k -0x4p+0L : -0xf.fd40b84505a10b4p-4L : inexact-ok
+= tanh towardzero ldbl-96-m68k -0x4p+0L : -0xf.fd40b84505a10b4p-4L : inexact-ok
+= tanh upward ldbl-96-m68k -0x4p+0L : -0xf.fd40b84505a10b4p-4L : inexact-ok
+= tanh downward ldbl-128 -0x4p+0L : -0xf.fd40b84505a10b42b92360cee308p-4L : inexact-ok
+= tanh tonearest ldbl-128 -0x4p+0L : -0xf.fd40b84505a10b42b92360cee308p-4L : inexact-ok
+= tanh towardzero ldbl-128 -0x4p+0L : -0xf.fd40b84505a10b42b92360cee3p-4L : inexact-ok
+= tanh upward ldbl-128 -0x4p+0L : -0xf.fd40b84505a10b42b92360cee3p-4L : inexact-ok
+= tanh downward ldbl-128ibm -0x4p+0L : -0xf.fd40b84505a10b42b92360cee4p-4L : inexact-ok
+= tanh tonearest ldbl-128ibm -0x4p+0L : -0xf.fd40b84505a10b42b92360cee4p-4L : inexact-ok
+= tanh towardzero ldbl-128ibm -0x4p+0L : -0xf.fd40b84505a10b42b92360ceep-4L : inexact-ok
+= tanh upward ldbl-128ibm -0x4p+0L : -0xf.fd40b84505a10b42b92360ceep-4L : inexact-ok
+tanh 5
+= tanh downward flt-32 0x5p+0f : 0xf.ffa0cp-4f : inexact-ok
+= tanh tonearest flt-32 0x5p+0f : 0xf.ffa0dp-4f : inexact-ok
+= tanh towardzero flt-32 0x5p+0f : 0xf.ffa0cp-4f : inexact-ok
+= tanh upward flt-32 0x5p+0f : 0xf.ffa0dp-4f : inexact-ok
+= tanh downward dbl-64 0x5p+0 : 0xf.ffa0cb346f888p-4 : inexact-ok
+= tanh tonearest dbl-64 0x5p+0 : 0xf.ffa0cb346f888p-4 : inexact-ok
+= tanh towardzero dbl-64 0x5p+0 : 0xf.ffa0cb346f888p-4 : inexact-ok
+= tanh upward dbl-64 0x5p+0 : 0xf.ffa0cb346f89p-4 : inexact-ok
+= tanh downward ldbl-96-intel 0x5p+0L : 0xf.ffa0cb346f889a8p-4L : inexact-ok
+= tanh tonearest ldbl-96-intel 0x5p+0L : 0xf.ffa0cb346f889a8p-4L : inexact-ok
+= tanh towardzero ldbl-96-intel 0x5p+0L : 0xf.ffa0cb346f889a8p-4L : inexact-ok
+= tanh upward ldbl-96-intel 0x5p+0L : 0xf.ffa0cb346f889a9p-4L : inexact-ok
+= tanh downward ldbl-96-m68k 0x5p+0L : 0xf.ffa0cb346f889a8p-4L : inexact-ok
+= tanh tonearest ldbl-96-m68k 0x5p+0L : 0xf.ffa0cb346f889a8p-4L : inexact-ok
+= tanh towardzero ldbl-96-m68k 0x5p+0L : 0xf.ffa0cb346f889a8p-4L : inexact-ok
+= tanh upward ldbl-96-m68k 0x5p+0L : 0xf.ffa0cb346f889a9p-4L : inexact-ok
+= tanh downward ldbl-128 0x5p+0L : 0xf.ffa0cb346f889a800b7186cb5728p-4L : inexact-ok
+= tanh tonearest ldbl-128 0x5p+0L : 0xf.ffa0cb346f889a800b7186cb573p-4L : inexact-ok
+= tanh towardzero ldbl-128 0x5p+0L : 0xf.ffa0cb346f889a800b7186cb5728p-4L : inexact-ok
+= tanh upward ldbl-128 0x5p+0L : 0xf.ffa0cb346f889a800b7186cb573p-4L : inexact-ok
+= tanh downward ldbl-128ibm 0x5p+0L : 0xf.ffa0cb346f889a800b7186cb54p-4L : inexact-ok
+= tanh tonearest ldbl-128ibm 0x5p+0L : 0xf.ffa0cb346f889a800b7186cb58p-4L : inexact-ok
+= tanh towardzero ldbl-128ibm 0x5p+0L : 0xf.ffa0cb346f889a800b7186cb54p-4L : inexact-ok
+= tanh upward ldbl-128ibm 0x5p+0L : 0xf.ffa0cb346f889a800b7186cb58p-4L : inexact-ok
+tanh -5
+= tanh downward flt-32 -0x5p+0f : -0xf.ffa0dp-4f : inexact-ok
+= tanh tonearest flt-32 -0x5p+0f : -0xf.ffa0dp-4f : inexact-ok
+= tanh towardzero flt-32 -0x5p+0f : -0xf.ffa0cp-4f : inexact-ok
+= tanh upward flt-32 -0x5p+0f : -0xf.ffa0cp-4f : inexact-ok
+= tanh downward dbl-64 -0x5p+0 : -0xf.ffa0cb346f89p-4 : inexact-ok
+= tanh tonearest dbl-64 -0x5p+0 : -0xf.ffa0cb346f888p-4 : inexact-ok
+= tanh towardzero dbl-64 -0x5p+0 : -0xf.ffa0cb346f888p-4 : inexact-ok
+= tanh upward dbl-64 -0x5p+0 : -0xf.ffa0cb346f888p-4 : inexact-ok
+= tanh downward ldbl-96-intel -0x5p+0L : -0xf.ffa0cb346f889a9p-4L : inexact-ok
+= tanh tonearest ldbl-96-intel -0x5p+0L : -0xf.ffa0cb346f889a8p-4L : inexact-ok
+= tanh towardzero ldbl-96-intel -0x5p+0L : -0xf.ffa0cb346f889a8p-4L : inexact-ok
+= tanh upward ldbl-96-intel -0x5p+0L : -0xf.ffa0cb346f889a8p-4L : inexact-ok
+= tanh downward ldbl-96-m68k -0x5p+0L : -0xf.ffa0cb346f889a9p-4L : inexact-ok
+= tanh tonearest ldbl-96-m68k -0x5p+0L : -0xf.ffa0cb346f889a8p-4L : inexact-ok
+= tanh towardzero ldbl-96-m68k -0x5p+0L : -0xf.ffa0cb346f889a8p-4L : inexact-ok
+= tanh upward ldbl-96-m68k -0x5p+0L : -0xf.ffa0cb346f889a8p-4L : inexact-ok
+= tanh downward ldbl-128 -0x5p+0L : -0xf.ffa0cb346f889a800b7186cb573p-4L : inexact-ok
+= tanh tonearest ldbl-128 -0x5p+0L : -0xf.ffa0cb346f889a800b7186cb573p-4L : inexact-ok
+= tanh towardzero ldbl-128 -0x5p+0L : -0xf.ffa0cb346f889a800b7186cb5728p-4L : inexact-ok
+= tanh upward ldbl-128 -0x5p+0L : -0xf.ffa0cb346f889a800b7186cb5728p-4L : inexact-ok
+= tanh downward ldbl-128ibm -0x5p+0L : -0xf.ffa0cb346f889a800b7186cb58p-4L : inexact-ok
+= tanh tonearest ldbl-128ibm -0x5p+0L : -0xf.ffa0cb346f889a800b7186cb58p-4L : inexact-ok
+= tanh towardzero ldbl-128ibm -0x5p+0L : -0xf.ffa0cb346f889a800b7186cb54p-4L : inexact-ok
+= tanh upward ldbl-128ibm -0x5p+0L : -0xf.ffa0cb346f889a800b7186cb54p-4L : inexact-ok
+tanh 6
+= tanh downward flt-32 0x6p+0f : 0xf.fff31p-4f : inexact-ok
+= tanh tonearest flt-32 0x6p+0f : 0xf.fff32p-4f : inexact-ok
+= tanh towardzero flt-32 0x6p+0f : 0xf.fff31p-4f : inexact-ok
+= tanh upward flt-32 0x6p+0f : 0xf.fff32p-4f : inexact-ok
+= tanh downward dbl-64 0x6p+0 : 0xf.fff31d5f129d8p-4 : inexact-ok
+= tanh tonearest dbl-64 0x6p+0 : 0xf.fff31d5f129ep-4 : inexact-ok
+= tanh towardzero dbl-64 0x6p+0 : 0xf.fff31d5f129d8p-4 : inexact-ok
+= tanh upward dbl-64 0x6p+0 : 0xf.fff31d5f129ep-4 : inexact-ok
+= tanh downward ldbl-96-intel 0x6p+0L : 0xf.fff31d5f129deedp-4L : inexact-ok
+= tanh tonearest ldbl-96-intel 0x6p+0L : 0xf.fff31d5f129deeep-4L : inexact-ok
+= tanh towardzero ldbl-96-intel 0x6p+0L : 0xf.fff31d5f129deedp-4L : inexact-ok
+= tanh upward ldbl-96-intel 0x6p+0L : 0xf.fff31d5f129deeep-4L : inexact-ok
+= tanh downward ldbl-96-m68k 0x6p+0L : 0xf.fff31d5f129deedp-4L : inexact-ok
+= tanh tonearest ldbl-96-m68k 0x6p+0L : 0xf.fff31d5f129deeep-4L : inexact-ok
+= tanh towardzero ldbl-96-m68k 0x6p+0L : 0xf.fff31d5f129deedp-4L : inexact-ok
+= tanh upward ldbl-96-m68k 0x6p+0L : 0xf.fff31d5f129deeep-4L : inexact-ok
+= tanh downward ldbl-128 0x6p+0L : 0xf.fff31d5f129deedd313b57265658p-4L : inexact-ok
+= tanh tonearest ldbl-128 0x6p+0L : 0xf.fff31d5f129deedd313b57265658p-4L : inexact-ok
+= tanh towardzero ldbl-128 0x6p+0L : 0xf.fff31d5f129deedd313b57265658p-4L : inexact-ok
+= tanh upward ldbl-128 0x6p+0L : 0xf.fff31d5f129deedd313b5726566p-4L : inexact-ok
+= tanh downward ldbl-128ibm 0x6p+0L : 0xf.fff31d5f129deedd313b572654p-4L : inexact-ok
+= tanh tonearest ldbl-128ibm 0x6p+0L : 0xf.fff31d5f129deedd313b572658p-4L : inexact-ok
+= tanh towardzero ldbl-128ibm 0x6p+0L : 0xf.fff31d5f129deedd313b572654p-4L : inexact-ok
+= tanh upward ldbl-128ibm 0x6p+0L : 0xf.fff31d5f129deedd313b572658p-4L : inexact-ok
+tanh -6
+= tanh downward flt-32 -0x6p+0f : -0xf.fff32p-4f : inexact-ok
+= tanh tonearest flt-32 -0x6p+0f : -0xf.fff32p-4f : inexact-ok
+= tanh towardzero flt-32 -0x6p+0f : -0xf.fff31p-4f : inexact-ok
+= tanh upward flt-32 -0x6p+0f : -0xf.fff31p-4f : inexact-ok
+= tanh downward dbl-64 -0x6p+0 : -0xf.fff31d5f129ep-4 : inexact-ok
+= tanh tonearest dbl-64 -0x6p+0 : -0xf.fff31d5f129ep-4 : inexact-ok
+= tanh towardzero dbl-64 -0x6p+0 : -0xf.fff31d5f129d8p-4 : inexact-ok
+= tanh upward dbl-64 -0x6p+0 : -0xf.fff31d5f129d8p-4 : inexact-ok
+= tanh downward ldbl-96-intel -0x6p+0L : -0xf.fff31d5f129deeep-4L : inexact-ok
+= tanh tonearest ldbl-96-intel -0x6p+0L : -0xf.fff31d5f129deeep-4L : inexact-ok
+= tanh towardzero ldbl-96-intel -0x6p+0L : -0xf.fff31d5f129deedp-4L : inexact-ok
+= tanh upward ldbl-96-intel -0x6p+0L : -0xf.fff31d5f129deedp-4L : inexact-ok
+= tanh downward ldbl-96-m68k -0x6p+0L : -0xf.fff31d5f129deeep-4L : inexact-ok
+= tanh tonearest ldbl-96-m68k -0x6p+0L : -0xf.fff31d5f129deeep-4L : inexact-ok
+= tanh towardzero ldbl-96-m68k -0x6p+0L : -0xf.fff31d5f129deedp-4L : inexact-ok
+= tanh upward ldbl-96-m68k -0x6p+0L : -0xf.fff31d5f129deedp-4L : inexact-ok
+= tanh downward ldbl-128 -0x6p+0L : -0xf.fff31d5f129deedd313b5726566p-4L : inexact-ok
+= tanh tonearest ldbl-128 -0x6p+0L : -0xf.fff31d5f129deedd313b57265658p-4L : inexact-ok
+= tanh towardzero ldbl-128 -0x6p+0L : -0xf.fff31d5f129deedd313b57265658p-4L : inexact-ok
+= tanh upward ldbl-128 -0x6p+0L : -0xf.fff31d5f129deedd313b57265658p-4L : inexact-ok
+= tanh downward ldbl-128ibm -0x6p+0L : -0xf.fff31d5f129deedd313b572658p-4L : inexact-ok
+= tanh tonearest ldbl-128ibm -0x6p+0L : -0xf.fff31d5f129deedd313b572658p-4L : inexact-ok
+= tanh towardzero ldbl-128ibm -0x6p+0L : -0xf.fff31d5f129deedd313b572654p-4L : inexact-ok
+= tanh upward ldbl-128ibm -0x6p+0L : -0xf.fff31d5f129deedd313b572654p-4L : inexact-ok
+tanh 7
+= tanh downward flt-32 0x7p+0f : 0xf.fffe4p-4f : inexact-ok
+= tanh tonearest flt-32 0x7p+0f : 0xf.fffe4p-4f : inexact-ok
+= tanh towardzero flt-32 0x7p+0f : 0xf.fffe4p-4f : inexact-ok
+= tanh upward flt-32 0x7p+0f : 0xf.fffe5p-4f : inexact-ok
+= tanh downward dbl-64 0x7p+0 : 0xf.fffe4193a8788p-4 : inexact-ok
+= tanh tonearest dbl-64 0x7p+0 : 0xf.fffe4193a879p-4 : inexact-ok
+= tanh towardzero dbl-64 0x7p+0 : 0xf.fffe4193a8788p-4 : inexact-ok
+= tanh upward dbl-64 0x7p+0 : 0xf.fffe4193a879p-4 : inexact-ok
+= tanh downward ldbl-96-intel 0x7p+0L : 0xf.fffe4193a878ed6p-4L : inexact-ok
+= tanh tonearest ldbl-96-intel 0x7p+0L : 0xf.fffe4193a878ed7p-4L : inexact-ok
+= tanh towardzero ldbl-96-intel 0x7p+0L : 0xf.fffe4193a878ed6p-4L : inexact-ok
+= tanh upward ldbl-96-intel 0x7p+0L : 0xf.fffe4193a878ed7p-4L : inexact-ok
+= tanh downward ldbl-96-m68k 0x7p+0L : 0xf.fffe4193a878ed6p-4L : inexact-ok
+= tanh tonearest ldbl-96-m68k 0x7p+0L : 0xf.fffe4193a878ed7p-4L : inexact-ok
+= tanh towardzero ldbl-96-m68k 0x7p+0L : 0xf.fffe4193a878ed6p-4L : inexact-ok
+= tanh upward ldbl-96-m68k 0x7p+0L : 0xf.fffe4193a878ed7p-4L : inexact-ok
+= tanh downward ldbl-128 0x7p+0L : 0xf.fffe4193a878ed68e8057dafd2dp-4L : inexact-ok
+= tanh tonearest ldbl-128 0x7p+0L : 0xf.fffe4193a878ed68e8057dafd2dp-4L : inexact-ok
+= tanh towardzero ldbl-128 0x7p+0L : 0xf.fffe4193a878ed68e8057dafd2dp-4L : inexact-ok
+= tanh upward ldbl-128 0x7p+0L : 0xf.fffe4193a878ed68e8057dafd2d8p-4L : inexact-ok
+= tanh downward ldbl-128ibm 0x7p+0L : 0xf.fffe4193a878ed68e8057dafdp-4L : inexact-ok
+= tanh tonearest ldbl-128ibm 0x7p+0L : 0xf.fffe4193a878ed68e8057dafd4p-4L : inexact-ok
+= tanh towardzero ldbl-128ibm 0x7p+0L : 0xf.fffe4193a878ed68e8057dafdp-4L : inexact-ok
+= tanh upward ldbl-128ibm 0x7p+0L : 0xf.fffe4193a878ed68e8057dafd4p-4L : inexact-ok
+tanh -7
+= tanh downward flt-32 -0x7p+0f : -0xf.fffe5p-4f : inexact-ok
+= tanh tonearest flt-32 -0x7p+0f : -0xf.fffe4p-4f : inexact-ok
+= tanh towardzero flt-32 -0x7p+0f : -0xf.fffe4p-4f : inexact-ok
+= tanh upward flt-32 -0x7p+0f : -0xf.fffe4p-4f : inexact-ok
+= tanh downward dbl-64 -0x7p+0 : -0xf.fffe4193a879p-4 : inexact-ok
+= tanh tonearest dbl-64 -0x7p+0 : -0xf.fffe4193a879p-4 : inexact-ok
+= tanh towardzero dbl-64 -0x7p+0 : -0xf.fffe4193a8788p-4 : inexact-ok
+= tanh upward dbl-64 -0x7p+0 : -0xf.fffe4193a8788p-4 : inexact-ok
+= tanh downward ldbl-96-intel -0x7p+0L : -0xf.fffe4193a878ed7p-4L : inexact-ok
+= tanh tonearest ldbl-96-intel -0x7p+0L : -0xf.fffe4193a878ed7p-4L : inexact-ok
+= tanh towardzero ldbl-96-intel -0x7p+0L : -0xf.fffe4193a878ed6p-4L : inexact-ok
+= tanh upward ldbl-96-intel -0x7p+0L : -0xf.fffe4193a878ed6p-4L : inexact-ok
+= tanh downward ldbl-96-m68k -0x7p+0L : -0xf.fffe4193a878ed7p-4L : inexact-ok
+= tanh tonearest ldbl-96-m68k -0x7p+0L : -0xf.fffe4193a878ed7p-4L : inexact-ok
+= tanh towardzero ldbl-96-m68k -0x7p+0L : -0xf.fffe4193a878ed6p-4L : inexact-ok
+= tanh upward ldbl-96-m68k -0x7p+0L : -0xf.fffe4193a878ed6p-4L : inexact-ok
+= tanh downward ldbl-128 -0x7p+0L : -0xf.fffe4193a878ed68e8057dafd2d8p-4L : inexact-ok
+= tanh tonearest ldbl-128 -0x7p+0L : -0xf.fffe4193a878ed68e8057dafd2dp-4L : inexact-ok
+= tanh towardzero ldbl-128 -0x7p+0L : -0xf.fffe4193a878ed68e8057dafd2dp-4L : inexact-ok
+= tanh upward ldbl-128 -0x7p+0L : -0xf.fffe4193a878ed68e8057dafd2dp-4L : inexact-ok
+= tanh downward ldbl-128ibm -0x7p+0L : -0xf.fffe4193a878ed68e8057dafd4p-4L : inexact-ok
+= tanh tonearest ldbl-128ibm -0x7p+0L : -0xf.fffe4193a878ed68e8057dafd4p-4L : inexact-ok
+= tanh towardzero ldbl-128ibm -0x7p+0L : -0xf.fffe4193a878ed68e8057dafdp-4L : inexact-ok
+= tanh upward ldbl-128ibm -0x7p+0L : -0xf.fffe4193a878ed68e8057dafdp-4L : inexact-ok
+tanh 8
+= tanh downward flt-32 0x8p+0f : 0xf.ffffcp-4f : inexact-ok
+= tanh tonearest flt-32 0x8p+0f : 0xf.ffffcp-4f : inexact-ok
+= tanh towardzero flt-32 0x8p+0f : 0xf.ffffcp-4f : inexact-ok
+= tanh upward flt-32 0x8p+0f : 0xf.ffffdp-4f : inexact-ok
+= tanh downward dbl-64 0x8p+0 : 0xf.ffffc39548fcp-4 : inexact-ok
+= tanh tonearest dbl-64 0x8p+0 : 0xf.ffffc39548fcp-4 : inexact-ok
+= tanh towardzero dbl-64 0x8p+0 : 0xf.ffffc39548fcp-4 : inexact-ok
+= tanh upward dbl-64 0x8p+0 : 0xf.ffffc39548fc8p-4 : inexact-ok
+= tanh downward ldbl-96-intel 0x8p+0L : 0xf.ffffc39548fc348p-4L : inexact-ok
+= tanh tonearest ldbl-96-intel 0x8p+0L : 0xf.ffffc39548fc348p-4L : inexact-ok
+= tanh towardzero ldbl-96-intel 0x8p+0L : 0xf.ffffc39548fc348p-4L : inexact-ok
+= tanh upward ldbl-96-intel 0x8p+0L : 0xf.ffffc39548fc349p-4L : inexact-ok
+= tanh downward ldbl-96-m68k 0x8p+0L : 0xf.ffffc39548fc348p-4L : inexact-ok
+= tanh tonearest ldbl-96-m68k 0x8p+0L : 0xf.ffffc39548fc348p-4L : inexact-ok
+= tanh towardzero ldbl-96-m68k 0x8p+0L : 0xf.ffffc39548fc348p-4L : inexact-ok
+= tanh upward ldbl-96-m68k 0x8p+0L : 0xf.ffffc39548fc349p-4L : inexact-ok
+= tanh downward ldbl-128 0x8p+0L : 0xf.ffffc39548fc3487707369d6c57p-4L : inexact-ok
+= tanh tonearest ldbl-128 0x8p+0L : 0xf.ffffc39548fc3487707369d6c578p-4L : inexact-ok
+= tanh towardzero ldbl-128 0x8p+0L : 0xf.ffffc39548fc3487707369d6c57p-4L : inexact-ok
+= tanh upward ldbl-128 0x8p+0L : 0xf.ffffc39548fc3487707369d6c578p-4L : inexact-ok
+= tanh downward ldbl-128ibm 0x8p+0L : 0xf.ffffc39548fc3487707369d6c4p-4L : inexact-ok
+= tanh tonearest ldbl-128ibm 0x8p+0L : 0xf.ffffc39548fc3487707369d6c4p-4L : inexact-ok
+= tanh towardzero ldbl-128ibm 0x8p+0L : 0xf.ffffc39548fc3487707369d6c4p-4L : inexact-ok
+= tanh upward ldbl-128ibm 0x8p+0L : 0xf.ffffc39548fc3487707369d6c8p-4L : inexact-ok
+tanh -8
+= tanh downward flt-32 -0x8p+0f : -0xf.ffffdp-4f : inexact-ok
+= tanh tonearest flt-32 -0x8p+0f : -0xf.ffffcp-4f : inexact-ok
+= tanh towardzero flt-32 -0x8p+0f : -0xf.ffffcp-4f : inexact-ok
+= tanh upward flt-32 -0x8p+0f : -0xf.ffffcp-4f : inexact-ok
+= tanh downward dbl-64 -0x8p+0 : -0xf.ffffc39548fc8p-4 : inexact-ok
+= tanh tonearest dbl-64 -0x8p+0 : -0xf.ffffc39548fcp-4 : inexact-ok
+= tanh towardzero dbl-64 -0x8p+0 : -0xf.ffffc39548fcp-4 : inexact-ok
+= tanh upward dbl-64 -0x8p+0 : -0xf.ffffc39548fcp-4 : inexact-ok
+= tanh downward ldbl-96-intel -0x8p+0L : -0xf.ffffc39548fc349p-4L : inexact-ok
+= tanh tonearest ldbl-96-intel -0x8p+0L : -0xf.ffffc39548fc348p-4L : inexact-ok
+= tanh towardzero ldbl-96-intel -0x8p+0L : -0xf.ffffc39548fc348p-4L : inexact-ok
+= tanh upward ldbl-96-intel -0x8p+0L : -0xf.ffffc39548fc348p-4L : inexact-ok
+= tanh downward ldbl-96-m68k -0x8p+0L : -0xf.ffffc39548fc349p-4L : inexact-ok
+= tanh tonearest ldbl-96-m68k -0x8p+0L : -0xf.ffffc39548fc348p-4L : inexact-ok
+= tanh towardzero ldbl-96-m68k -0x8p+0L : -0xf.ffffc39548fc348p-4L : inexact-ok
+= tanh upward ldbl-96-m68k -0x8p+0L : -0xf.ffffc39548fc348p-4L : inexact-ok
+= tanh downward ldbl-128 -0x8p+0L : -0xf.ffffc39548fc3487707369d6c578p-4L : inexact-ok
+= tanh tonearest ldbl-128 -0x8p+0L : -0xf.ffffc39548fc3487707369d6c578p-4L : inexact-ok
+= tanh towardzero ldbl-128 -0x8p+0L : -0xf.ffffc39548fc3487707369d6c57p-4L : inexact-ok
+= tanh upward ldbl-128 -0x8p+0L : -0xf.ffffc39548fc3487707369d6c57p-4L : inexact-ok
+= tanh downward ldbl-128ibm -0x8p+0L : -0xf.ffffc39548fc3487707369d6c8p-4L : inexact-ok
+= tanh tonearest ldbl-128ibm -0x8p+0L : -0xf.ffffc39548fc3487707369d6c4p-4L : inexact-ok
+= tanh towardzero ldbl-128ibm -0x8p+0L : -0xf.ffffc39548fc3487707369d6c4p-4L : inexact-ok
+= tanh upward ldbl-128ibm -0x8p+0L : -0xf.ffffc39548fc3487707369d6c4p-4L : inexact-ok
+tanh 9
+= tanh downward flt-32 0x9p+0f : 0xf.fffffp-4f : inexact-ok
+= tanh tonearest flt-32 0x9p+0f : 0xf.fffffp-4f : inexact-ok
+= tanh towardzero flt-32 0x9p+0f : 0xf.fffffp-4f : inexact-ok
+= tanh upward flt-32 0x9p+0f : 0x1p+0f : inexact-ok
+= tanh downward dbl-64 0x9p+0 : 0xf.fffff7d2cebb8p-4 : inexact-ok
+= tanh tonearest dbl-64 0x9p+0 : 0xf.fffff7d2cebcp-4 : inexact-ok
+= tanh towardzero dbl-64 0x9p+0 : 0xf.fffff7d2cebb8p-4 : inexact-ok
+= tanh upward dbl-64 0x9p+0 : 0xf.fffff7d2cebcp-4 : inexact-ok
+= tanh downward ldbl-96-intel 0x9p+0L : 0xf.fffff7d2cebbe2p-4L : inexact-ok
+= tanh tonearest ldbl-96-intel 0x9p+0L : 0xf.fffff7d2cebbe21p-4L : inexact-ok
+= tanh towardzero ldbl-96-intel 0x9p+0L : 0xf.fffff7d2cebbe2p-4L : inexact-ok
+= tanh upward ldbl-96-intel 0x9p+0L : 0xf.fffff7d2cebbe21p-4L : inexact-ok
+= tanh downward ldbl-96-m68k 0x9p+0L : 0xf.fffff7d2cebbe2p-4L : inexact-ok
+= tanh tonearest ldbl-96-m68k 0x9p+0L : 0xf.fffff7d2cebbe21p-4L : inexact-ok
+= tanh towardzero ldbl-96-m68k 0x9p+0L : 0xf.fffff7d2cebbe2p-4L : inexact-ok
+= tanh upward ldbl-96-m68k 0x9p+0L : 0xf.fffff7d2cebbe21p-4L : inexact-ok
+= tanh downward ldbl-128 0x9p+0L : 0xf.fffff7d2cebbe208a50ed05e7168p-4L : inexact-ok
+= tanh tonearest ldbl-128 0x9p+0L : 0xf.fffff7d2cebbe208a50ed05e717p-4L : inexact-ok
+= tanh towardzero ldbl-128 0x9p+0L : 0xf.fffff7d2cebbe208a50ed05e7168p-4L : inexact-ok
+= tanh upward ldbl-128 0x9p+0L : 0xf.fffff7d2cebbe208a50ed05e717p-4L : inexact-ok
+= tanh downward ldbl-128ibm 0x9p+0L : 0xf.fffff7d2cebbe208a50ed05e7p-4L : inexact-ok
+= tanh tonearest ldbl-128ibm 0x9p+0L : 0xf.fffff7d2cebbe208a50ed05e7p-4L : inexact-ok
+= tanh towardzero ldbl-128ibm 0x9p+0L : 0xf.fffff7d2cebbe208a50ed05e7p-4L : inexact-ok
+= tanh upward ldbl-128ibm 0x9p+0L : 0xf.fffff7d2cebbe208a50ed05e74p-4L : inexact-ok
+tanh -9
+= tanh downward flt-32 -0x9p+0f : -0x1p+0f : inexact-ok
+= tanh tonearest flt-32 -0x9p+0f : -0xf.fffffp-4f : inexact-ok
+= tanh towardzero flt-32 -0x9p+0f : -0xf.fffffp-4f : inexact-ok
+= tanh upward flt-32 -0x9p+0f : -0xf.fffffp-4f : inexact-ok
+= tanh downward dbl-64 -0x9p+0 : -0xf.fffff7d2cebcp-4 : inexact-ok
+= tanh tonearest dbl-64 -0x9p+0 : -0xf.fffff7d2cebcp-4 : inexact-ok
+= tanh towardzero dbl-64 -0x9p+0 : -0xf.fffff7d2cebb8p-4 : inexact-ok
+= tanh upward dbl-64 -0x9p+0 : -0xf.fffff7d2cebb8p-4 : inexact-ok
+= tanh downward ldbl-96-intel -0x9p+0L : -0xf.fffff7d2cebbe21p-4L : inexact-ok
+= tanh tonearest ldbl-96-intel -0x9p+0L : -0xf.fffff7d2cebbe21p-4L : inexact-ok
+= tanh towardzero ldbl-96-intel -0x9p+0L : -0xf.fffff7d2cebbe2p-4L : inexact-ok
+= tanh upward ldbl-96-intel -0x9p+0L : -0xf.fffff7d2cebbe2p-4L : inexact-ok
+= tanh downward ldbl-96-m68k -0x9p+0L : -0xf.fffff7d2cebbe21p-4L : inexact-ok
+= tanh tonearest ldbl-96-m68k -0x9p+0L : -0xf.fffff7d2cebbe21p-4L : inexact-ok
+= tanh towardzero ldbl-96-m68k -0x9p+0L : -0xf.fffff7d2cebbe2p-4L : inexact-ok
+= tanh upward ldbl-96-m68k -0x9p+0L : -0xf.fffff7d2cebbe2p-4L : inexact-ok
+= tanh downward ldbl-128 -0x9p+0L : -0xf.fffff7d2cebbe208a50ed05e717p-4L : inexact-ok
+= tanh tonearest ldbl-128 -0x9p+0L : -0xf.fffff7d2cebbe208a50ed05e717p-4L : inexact-ok
+= tanh towardzero ldbl-128 -0x9p+0L : -0xf.fffff7d2cebbe208a50ed05e7168p-4L : inexact-ok
+= tanh upward ldbl-128 -0x9p+0L : -0xf.fffff7d2cebbe208a50ed05e7168p-4L : inexact-ok
+= tanh downward ldbl-128ibm -0x9p+0L : -0xf.fffff7d2cebbe208a50ed05e74p-4L : inexact-ok
+= tanh tonearest ldbl-128ibm -0x9p+0L : -0xf.fffff7d2cebbe208a50ed05e7p-4L : inexact-ok
+= tanh towardzero ldbl-128ibm -0x9p+0L : -0xf.fffff7d2cebbe208a50ed05e7p-4L : inexact-ok
+= tanh upward ldbl-128ibm -0x9p+0L : -0xf.fffff7d2cebbe208a50ed05e7p-4L : inexact-ok
+tanh 10
+= tanh downward flt-32 0xap+0f : 0xf.fffffp-4f : inexact-ok
+= tanh tonearest flt-32 0xap+0f : 0x1p+0f : inexact-ok
+= tanh towardzero flt-32 0xap+0f : 0xf.fffffp-4f : inexact-ok
+= tanh upward flt-32 0xap+0f : 0x1p+0f : inexact-ok
+= tanh downward dbl-64 0xap+0 : 0xf.fffffee4b79a8p-4 : inexact-ok
+= tanh tonearest dbl-64 0xap+0 : 0xf.fffffee4b79a8p-4 : inexact-ok
+= tanh towardzero dbl-64 0xap+0 : 0xf.fffffee4b79a8p-4 : inexact-ok
+= tanh upward dbl-64 0xap+0 : 0xf.fffffee4b79bp-4 : inexact-ok
+= tanh downward ldbl-96-intel 0xap+0L : 0xf.fffffee4b79aaa9p-4L : inexact-ok
+= tanh tonearest ldbl-96-intel 0xap+0L : 0xf.fffffee4b79aaa9p-4L : inexact-ok
+= tanh towardzero ldbl-96-intel 0xap+0L : 0xf.fffffee4b79aaa9p-4L : inexact-ok
+= tanh upward ldbl-96-intel 0xap+0L : 0xf.fffffee4b79aaaap-4L : inexact-ok
+= tanh downward ldbl-96-m68k 0xap+0L : 0xf.fffffee4b79aaa9p-4L : inexact-ok
+= tanh tonearest ldbl-96-m68k 0xap+0L : 0xf.fffffee4b79aaa9p-4L : inexact-ok
+= tanh towardzero ldbl-96-m68k 0xap+0L : 0xf.fffffee4b79aaa9p-4L : inexact-ok
+= tanh upward ldbl-96-m68k 0xap+0L : 0xf.fffffee4b79aaaap-4L : inexact-ok
+= tanh downward ldbl-128 0xap+0L : 0xf.fffffee4b79aaa94a2b616896898p-4L : inexact-ok
+= tanh tonearest ldbl-128 0xap+0L : 0xf.fffffee4b79aaa94a2b616896898p-4L : inexact-ok
+= tanh towardzero ldbl-128 0xap+0L : 0xf.fffffee4b79aaa94a2b616896898p-4L : inexact-ok
+= tanh upward ldbl-128 0xap+0L : 0xf.fffffee4b79aaa94a2b6168968ap-4L : inexact-ok
+= tanh downward ldbl-128ibm 0xap+0L : 0xf.fffffee4b79aaa94a2b6168968p-4L : inexact-ok
+= tanh tonearest ldbl-128ibm 0xap+0L : 0xf.fffffee4b79aaa94a2b6168968p-4L : inexact-ok
+= tanh towardzero ldbl-128ibm 0xap+0L : 0xf.fffffee4b79aaa94a2b6168968p-4L : inexact-ok
+= tanh upward ldbl-128ibm 0xap+0L : 0xf.fffffee4b79aaa94a2b616896cp-4L : inexact-ok
+tanh -10
+= tanh downward flt-32 -0xap+0f : -0x1p+0f : inexact-ok
+= tanh tonearest flt-32 -0xap+0f : -0x1p+0f : inexact-ok
+= tanh towardzero flt-32 -0xap+0f : -0xf.fffffp-4f : inexact-ok
+= tanh upward flt-32 -0xap+0f : -0xf.fffffp-4f : inexact-ok
+= tanh downward dbl-64 -0xap+0 : -0xf.fffffee4b79bp-4 : inexact-ok
+= tanh tonearest dbl-64 -0xap+0 : -0xf.fffffee4b79a8p-4 : inexact-ok
+= tanh towardzero dbl-64 -0xap+0 : -0xf.fffffee4b79a8p-4 : inexact-ok
+= tanh upward dbl-64 -0xap+0 : -0xf.fffffee4b79a8p-4 : inexact-ok
+= tanh downward ldbl-96-intel -0xap+0L : -0xf.fffffee4b79aaaap-4L : inexact-ok
+= tanh tonearest ldbl-96-intel -0xap+0L : -0xf.fffffee4b79aaa9p-4L : inexact-ok
+= tanh towardzero ldbl-96-intel -0xap+0L : -0xf.fffffee4b79aaa9p-4L : inexact-ok
+= tanh upward ldbl-96-intel -0xap+0L : -0xf.fffffee4b79aaa9p-4L : inexact-ok
+= tanh downward ldbl-96-m68k -0xap+0L : -0xf.fffffee4b79aaaap-4L : inexact-ok
+= tanh tonearest ldbl-96-m68k -0xap+0L : -0xf.fffffee4b79aaa9p-4L : inexact-ok
+= tanh towardzero ldbl-96-m68k -0xap+0L : -0xf.fffffee4b79aaa9p-4L : inexact-ok
+= tanh upward ldbl-96-m68k -0xap+0L : -0xf.fffffee4b79aaa9p-4L : inexact-ok
+= tanh downward ldbl-128 -0xap+0L : -0xf.fffffee4b79aaa94a2b6168968ap-4L : inexact-ok
+= tanh tonearest ldbl-128 -0xap+0L : -0xf.fffffee4b79aaa94a2b616896898p-4L : inexact-ok
+= tanh towardzero ldbl-128 -0xap+0L : -0xf.fffffee4b79aaa94a2b616896898p-4L : inexact-ok
+= tanh upward ldbl-128 -0xap+0L : -0xf.fffffee4b79aaa94a2b616896898p-4L : inexact-ok
+= tanh downward ldbl-128ibm -0xap+0L : -0xf.fffffee4b79aaa94a2b616896cp-4L : inexact-ok
+= tanh tonearest ldbl-128ibm -0xap+0L : -0xf.fffffee4b79aaa94a2b6168968p-4L : inexact-ok
+= tanh towardzero ldbl-128ibm -0xap+0L : -0xf.fffffee4b79aaa94a2b6168968p-4L : inexact-ok
+= tanh upward ldbl-128ibm -0xap+0L : -0xf.fffffee4b79aaa94a2b6168968p-4L : inexact-ok
+tanh 15
+= tanh downward flt-32 0xfp+0f : 0xf.fffffp-4f : inexact-ok
+= tanh tonearest flt-32 0xfp+0f : 0x1p+0f : inexact-ok
+= tanh towardzero flt-32 0xfp+0f : 0xf.fffffp-4f : inexact-ok
+= tanh upward flt-32 0xfp+0f : 0x1p+0f : inexact-ok
+= tanh downward dbl-64 0xfp+0 : 0xf.fffffffffcb5p-4 : inexact-ok
+= tanh tonearest dbl-64 0xfp+0 : 0xf.fffffffffcb5p-4 : inexact-ok
+= tanh towardzero dbl-64 0xfp+0 : 0xf.fffffffffcb5p-4 : inexact-ok
+= tanh upward dbl-64 0xfp+0 : 0xf.fffffffffcb58p-4 : inexact-ok
+= tanh downward ldbl-96-intel 0xfp+0L : 0xf.fffffffffcb523ep-4L : inexact-ok
+= tanh tonearest ldbl-96-intel 0xfp+0L : 0xf.fffffffffcb523ep-4L : inexact-ok
+= tanh towardzero ldbl-96-intel 0xfp+0L : 0xf.fffffffffcb523ep-4L : inexact-ok
+= tanh upward ldbl-96-intel 0xfp+0L : 0xf.fffffffffcb523fp-4L : inexact-ok
+= tanh downward ldbl-96-m68k 0xfp+0L : 0xf.fffffffffcb523ep-4L : inexact-ok
+= tanh tonearest ldbl-96-m68k 0xfp+0L : 0xf.fffffffffcb523ep-4L : inexact-ok
+= tanh towardzero ldbl-96-m68k 0xfp+0L : 0xf.fffffffffcb523ep-4L : inexact-ok
+= tanh upward ldbl-96-m68k 0xfp+0L : 0xf.fffffffffcb523fp-4L : inexact-ok
+= tanh downward ldbl-128 0xfp+0L : 0xf.fffffffffcb523e7aa70681dc268p-4L : inexact-ok
+= tanh tonearest ldbl-128 0xfp+0L : 0xf.fffffffffcb523e7aa70681dc27p-4L : inexact-ok
+= tanh towardzero ldbl-128 0xfp+0L : 0xf.fffffffffcb523e7aa70681dc268p-4L : inexact-ok
+= tanh upward ldbl-128 0xfp+0L : 0xf.fffffffffcb523e7aa70681dc27p-4L : inexact-ok
+= tanh downward ldbl-128ibm 0xfp+0L : 0xf.fffffffffcb523e7aa70681dcp-4L : inexact-ok
+= tanh tonearest ldbl-128ibm 0xfp+0L : 0xf.fffffffffcb523e7aa70681dc4p-4L : inexact-ok
+= tanh towardzero ldbl-128ibm 0xfp+0L : 0xf.fffffffffcb523e7aa70681dcp-4L : inexact-ok
+= tanh upward ldbl-128ibm 0xfp+0L : 0xf.fffffffffcb523e7aa70681dc4p-4L : inexact-ok
+tanh -15
+= tanh downward flt-32 -0xfp+0f : -0x1p+0f : inexact-ok
+= tanh tonearest flt-32 -0xfp+0f : -0x1p+0f : inexact-ok
+= tanh towardzero flt-32 -0xfp+0f : -0xf.fffffp-4f : inexact-ok
+= tanh upward flt-32 -0xfp+0f : -0xf.fffffp-4f : inexact-ok
+= tanh downward dbl-64 -0xfp+0 : -0xf.fffffffffcb58p-4 : inexact-ok
+= tanh tonearest dbl-64 -0xfp+0 : -0xf.fffffffffcb5p-4 : inexact-ok
+= tanh towardzero dbl-64 -0xfp+0 : -0xf.fffffffffcb5p-4 : inexact-ok
+= tanh upward dbl-64 -0xfp+0 : -0xf.fffffffffcb5p-4 : inexact-ok
+= tanh downward ldbl-96-intel -0xfp+0L : -0xf.fffffffffcb523fp-4L : inexact-ok
+= tanh tonearest ldbl-96-intel -0xfp+0L : -0xf.fffffffffcb523ep-4L : inexact-ok
+= tanh towardzero ldbl-96-intel -0xfp+0L : -0xf.fffffffffcb523ep-4L : inexact-ok
+= tanh upward ldbl-96-intel -0xfp+0L : -0xf.fffffffffcb523ep-4L : inexact-ok
+= tanh downward ldbl-96-m68k -0xfp+0L : -0xf.fffffffffcb523fp-4L : inexact-ok
+= tanh tonearest ldbl-96-m68k -0xfp+0L : -0xf.fffffffffcb523ep-4L : inexact-ok
+= tanh towardzero ldbl-96-m68k -0xfp+0L : -0xf.fffffffffcb523ep-4L : inexact-ok
+= tanh upward ldbl-96-m68k -0xfp+0L : -0xf.fffffffffcb523ep-4L : inexact-ok
+= tanh downward ldbl-128 -0xfp+0L : -0xf.fffffffffcb523e7aa70681dc27p-4L : inexact-ok
+= tanh tonearest ldbl-128 -0xfp+0L : -0xf.fffffffffcb523e7aa70681dc27p-4L : inexact-ok
+= tanh towardzero ldbl-128 -0xfp+0L : -0xf.fffffffffcb523e7aa70681dc268p-4L : inexact-ok
+= tanh upward ldbl-128 -0xfp+0L : -0xf.fffffffffcb523e7aa70681dc268p-4L : inexact-ok
+= tanh downward ldbl-128ibm -0xfp+0L : -0xf.fffffffffcb523e7aa70681dc4p-4L : inexact-ok
+= tanh tonearest ldbl-128ibm -0xfp+0L : -0xf.fffffffffcb523e7aa70681dc4p-4L : inexact-ok
+= tanh towardzero ldbl-128ibm -0xfp+0L : -0xf.fffffffffcb523e7aa70681dcp-4L : inexact-ok
+= tanh upward ldbl-128ibm -0xfp+0L : -0xf.fffffffffcb523e7aa70681dcp-4L : inexact-ok
+tanh 20
+= tanh downward flt-32 0x1.4p+4f : 0xf.fffffp-4f : inexact-ok
+= tanh tonearest flt-32 0x1.4p+4f : 0x1p+0f : inexact-ok
+= tanh towardzero flt-32 0x1.4p+4f : 0xf.fffffp-4f : inexact-ok
+= tanh upward flt-32 0x1.4p+4f : 0x1p+0f : inexact-ok
+= tanh downward dbl-64 0x1.4p+4 : 0xf.ffffffffffff8p-4 : inexact-ok
+= tanh tonearest dbl-64 0x1.4p+4 : 0x1p+0 : inexact-ok
+= tanh towardzero dbl-64 0x1.4p+4 : 0xf.ffffffffffff8p-4 : inexact-ok
+= tanh upward dbl-64 0x1.4p+4 : 0x1p+0 : inexact-ok
+= tanh downward ldbl-96-intel 0x1.4p+4L : 0xf.fffffffffffff63p-4L : inexact-ok
+= tanh tonearest ldbl-96-intel 0x1.4p+4L : 0xf.fffffffffffff63p-4L : inexact-ok
+= tanh towardzero ldbl-96-intel 0x1.4p+4L : 0xf.fffffffffffff63p-4L : inexact-ok
+= tanh upward ldbl-96-intel 0x1.4p+4L : 0xf.fffffffffffff64p-4L : inexact-ok
+= tanh downward ldbl-96-m68k 0x1.4p+4L : 0xf.fffffffffffff63p-4L : inexact-ok
+= tanh tonearest ldbl-96-m68k 0x1.4p+4L : 0xf.fffffffffffff63p-4L : inexact-ok
+= tanh towardzero ldbl-96-m68k 0x1.4p+4L : 0xf.fffffffffffff63p-4L : inexact-ok
+= tanh upward ldbl-96-m68k 0x1.4p+4L : 0xf.fffffffffffff64p-4L : inexact-ok
+= tanh downward ldbl-128 0x1.4p+4L : 0xf.fffffffffffff63436db3272ede8p-4L : inexact-ok
+= tanh tonearest ldbl-128 0x1.4p+4L : 0xf.fffffffffffff63436db3272edfp-4L : inexact-ok
+= tanh towardzero ldbl-128 0x1.4p+4L : 0xf.fffffffffffff63436db3272ede8p-4L : inexact-ok
+= tanh upward ldbl-128 0x1.4p+4L : 0xf.fffffffffffff63436db3272edfp-4L : inexact-ok
+= tanh downward ldbl-128ibm 0x1.4p+4L : 0xf.fffffffffffff63436db3272ecp-4L : inexact-ok
+= tanh tonearest ldbl-128ibm 0x1.4p+4L : 0xf.fffffffffffff63436db3272ecp-4L : inexact-ok
+= tanh towardzero ldbl-128ibm 0x1.4p+4L : 0xf.fffffffffffff63436db3272ecp-4L : inexact-ok
+= tanh upward ldbl-128ibm 0x1.4p+4L : 0xf.fffffffffffff63436db3272fp-4L : inexact-ok
+tanh -20
+= tanh downward flt-32 -0x1.4p+4f : -0x1p+0f : inexact-ok
+= tanh tonearest flt-32 -0x1.4p+4f : -0x1p+0f : inexact-ok
+= tanh towardzero flt-32 -0x1.4p+4f : -0xf.fffffp-4f : inexact-ok
+= tanh upward flt-32 -0x1.4p+4f : -0xf.fffffp-4f : inexact-ok
+= tanh downward dbl-64 -0x1.4p+4 : -0x1p+0 : inexact-ok
+= tanh tonearest dbl-64 -0x1.4p+4 : -0x1p+0 : inexact-ok
+= tanh towardzero dbl-64 -0x1.4p+4 : -0xf.ffffffffffff8p-4 : inexact-ok
+= tanh upward dbl-64 -0x1.4p+4 : -0xf.ffffffffffff8p-4 : inexact-ok
+= tanh downward ldbl-96-intel -0x1.4p+4L : -0xf.fffffffffffff64p-4L : inexact-ok
+= tanh tonearest ldbl-96-intel -0x1.4p+4L : -0xf.fffffffffffff63p-4L : inexact-ok
+= tanh towardzero ldbl-96-intel -0x1.4p+4L : -0xf.fffffffffffff63p-4L : inexact-ok
+= tanh upward ldbl-96-intel -0x1.4p+4L : -0xf.fffffffffffff63p-4L : inexact-ok
+= tanh downward ldbl-96-m68k -0x1.4p+4L : -0xf.fffffffffffff64p-4L : inexact-ok
+= tanh tonearest ldbl-96-m68k -0x1.4p+4L : -0xf.fffffffffffff63p-4L : inexact-ok
+= tanh towardzero ldbl-96-m68k -0x1.4p+4L : -0xf.fffffffffffff63p-4L : inexact-ok
+= tanh upward ldbl-96-m68k -0x1.4p+4L : -0xf.fffffffffffff63p-4L : inexact-ok
+= tanh downward ldbl-128 -0x1.4p+4L : -0xf.fffffffffffff63436db3272edfp-4L : inexact-ok
+= tanh tonearest ldbl-128 -0x1.4p+4L : -0xf.fffffffffffff63436db3272edfp-4L : inexact-ok
+= tanh towardzero ldbl-128 -0x1.4p+4L : -0xf.fffffffffffff63436db3272ede8p-4L : inexact-ok
+= tanh upward ldbl-128 -0x1.4p+4L : -0xf.fffffffffffff63436db3272ede8p-4L : inexact-ok
+= tanh downward ldbl-128ibm -0x1.4p+4L : -0xf.fffffffffffff63436db3272fp-4L : inexact-ok
+= tanh tonearest ldbl-128ibm -0x1.4p+4L : -0xf.fffffffffffff63436db3272ecp-4L : inexact-ok
+= tanh towardzero ldbl-128ibm -0x1.4p+4L : -0xf.fffffffffffff63436db3272ecp-4L : inexact-ok
+= tanh upward ldbl-128ibm -0x1.4p+4L : -0xf.fffffffffffff63436db3272ecp-4L : inexact-ok
+tanh 22
+= tanh downward flt-32 0x1.6p+4f : 0xf.fffffp-4f : inexact-ok
+= tanh tonearest flt-32 0x1.6p+4f : 0x1p+0f : inexact-ok
+= tanh towardzero flt-32 0x1.6p+4f : 0xf.fffffp-4f : inexact-ok
+= tanh upward flt-32 0x1.6p+4f : 0x1p+0f : inexact-ok
+= tanh downward dbl-64 0x1.6p+4 : 0xf.ffffffffffff8p-4 : inexact-ok
+= tanh tonearest dbl-64 0x1.6p+4 : 0x1p+0 : inexact-ok
+= tanh towardzero dbl-64 0x1.6p+4 : 0xf.ffffffffffff8p-4 : inexact-ok
+= tanh upward dbl-64 0x1.6p+4 : 0x1p+0 : inexact-ok
+= tanh downward ldbl-96-intel 0x1.6p+4L : 0xf.ffffffffffffffdp-4L : inexact-ok
+= tanh tonearest ldbl-96-intel 0x1.6p+4L : 0xf.ffffffffffffffdp-4L : inexact-ok
+= tanh towardzero ldbl-96-intel 0x1.6p+4L : 0xf.ffffffffffffffdp-4L : inexact-ok
+= tanh upward ldbl-96-intel 0x1.6p+4L : 0xf.ffffffffffffffep-4L : inexact-ok
+= tanh downward ldbl-96-m68k 0x1.6p+4L : 0xf.ffffffffffffffdp-4L : inexact-ok
+= tanh tonearest ldbl-96-m68k 0x1.6p+4L : 0xf.ffffffffffffffdp-4L : inexact-ok
+= tanh towardzero ldbl-96-m68k 0x1.6p+4L : 0xf.ffffffffffffffdp-4L : inexact-ok
+= tanh upward ldbl-96-m68k 0x1.6p+4L : 0xf.ffffffffffffffep-4L : inexact-ok
+= tanh downward ldbl-128 0x1.6p+4L : 0xf.ffffffffffffffd2117c43d16e28p-4L : inexact-ok
+= tanh tonearest ldbl-128 0x1.6p+4L : 0xf.ffffffffffffffd2117c43d16e28p-4L : inexact-ok
+= tanh towardzero ldbl-128 0x1.6p+4L : 0xf.ffffffffffffffd2117c43d16e28p-4L : inexact-ok
+= tanh upward ldbl-128 0x1.6p+4L : 0xf.ffffffffffffffd2117c43d16e3p-4L : inexact-ok
+= tanh downward ldbl-128ibm 0x1.6p+4L : 0xf.ffffffffffffffd2117c43d16cp-4L : inexact-ok
+= tanh tonearest ldbl-128ibm 0x1.6p+4L : 0xf.ffffffffffffffd2117c43d17p-4L : inexact-ok
+= tanh towardzero ldbl-128ibm 0x1.6p+4L : 0xf.ffffffffffffffd2117c43d16cp-4L : inexact-ok
+= tanh upward ldbl-128ibm 0x1.6p+4L : 0xf.ffffffffffffffd2117c43d17p-4L : inexact-ok
+tanh -22
+= tanh downward flt-32 -0x1.6p+4f : -0x1p+0f : inexact-ok
+= tanh tonearest flt-32 -0x1.6p+4f : -0x1p+0f : inexact-ok
+= tanh towardzero flt-32 -0x1.6p+4f : -0xf.fffffp-4f : inexact-ok
+= tanh upward flt-32 -0x1.6p+4f : -0xf.fffffp-4f : inexact-ok
+= tanh downward dbl-64 -0x1.6p+4 : -0x1p+0 : inexact-ok
+= tanh tonearest dbl-64 -0x1.6p+4 : -0x1p+0 : inexact-ok
+= tanh towardzero dbl-64 -0x1.6p+4 : -0xf.ffffffffffff8p-4 : inexact-ok
+= tanh upward dbl-64 -0x1.6p+4 : -0xf.ffffffffffff8p-4 : inexact-ok
+= tanh downward ldbl-96-intel -0x1.6p+4L : -0xf.ffffffffffffffep-4L : inexact-ok
+= tanh tonearest ldbl-96-intel -0x1.6p+4L : -0xf.ffffffffffffffdp-4L : inexact-ok
+= tanh towardzero ldbl-96-intel -0x1.6p+4L : -0xf.ffffffffffffffdp-4L : inexact-ok
+= tanh upward ldbl-96-intel -0x1.6p+4L : -0xf.ffffffffffffffdp-4L : inexact-ok
+= tanh downward ldbl-96-m68k -0x1.6p+4L : -0xf.ffffffffffffffep-4L : inexact-ok
+= tanh tonearest ldbl-96-m68k -0x1.6p+4L : -0xf.ffffffffffffffdp-4L : inexact-ok
+= tanh towardzero ldbl-96-m68k -0x1.6p+4L : -0xf.ffffffffffffffdp-4L : inexact-ok
+= tanh upward ldbl-96-m68k -0x1.6p+4L : -0xf.ffffffffffffffdp-4L : inexact-ok
+= tanh downward ldbl-128 -0x1.6p+4L : -0xf.ffffffffffffffd2117c43d16e3p-4L : inexact-ok
+= tanh tonearest ldbl-128 -0x1.6p+4L : -0xf.ffffffffffffffd2117c43d16e28p-4L : inexact-ok
+= tanh towardzero ldbl-128 -0x1.6p+4L : -0xf.ffffffffffffffd2117c43d16e28p-4L : inexact-ok
+= tanh upward ldbl-128 -0x1.6p+4L : -0xf.ffffffffffffffd2117c43d16e28p-4L : inexact-ok
+= tanh downward ldbl-128ibm -0x1.6p+4L : -0xf.ffffffffffffffd2117c43d17p-4L : inexact-ok
+= tanh tonearest ldbl-128ibm -0x1.6p+4L : -0xf.ffffffffffffffd2117c43d17p-4L : inexact-ok
+= tanh towardzero ldbl-128ibm -0x1.6p+4L : -0xf.ffffffffffffffd2117c43d16cp-4L : inexact-ok
+= tanh upward ldbl-128ibm -0x1.6p+4L : -0xf.ffffffffffffffd2117c43d16cp-4L : inexact-ok
+tanh 25
+= tanh downward flt-32 0x1.9p+4f : 0xf.fffffp-4f : inexact-ok
+= tanh tonearest flt-32 0x1.9p+4f : 0x1p+0f : inexact-ok
+= tanh towardzero flt-32 0x1.9p+4f : 0xf.fffffp-4f : inexact-ok
+= tanh upward flt-32 0x1.9p+4f : 0x1p+0f : inexact-ok
+= tanh downward dbl-64 0x1.9p+4 : 0xf.ffffffffffff8p-4 : inexact-ok
+= tanh tonearest dbl-64 0x1.9p+4 : 0x1p+0 : inexact-ok
+= tanh towardzero dbl-64 0x1.9p+4 : 0xf.ffffffffffff8p-4 : inexact-ok
+= tanh upward dbl-64 0x1.9p+4 : 0x1p+0 : inexact-ok
+= tanh downward ldbl-96-intel 0x1.9p+4L : 0xf.fffffffffffffffp-4L : inexact-ok
+= tanh tonearest ldbl-96-intel 0x1.9p+4L : 0x1p+0L : inexact-ok
+= tanh towardzero ldbl-96-intel 0x1.9p+4L : 0xf.fffffffffffffffp-4L : inexact-ok
+= tanh upward ldbl-96-intel 0x1.9p+4L : 0x1p+0L : inexact-ok
+= tanh downward ldbl-96-m68k 0x1.9p+4L : 0xf.fffffffffffffffp-4L : inexact-ok
+= tanh tonearest ldbl-96-m68k 0x1.9p+4L : 0x1p+0L : inexact-ok
+= tanh towardzero ldbl-96-m68k 0x1.9p+4L : 0xf.fffffffffffffffp-4L : inexact-ok
+= tanh upward ldbl-96-m68k 0x1.9p+4L : 0x1p+0L : inexact-ok
+= tanh downward ldbl-128 0x1.9p+4L : 0xf.ffffffffffffffffe2da82ab81fp-4L : inexact-ok
+= tanh tonearest ldbl-128 0x1.9p+4L : 0xf.ffffffffffffffffe2da82ab81f8p-4L : inexact-ok
+= tanh towardzero ldbl-128 0x1.9p+4L : 0xf.ffffffffffffffffe2da82ab81fp-4L : inexact-ok
+= tanh upward ldbl-128 0x1.9p+4L : 0xf.ffffffffffffffffe2da82ab81f8p-4L : inexact-ok
+= tanh downward ldbl-128ibm 0x1.9p+4L : 0xf.ffffffffffffffffe2da82ab8p-4L : inexact-ok
+= tanh tonearest ldbl-128ibm 0x1.9p+4L : 0xf.ffffffffffffffffe2da82ab8p-4L : inexact-ok
+= tanh towardzero ldbl-128ibm 0x1.9p+4L : 0xf.ffffffffffffffffe2da82ab8p-4L : inexact-ok
+= tanh upward ldbl-128ibm 0x1.9p+4L : 0xf.ffffffffffffffffe2da82ab84p-4L : inexact-ok
+tanh -25
+= tanh downward flt-32 -0x1.9p+4f : -0x1p+0f : inexact-ok
+= tanh tonearest flt-32 -0x1.9p+4f : -0x1p+0f : inexact-ok
+= tanh towardzero flt-32 -0x1.9p+4f : -0xf.fffffp-4f : inexact-ok
+= tanh upward flt-32 -0x1.9p+4f : -0xf.fffffp-4f : inexact-ok
+= tanh downward dbl-64 -0x1.9p+4 : -0x1p+0 : inexact-ok
+= tanh tonearest dbl-64 -0x1.9p+4 : -0x1p+0 : inexact-ok
+= tanh towardzero dbl-64 -0x1.9p+4 : -0xf.ffffffffffff8p-4 : inexact-ok
+= tanh upward dbl-64 -0x1.9p+4 : -0xf.ffffffffffff8p-4 : inexact-ok
+= tanh downward ldbl-96-intel -0x1.9p+4L : -0x1p+0L : inexact-ok
+= tanh tonearest ldbl-96-intel -0x1.9p+4L : -0x1p+0L : inexact-ok
+= tanh towardzero ldbl-96-intel -0x1.9p+4L : -0xf.fffffffffffffffp-4L : inexact-ok
+= tanh upward ldbl-96-intel -0x1.9p+4L : -0xf.fffffffffffffffp-4L : inexact-ok
+= tanh downward ldbl-96-m68k -0x1.9p+4L : -0x1p+0L : inexact-ok
+= tanh tonearest ldbl-96-m68k -0x1.9p+4L : -0x1p+0L : inexact-ok
+= tanh towardzero ldbl-96-m68k -0x1.9p+4L : -0xf.fffffffffffffffp-4L : inexact-ok
+= tanh upward ldbl-96-m68k -0x1.9p+4L : -0xf.fffffffffffffffp-4L : inexact-ok
+= tanh downward ldbl-128 -0x1.9p+4L : -0xf.ffffffffffffffffe2da82ab81f8p-4L : inexact-ok
+= tanh tonearest ldbl-128 -0x1.9p+4L : -0xf.ffffffffffffffffe2da82ab81f8p-4L : inexact-ok
+= tanh towardzero ldbl-128 -0x1.9p+4L : -0xf.ffffffffffffffffe2da82ab81fp-4L : inexact-ok
+= tanh upward ldbl-128 -0x1.9p+4L : -0xf.ffffffffffffffffe2da82ab81fp-4L : inexact-ok
+= tanh downward ldbl-128ibm -0x1.9p+4L : -0xf.ffffffffffffffffe2da82ab84p-4L : inexact-ok
+= tanh tonearest ldbl-128ibm -0x1.9p+4L : -0xf.ffffffffffffffffe2da82ab8p-4L : inexact-ok
+= tanh towardzero ldbl-128ibm -0x1.9p+4L : -0xf.ffffffffffffffffe2da82ab8p-4L : inexact-ok
+= tanh upward ldbl-128ibm -0x1.9p+4L : -0xf.ffffffffffffffffe2da82ab8p-4L : inexact-ok
+tanh 30
+= tanh downward flt-32 0x1.ep+4f : 0xf.fffffp-4f : inexact-ok
+= tanh tonearest flt-32 0x1.ep+4f : 0x1p+0f : inexact-ok
+= tanh towardzero flt-32 0x1.ep+4f : 0xf.fffffp-4f : inexact-ok
+= tanh upward flt-32 0x1.ep+4f : 0x1p+0f : inexact-ok
+= tanh downward dbl-64 0x1.ep+4 : 0xf.ffffffffffff8p-4 : inexact-ok
+= tanh tonearest dbl-64 0x1.ep+4 : 0x1p+0 : inexact-ok
+= tanh towardzero dbl-64 0x1.ep+4 : 0xf.ffffffffffff8p-4 : inexact-ok
+= tanh upward dbl-64 0x1.ep+4 : 0x1p+0 : inexact-ok
+= tanh downward ldbl-96-intel 0x1.ep+4L : 0xf.fffffffffffffffp-4L : inexact-ok
+= tanh tonearest ldbl-96-intel 0x1.ep+4L : 0x1p+0L : inexact-ok
+= tanh towardzero ldbl-96-intel 0x1.ep+4L : 0xf.fffffffffffffffp-4L : inexact-ok
+= tanh upward ldbl-96-intel 0x1.ep+4L : 0x1p+0L : inexact-ok
+= tanh downward ldbl-96-m68k 0x1.ep+4L : 0xf.fffffffffffffffp-4L : inexact-ok
+= tanh tonearest ldbl-96-m68k 0x1.ep+4L : 0x1p+0L : inexact-ok
+= tanh towardzero ldbl-96-m68k 0x1.ep+4L : 0xf.fffffffffffffffp-4L : inexact-ok
+= tanh upward ldbl-96-m68k 0x1.ep+4L : 0x1p+0L : inexact-ok
+= tanh downward ldbl-128 0x1.ep+4L : 0xf.ffffffffffffffffffffa9479b9p-4L : inexact-ok
+= tanh tonearest ldbl-128 0x1.ep+4L : 0xf.ffffffffffffffffffffa9479b98p-4L : inexact-ok
+= tanh towardzero ldbl-128 0x1.ep+4L : 0xf.ffffffffffffffffffffa9479b9p-4L : inexact-ok
+= tanh upward ldbl-128 0x1.ep+4L : 0xf.ffffffffffffffffffffa9479b98p-4L : inexact-ok
+= tanh downward ldbl-128ibm 0x1.ep+4L : 0xf.ffffffffffffffffffffa94798p-4L : inexact-ok
+= tanh tonearest ldbl-128ibm 0x1.ep+4L : 0xf.ffffffffffffffffffffa9479cp-4L : inexact-ok
+= tanh towardzero ldbl-128ibm 0x1.ep+4L : 0xf.ffffffffffffffffffffa94798p-4L : inexact-ok
+= tanh upward ldbl-128ibm 0x1.ep+4L : 0xf.ffffffffffffffffffffa9479cp-4L : inexact-ok
+tanh -30
+= tanh downward flt-32 -0x1.ep+4f : -0x1p+0f : inexact-ok
+= tanh tonearest flt-32 -0x1.ep+4f : -0x1p+0f : inexact-ok
+= tanh towardzero flt-32 -0x1.ep+4f : -0xf.fffffp-4f : inexact-ok
+= tanh upward flt-32 -0x1.ep+4f : -0xf.fffffp-4f : inexact-ok
+= tanh downward dbl-64 -0x1.ep+4 : -0x1p+0 : inexact-ok
+= tanh tonearest dbl-64 -0x1.ep+4 : -0x1p+0 : inexact-ok
+= tanh towardzero dbl-64 -0x1.ep+4 : -0xf.ffffffffffff8p-4 : inexact-ok
+= tanh upward dbl-64 -0x1.ep+4 : -0xf.ffffffffffff8p-4 : inexact-ok
+= tanh downward ldbl-96-intel -0x1.ep+4L : -0x1p+0L : inexact-ok
+= tanh tonearest ldbl-96-intel -0x1.ep+4L : -0x1p+0L : inexact-ok
+= tanh towardzero ldbl-96-intel -0x1.ep+4L : -0xf.fffffffffffffffp-4L : inexact-ok
+= tanh upward ldbl-96-intel -0x1.ep+4L : -0xf.fffffffffffffffp-4L : inexact-ok
+= tanh downward ldbl-96-m68k -0x1.ep+4L : -0x1p+0L : inexact-ok
+= tanh tonearest ldbl-96-m68k -0x1.ep+4L : -0x1p+0L : inexact-ok
+= tanh towardzero ldbl-96-m68k -0x1.ep+4L : -0xf.fffffffffffffffp-4L : inexact-ok
+= tanh upward ldbl-96-m68k -0x1.ep+4L : -0xf.fffffffffffffffp-4L : inexact-ok
+= tanh downward ldbl-128 -0x1.ep+4L : -0xf.ffffffffffffffffffffa9479b98p-4L : inexact-ok
+= tanh tonearest ldbl-128 -0x1.ep+4L : -0xf.ffffffffffffffffffffa9479b98p-4L : inexact-ok
+= tanh towardzero ldbl-128 -0x1.ep+4L : -0xf.ffffffffffffffffffffa9479b9p-4L : inexact-ok
+= tanh upward ldbl-128 -0x1.ep+4L : -0xf.ffffffffffffffffffffa9479b9p-4L : inexact-ok
+= tanh downward ldbl-128ibm -0x1.ep+4L : -0xf.ffffffffffffffffffffa9479cp-4L : inexact-ok
+= tanh tonearest ldbl-128ibm -0x1.ep+4L : -0xf.ffffffffffffffffffffa9479cp-4L : inexact-ok
+= tanh towardzero ldbl-128ibm -0x1.ep+4L : -0xf.ffffffffffffffffffffa94798p-4L : inexact-ok
+= tanh upward ldbl-128ibm -0x1.ep+4L : -0xf.ffffffffffffffffffffa94798p-4L : inexact-ok
+tanh 35
+= tanh downward flt-32 0x2.3p+4f : 0xf.fffffp-4f : inexact-ok
+= tanh tonearest flt-32 0x2.3p+4f : 0x1p+0f : inexact-ok
+= tanh towardzero flt-32 0x2.3p+4f : 0xf.fffffp-4f : inexact-ok
+= tanh upward flt-32 0x2.3p+4f : 0x1p+0f : inexact-ok
+= tanh downward dbl-64 0x2.3p+4 : 0xf.ffffffffffff8p-4 : inexact-ok
+= tanh tonearest dbl-64 0x2.3p+4 : 0x1p+0 : inexact-ok
+= tanh towardzero dbl-64 0x2.3p+4 : 0xf.ffffffffffff8p-4 : inexact-ok
+= tanh upward dbl-64 0x2.3p+4 : 0x1p+0 : inexact-ok
+= tanh downward ldbl-96-intel 0x2.3p+4L : 0xf.fffffffffffffffp-4L : inexact-ok
+= tanh tonearest ldbl-96-intel 0x2.3p+4L : 0x1p+0L : inexact-ok
+= tanh towardzero ldbl-96-intel 0x2.3p+4L : 0xf.fffffffffffffffp-4L : inexact-ok
+= tanh upward ldbl-96-intel 0x2.3p+4L : 0x1p+0L : inexact-ok
+= tanh downward ldbl-96-m68k 0x2.3p+4L : 0xf.fffffffffffffffp-4L : inexact-ok
+= tanh tonearest ldbl-96-m68k 0x2.3p+4L : 0x1p+0L : inexact-ok
+= tanh towardzero ldbl-96-m68k 0x2.3p+4L : 0xf.fffffffffffffffp-4L : inexact-ok
+= tanh upward ldbl-96-m68k 0x2.3p+4L : 0x1p+0L : inexact-ok
+= tanh downward ldbl-128 0x2.3p+4L : 0xf.fffffffffffffffffffffffefdf8p-4L : inexact-ok
+= tanh tonearest ldbl-128 0x2.3p+4L : 0xf.fffffffffffffffffffffffefdf8p-4L : inexact-ok
+= tanh towardzero ldbl-128 0x2.3p+4L : 0xf.fffffffffffffffffffffffefdf8p-4L : inexact-ok
+= tanh upward ldbl-128 0x2.3p+4L : 0xf.fffffffffffffffffffffffefep-4L : inexact-ok
+= tanh downward ldbl-128ibm 0x2.3p+4L : 0xf.fffffffffffffffffffffffefcp-4L : inexact-ok
+= tanh tonearest ldbl-128ibm 0x2.3p+4L : 0xf.fffffffffffffffffffffffefcp-4L : inexact-ok
+= tanh towardzero ldbl-128ibm 0x2.3p+4L : 0xf.fffffffffffffffffffffffefcp-4L : inexact-ok
+= tanh upward ldbl-128ibm 0x2.3p+4L : 0xf.ffffffffffffffffffffffffp-4L : inexact-ok
+tanh -35
+= tanh downward flt-32 -0x2.3p+4f : -0x1p+0f : inexact-ok
+= tanh tonearest flt-32 -0x2.3p+4f : -0x1p+0f : inexact-ok
+= tanh towardzero flt-32 -0x2.3p+4f : -0xf.fffffp-4f : inexact-ok
+= tanh upward flt-32 -0x2.3p+4f : -0xf.fffffp-4f : inexact-ok
+= tanh downward dbl-64 -0x2.3p+4 : -0x1p+0 : inexact-ok
+= tanh tonearest dbl-64 -0x2.3p+4 : -0x1p+0 : inexact-ok
+= tanh towardzero dbl-64 -0x2.3p+4 : -0xf.ffffffffffff8p-4 : inexact-ok
+= tanh upward dbl-64 -0x2.3p+4 : -0xf.ffffffffffff8p-4 : inexact-ok
+= tanh downward ldbl-96-intel -0x2.3p+4L : -0x1p+0L : inexact-ok
+= tanh tonearest ldbl-96-intel -0x2.3p+4L : -0x1p+0L : inexact-ok
+= tanh towardzero ldbl-96-intel -0x2.3p+4L : -0xf.fffffffffffffffp-4L : inexact-ok
+= tanh upward ldbl-96-intel -0x2.3p+4L : -0xf.fffffffffffffffp-4L : inexact-ok
+= tanh downward ldbl-96-m68k -0x2.3p+4L : -0x1p+0L : inexact-ok
+= tanh tonearest ldbl-96-m68k -0x2.3p+4L : -0x1p+0L : inexact-ok
+= tanh towardzero ldbl-96-m68k -0x2.3p+4L : -0xf.fffffffffffffffp-4L : inexact-ok
+= tanh upward ldbl-96-m68k -0x2.3p+4L : -0xf.fffffffffffffffp-4L : inexact-ok
+= tanh downward ldbl-128 -0x2.3p+4L : -0xf.fffffffffffffffffffffffefep-4L : inexact-ok
+= tanh tonearest ldbl-128 -0x2.3p+4L : -0xf.fffffffffffffffffffffffefdf8p-4L : inexact-ok
+= tanh towardzero ldbl-128 -0x2.3p+4L : -0xf.fffffffffffffffffffffffefdf8p-4L : inexact-ok
+= tanh upward ldbl-128 -0x2.3p+4L : -0xf.fffffffffffffffffffffffefdf8p-4L : inexact-ok
+= tanh downward ldbl-128ibm -0x2.3p+4L : -0xf.ffffffffffffffffffffffffp-4L : inexact-ok
+= tanh tonearest ldbl-128ibm -0x2.3p+4L : -0xf.fffffffffffffffffffffffefcp-4L : inexact-ok
+= tanh towardzero ldbl-128ibm -0x2.3p+4L : -0xf.fffffffffffffffffffffffefcp-4L : inexact-ok
+= tanh upward ldbl-128ibm -0x2.3p+4L : -0xf.fffffffffffffffffffffffefcp-4L : inexact-ok
+tanh 40
+= tanh downward flt-32 0x2.8p+4f : 0xf.fffffp-4f : inexact-ok
+= tanh tonearest flt-32 0x2.8p+4f : 0x1p+0f : inexact-ok
+= tanh towardzero flt-32 0x2.8p+4f : 0xf.fffffp-4f : inexact-ok
+= tanh upward flt-32 0x2.8p+4f : 0x1p+0f : inexact-ok
+= tanh downward dbl-64 0x2.8p+4 : 0xf.ffffffffffff8p-4 : inexact-ok
+= tanh tonearest dbl-64 0x2.8p+4 : 0x1p+0 : inexact-ok
+= tanh towardzero dbl-64 0x2.8p+4 : 0xf.ffffffffffff8p-4 : inexact-ok
+= tanh upward dbl-64 0x2.8p+4 : 0x1p+0 : inexact-ok
+= tanh downward ldbl-96-intel 0x2.8p+4L : 0xf.fffffffffffffffp-4L : inexact-ok
+= tanh tonearest ldbl-96-intel 0x2.8p+4L : 0x1p+0L : inexact-ok
+= tanh towardzero ldbl-96-intel 0x2.8p+4L : 0xf.fffffffffffffffp-4L : inexact-ok
+= tanh upward ldbl-96-intel 0x2.8p+4L : 0x1p+0L : inexact-ok
+= tanh downward ldbl-96-m68k 0x2.8p+4L : 0xf.fffffffffffffffp-4L : inexact-ok
+= tanh tonearest ldbl-96-m68k 0x2.8p+4L : 0x1p+0L : inexact-ok
+= tanh towardzero ldbl-96-m68k 0x2.8p+4L : 0xf.fffffffffffffffp-4L : inexact-ok
+= tanh upward ldbl-96-m68k 0x2.8p+4L : 0x1p+0L : inexact-ok
+= tanh downward ldbl-128 0x2.8p+4L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= tanh tonearest ldbl-128 0x2.8p+4L : 0x1p+0L : inexact-ok
+= tanh towardzero ldbl-128 0x2.8p+4L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= tanh upward ldbl-128 0x2.8p+4L : 0x1p+0L : inexact-ok
+= tanh downward ldbl-128ibm 0x2.8p+4L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
+= tanh tonearest ldbl-128ibm 0x2.8p+4L : 0x1p+0L : inexact-ok
+= tanh towardzero ldbl-128ibm 0x2.8p+4L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
+= tanh upward ldbl-128ibm 0x2.8p+4L : 0x1p+0L : inexact-ok
+tanh -40
+= tanh downward flt-32 -0x2.8p+4f : -0x1p+0f : inexact-ok
+= tanh tonearest flt-32 -0x2.8p+4f : -0x1p+0f : inexact-ok
+= tanh towardzero flt-32 -0x2.8p+4f : -0xf.fffffp-4f : inexact-ok
+= tanh upward flt-32 -0x2.8p+4f : -0xf.fffffp-4f : inexact-ok
+= tanh downward dbl-64 -0x2.8p+4 : -0x1p+0 : inexact-ok
+= tanh tonearest dbl-64 -0x2.8p+4 : -0x1p+0 : inexact-ok
+= tanh towardzero dbl-64 -0x2.8p+4 : -0xf.ffffffffffff8p-4 : inexact-ok
+= tanh upward dbl-64 -0x2.8p+4 : -0xf.ffffffffffff8p-4 : inexact-ok
+= tanh downward ldbl-96-intel -0x2.8p+4L : -0x1p+0L : inexact-ok
+= tanh tonearest ldbl-96-intel -0x2.8p+4L : -0x1p+0L : inexact-ok
+= tanh towardzero ldbl-96-intel -0x2.8p+4L : -0xf.fffffffffffffffp-4L : inexact-ok
+= tanh upward ldbl-96-intel -0x2.8p+4L : -0xf.fffffffffffffffp-4L : inexact-ok
+= tanh downward ldbl-96-m68k -0x2.8p+4L : -0x1p+0L : inexact-ok
+= tanh tonearest ldbl-96-m68k -0x2.8p+4L : -0x1p+0L : inexact-ok
+= tanh towardzero ldbl-96-m68k -0x2.8p+4L : -0xf.fffffffffffffffp-4L : inexact-ok
+= tanh upward ldbl-96-m68k -0x2.8p+4L : -0xf.fffffffffffffffp-4L : inexact-ok
+= tanh downward ldbl-128 -0x2.8p+4L : -0x1p+0L : inexact-ok
+= tanh tonearest ldbl-128 -0x2.8p+4L : -0x1p+0L : inexact-ok
+= tanh towardzero ldbl-128 -0x2.8p+4L : -0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= tanh upward ldbl-128 -0x2.8p+4L : -0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= tanh downward ldbl-128ibm -0x2.8p+4L : -0x1p+0L : inexact-ok
+= tanh tonearest ldbl-128ibm -0x2.8p+4L : -0x1p+0L : inexact-ok
+= tanh towardzero ldbl-128ibm -0x2.8p+4L : -0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
+= tanh upward ldbl-128ibm -0x2.8p+4L : -0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
+tanh 45
+= tanh downward flt-32 0x2.dp+4f : 0xf.fffffp-4f : inexact-ok
+= tanh tonearest flt-32 0x2.dp+4f : 0x1p+0f : inexact-ok
+= tanh towardzero flt-32 0x2.dp+4f : 0xf.fffffp-4f : inexact-ok
+= tanh upward flt-32 0x2.dp+4f : 0x1p+0f : inexact-ok
+= tanh downward dbl-64 0x2.dp+4 : 0xf.ffffffffffff8p-4 : inexact-ok
+= tanh tonearest dbl-64 0x2.dp+4 : 0x1p+0 : inexact-ok
+= tanh towardzero dbl-64 0x2.dp+4 : 0xf.ffffffffffff8p-4 : inexact-ok
+= tanh upward dbl-64 0x2.dp+4 : 0x1p+0 : inexact-ok
+= tanh downward ldbl-96-intel 0x2.dp+4L : 0xf.fffffffffffffffp-4L : inexact-ok
+= tanh tonearest ldbl-96-intel 0x2.dp+4L : 0x1p+0L : inexact-ok
+= tanh towardzero ldbl-96-intel 0x2.dp+4L : 0xf.fffffffffffffffp-4L : inexact-ok
+= tanh upward ldbl-96-intel 0x2.dp+4L : 0x1p+0L : inexact-ok
+= tanh downward ldbl-96-m68k 0x2.dp+4L : 0xf.fffffffffffffffp-4L : inexact-ok
+= tanh tonearest ldbl-96-m68k 0x2.dp+4L : 0x1p+0L : inexact-ok
+= tanh towardzero ldbl-96-m68k 0x2.dp+4L : 0xf.fffffffffffffffp-4L : inexact-ok
+= tanh upward ldbl-96-m68k 0x2.dp+4L : 0x1p+0L : inexact-ok
+= tanh downward ldbl-128 0x2.dp+4L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= tanh tonearest ldbl-128 0x2.dp+4L : 0x1p+0L : inexact-ok
+= tanh towardzero ldbl-128 0x2.dp+4L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= tanh upward ldbl-128 0x2.dp+4L : 0x1p+0L : inexact-ok
+= tanh downward ldbl-128ibm 0x2.dp+4L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
+= tanh tonearest ldbl-128ibm 0x2.dp+4L : 0x1p+0L : inexact-ok
+= tanh towardzero ldbl-128ibm 0x2.dp+4L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
+= tanh upward ldbl-128ibm 0x2.dp+4L : 0x1p+0L : inexact-ok
+tanh -45
+= tanh downward flt-32 -0x2.dp+4f : -0x1p+0f : inexact-ok
+= tanh tonearest flt-32 -0x2.dp+4f : -0x1p+0f : inexact-ok
+= tanh towardzero flt-32 -0x2.dp+4f : -0xf.fffffp-4f : inexact-ok
+= tanh upward flt-32 -0x2.dp+4f : -0xf.fffffp-4f : inexact-ok
+= tanh downward dbl-64 -0x2.dp+4 : -0x1p+0 : inexact-ok
+= tanh tonearest dbl-64 -0x2.dp+4 : -0x1p+0 : inexact-ok
+= tanh towardzero dbl-64 -0x2.dp+4 : -0xf.ffffffffffff8p-4 : inexact-ok
+= tanh upward dbl-64 -0x2.dp+4 : -0xf.ffffffffffff8p-4 : inexact-ok
+= tanh downward ldbl-96-intel -0x2.dp+4L : -0x1p+0L : inexact-ok
+= tanh tonearest ldbl-96-intel -0x2.dp+4L : -0x1p+0L : inexact-ok
+= tanh towardzero ldbl-96-intel -0x2.dp+4L : -0xf.fffffffffffffffp-4L : inexact-ok
+= tanh upward ldbl-96-intel -0x2.dp+4L : -0xf.fffffffffffffffp-4L : inexact-ok
+= tanh downward ldbl-96-m68k -0x2.dp+4L : -0x1p+0L : inexact-ok
+= tanh tonearest ldbl-96-m68k -0x2.dp+4L : -0x1p+0L : inexact-ok
+= tanh towardzero ldbl-96-m68k -0x2.dp+4L : -0xf.fffffffffffffffp-4L : inexact-ok
+= tanh upward ldbl-96-m68k -0x2.dp+4L : -0xf.fffffffffffffffp-4L : inexact-ok
+= tanh downward ldbl-128 -0x2.dp+4L : -0x1p+0L : inexact-ok
+= tanh tonearest ldbl-128 -0x2.dp+4L : -0x1p+0L : inexact-ok
+= tanh towardzero ldbl-128 -0x2.dp+4L : -0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= tanh upward ldbl-128 -0x2.dp+4L : -0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= tanh downward ldbl-128ibm -0x2.dp+4L : -0x1p+0L : inexact-ok
+= tanh tonearest ldbl-128ibm -0x2.dp+4L : -0x1p+0L : inexact-ok
+= tanh towardzero ldbl-128ibm -0x2.dp+4L : -0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
+= tanh upward ldbl-128ibm -0x2.dp+4L : -0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
+tanh 50
+= tanh downward flt-32 0x3.2p+4f : 0xf.fffffp-4f : inexact-ok
+= tanh tonearest flt-32 0x3.2p+4f : 0x1p+0f : inexact-ok
+= tanh towardzero flt-32 0x3.2p+4f : 0xf.fffffp-4f : inexact-ok
+= tanh upward flt-32 0x3.2p+4f : 0x1p+0f : inexact-ok
+= tanh downward dbl-64 0x3.2p+4 : 0xf.ffffffffffff8p-4 : inexact-ok
+= tanh tonearest dbl-64 0x3.2p+4 : 0x1p+0 : inexact-ok
+= tanh towardzero dbl-64 0x3.2p+4 : 0xf.ffffffffffff8p-4 : inexact-ok
+= tanh upward dbl-64 0x3.2p+4 : 0x1p+0 : inexact-ok
+= tanh downward ldbl-96-intel 0x3.2p+4L : 0xf.fffffffffffffffp-4L : inexact-ok
+= tanh tonearest ldbl-96-intel 0x3.2p+4L : 0x1p+0L : inexact-ok
+= tanh towardzero ldbl-96-intel 0x3.2p+4L : 0xf.fffffffffffffffp-4L : inexact-ok
+= tanh upward ldbl-96-intel 0x3.2p+4L : 0x1p+0L : inexact-ok
+= tanh downward ldbl-96-m68k 0x3.2p+4L : 0xf.fffffffffffffffp-4L : inexact-ok
+= tanh tonearest ldbl-96-m68k 0x3.2p+4L : 0x1p+0L : inexact-ok
+= tanh towardzero ldbl-96-m68k 0x3.2p+4L : 0xf.fffffffffffffffp-4L : inexact-ok
+= tanh upward ldbl-96-m68k 0x3.2p+4L : 0x1p+0L : inexact-ok
+= tanh downward ldbl-128 0x3.2p+4L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= tanh tonearest ldbl-128 0x3.2p+4L : 0x1p+0L : inexact-ok
+= tanh towardzero ldbl-128 0x3.2p+4L : 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= tanh upward ldbl-128 0x3.2p+4L : 0x1p+0L : inexact-ok
+= tanh downward ldbl-128ibm 0x3.2p+4L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
+= tanh tonearest ldbl-128ibm 0x3.2p+4L : 0x1p+0L : inexact-ok
+= tanh towardzero ldbl-128ibm 0x3.2p+4L : 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
+= tanh upward ldbl-128ibm 0x3.2p+4L : 0x1p+0L : inexact-ok
+tanh -50
+= tanh downward flt-32 -0x3.2p+4f : -0x1p+0f : inexact-ok
+= tanh tonearest flt-32 -0x3.2p+4f : -0x1p+0f : inexact-ok
+= tanh towardzero flt-32 -0x3.2p+4f : -0xf.fffffp-4f : inexact-ok
+= tanh upward flt-32 -0x3.2p+4f : -0xf.fffffp-4f : inexact-ok
+= tanh downward dbl-64 -0x3.2p+4 : -0x1p+0 : inexact-ok
+= tanh tonearest dbl-64 -0x3.2p+4 : -0x1p+0 : inexact-ok
+= tanh towardzero dbl-64 -0x3.2p+4 : -0xf.ffffffffffff8p-4 : inexact-ok
+= tanh upward dbl-64 -0x3.2p+4 : -0xf.ffffffffffff8p-4 : inexact-ok
+= tanh downward ldbl-96-intel -0x3.2p+4L : -0x1p+0L : inexact-ok
+= tanh tonearest ldbl-96-intel -0x3.2p+4L : -0x1p+0L : inexact-ok
+= tanh towardzero ldbl-96-intel -0x3.2p+4L : -0xf.fffffffffffffffp-4L : inexact-ok
+= tanh upward ldbl-96-intel -0x3.2p+4L : -0xf.fffffffffffffffp-4L : inexact-ok
+= tanh downward ldbl-96-m68k -0x3.2p+4L : -0x1p+0L : inexact-ok
+= tanh tonearest ldbl-96-m68k -0x3.2p+4L : -0x1p+0L : inexact-ok
+= tanh towardzero ldbl-96-m68k -0x3.2p+4L : -0xf.fffffffffffffffp-4L : inexact-ok
+= tanh upward ldbl-96-m68k -0x3.2p+4L : -0xf.fffffffffffffffp-4L : inexact-ok
+= tanh downward ldbl-128 -0x3.2p+4L : -0x1p+0L : inexact-ok
+= tanh tonearest ldbl-128 -0x3.2p+4L : -0x1p+0L : inexact-ok
+= tanh towardzero ldbl-128 -0x3.2p+4L : -0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= tanh upward ldbl-128 -0x3.2p+4L : -0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok
+= tanh downward ldbl-128ibm -0x3.2p+4L : -0x1p+0L : inexact-ok
+= tanh tonearest ldbl-128ibm -0x3.2p+4L : -0x1p+0L : inexact-ok
+= tanh towardzero ldbl-128ibm -0x3.2p+4L : -0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
+= tanh upward ldbl-128ibm -0x3.2p+4L : -0xf.fffffffffffffffffffffffffcp-4L : inexact-ok
tanh 0x1p-57
= tanh downward flt-32 0x8p-60f : 0x7.fffff8p-60f : inexact-ok
= tanh tonearest flt-32 0x8p-60f : 0x8p-60f : inexact-ok
diff --git a/sysdeps/i386/fpu/libm-test-ulps b/sysdeps/i386/fpu/libm-test-ulps
index eddb3dc..dbc8f2f 100644
--- a/sysdeps/i386/fpu/libm-test-ulps
+++ b/sysdeps/i386/fpu/libm-test-ulps
@@ -1924,7 +1924,7 @@ double: 1
float: 1
idouble: 1
ifloat: 1
-ildouble: 5
+ildouble: 7
ldouble: 4
Function: "tanh_towardzero":
diff --git a/sysdeps/ieee754/ldbl-128ibm/s_tanhl.c b/sysdeps/ieee754/ldbl-128ibm/s_tanhl.c
index c63e253..fe396e9 100644
--- a/sysdeps/ieee754/ldbl-128ibm/s_tanhl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/s_tanhl.c
@@ -29,9 +29,9 @@ static char rcsid[] = "$NetBSD: s_tanh.c,v 1.7 1995/05/10 20:48:22 jtc Exp $";
* 2**-57 < x <= 1 : tanh(x) := -----; t = expm1(-2x)
* t + 2
* 2
- * 1 <= x <= 22.0 : tanh(x) := 1- ----- ; t=expm1(2x)
+ * 1 <= x <= 40.0 : tanh(x) := 1- ----- ; t=expm1(2x)
* t + 2
- * 22.0 < x <= INF : tanh(x) := 1.
+ * 40.0 < x <= INF : tanh(x) := 1.
*
* Special cases:
* tanh(NaN) is NaN;
@@ -61,8 +61,8 @@ long double __tanhl(long double x)
else return one/x-one; /* tanh(NaN) = NaN */
}
- /* |x| < 22 */
- if (ix < 0x4036000000000000LL) { /* |x|<22 */
+ /* |x| < 40 */
+ if (ix < 0x4044000000000000LL) { /* |x|<40 */
if (ix == 0)
return x; /* x == +-0 */
if (ix<0x3c60000000000000LL) /* |x|<2**-57 */
@@ -74,7 +74,7 @@ long double __tanhl(long double x)
t = __expm1l(-two*fabsl(x));
z= -t/(t+two);
}
- /* |x| > 22, return +-1 */
+ /* |x| > 40, return +-1 */
} else {
z = one - tiny; /* raised inexact flag */
}