summary refs log tree commit diff
path: root/math
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2015-02-27 17:48:37 +0000
committerJoseph Myers <joseph@codesourcery.com>2015-02-27 17:48:37 +0000
commit2ca725c594e0c186d928dc0823be7d8b5976112c (patch)
tree8f477bda16d5f94bb925301798e653d3064ee75d /math
parentaf96be34825586536ebcfbf5c675e795ddd3c8fa (diff)
downloadglibc-2ca725c594e0c186d928dc0823be7d8b5976112c.tar.gz
glibc-2ca725c594e0c186d928dc0823be7d8b5976112c.tar.xz
glibc-2ca725c594e0c186d928dc0823be7d8b5976112c.zip
Fix ldbl-96, ldbl-128ibm atanhl inaccuracy (bug 18046, bug 18047).
The threshold in ldbl-96 atanhl for when to return the argument,
0x1p-28, is a bit too big, and that in ldbl-128ibm atanhl is much too
big (the relevant condition being x^3/3 being < 0.5ulp of x),
resulting in errors a bit above the limits of those considered
acceptable in glibc in the ldbl-96 case, and in large errors in the
ldbl-128ibm case.  This patch changes those implementations to use
more appropriate thresholds and adds tests around the thresholds for
various formats.

Tested for x86_64, x86 and powerpc.  x86_64 and x86 ulps updated
accordingly.

	[BZ #18046]
	[BZ #18047]
	* sysdeps/ieee754/ldbl-128ibm/e_atanhl.c (__ieee754_atanhl): Use
	0x1p-56L as threshold for just returning the argument.
	* sysdeps/ieee754/ldbl-96/e_atanhl.c (__ieee754_atanhl): Use
	0x1p-32L as threshold for just returning the argument.
	* math/auto-libm-test-in: Add more tests of atanh.
	* math/auto-libm-test-out: Regenerated.
	* sysdeps/i386/fpu/libm-test-ulps: Update.
	* sysdeps/x86_64/fpu/libm-test-ulp: Likewise.
Diffstat (limited to 'math')
-rw-r--r--math/auto-libm-test-in31
-rw-r--r--math/auto-libm-test-out875
2 files changed, 906 insertions, 0 deletions
diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in
index 19d5396d10..5e4b84d31d 100644
--- a/math/auto-libm-test-in
+++ b/math/auto-libm-test-in
@@ -300,7 +300,38 @@ atanh 0.25
 atanh 0x1p-5
 atanh 0x1p-10
 atanh 0x1.2345p-20
+atanh 0x1p-8
+atanh 0x1p-9
+atanh 0x1p-10
+atanh 0x1p-11
+atanh 0x1p-12
+atanh 0x1p-13
+atanh 0x1p-24
+atanh 0x1p-25
+atanh 0x1p-26
+atanh 0x1p-27
+atanh 0x1p-28
+atanh 0x1p-29
+atanh 0x1p-30
+atanh 0x1p-31
+atanh 0x1p-32
+atanh 0x1p-33
+atanh 0x1p-48
+atanh 0x1p-49
+atanh 0x1p-50
+atanh 0x1p-51
+atanh 0x1p-52
+atanh 0x1p-53
+atanh 0x1p-54
+atanh 0x1p-55
+atanh 0x1p-56
+atanh 0x1p-57
+atanh 0x1p-58
+atanh 0x1p-59
+atanh 0x1p-100
 # Bug 16352: underflow exception may be missing.
+atanh 0x1p-500 missing-underflow
+atanh 0x1p-5000 missing-underflow
 atanh min missing-underflow
 atanh -min missing-underflow
 atanh min_subnorm missing-underflow
diff --git a/math/auto-libm-test-out b/math/auto-libm-test-out
index 27322e8541..66bdeb430c 100644
--- a/math/auto-libm-test-out
+++ b/math/auto-libm-test-out
@@ -17635,6 +17635,881 @@ atanh 0x1.2345p-20
 = atanh tonearest ldbl-128ibm 0x1.2345p-20L : 0x1.23450000007daf665297209f1ap-20L : inexact-ok
 = atanh towardzero ldbl-128ibm 0x1.2345p-20L : 0x1.23450000007daf665297209f198p-20L : inexact-ok
 = atanh upward ldbl-128ibm 0x1.2345p-20L : 0x1.23450000007daf665297209f1ap-20L : inexact-ok
+atanh 0x1p-8
+= atanh downward flt-32 0x1p-8f : 0x1.000054p-8f : inexact-ok
+= atanh tonearest flt-32 0x1p-8f : 0x1.000056p-8f : inexact-ok
+= atanh towardzero flt-32 0x1p-8f : 0x1.000054p-8f : inexact-ok
+= atanh upward flt-32 0x1p-8f : 0x1.000056p-8f : inexact-ok
+= atanh downward dbl-64 0x1p-8 : 0x1.000055558888ap-8 : inexact-ok
+= atanh tonearest dbl-64 0x1p-8 : 0x1.000055558888bp-8 : inexact-ok
+= atanh towardzero dbl-64 0x1p-8 : 0x1.000055558888ap-8 : inexact-ok
+= atanh upward dbl-64 0x1p-8 : 0x1.000055558888bp-8 : inexact-ok
+= atanh downward ldbl-96-intel 0x1p-8L : 0x1.000055558888ad1ap-8L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x1p-8L : 0x1.000055558888ad1ap-8L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x1p-8L : 0x1.000055558888ad1ap-8L : inexact-ok
+= atanh upward ldbl-96-intel 0x1p-8L : 0x1.000055558888ad1cp-8L : inexact-ok
+= atanh downward ldbl-96-m68k 0x1p-8L : 0x1.000055558888ad1ap-8L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x1p-8L : 0x1.000055558888ad1ap-8L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x1p-8L : 0x1.000055558888ad1ap-8L : inexact-ok
+= atanh upward ldbl-96-m68k 0x1p-8L : 0x1.000055558888ad1cp-8L : inexact-ok
+= atanh downward ldbl-128 0x1p-8L : 0x1.000055558888ad1aee1ef9340407p-8L : inexact-ok
+= atanh tonearest ldbl-128 0x1p-8L : 0x1.000055558888ad1aee1ef9340408p-8L : inexact-ok
+= atanh towardzero ldbl-128 0x1p-8L : 0x1.000055558888ad1aee1ef9340407p-8L : inexact-ok
+= atanh upward ldbl-128 0x1p-8L : 0x1.000055558888ad1aee1ef9340408p-8L : inexact-ok
+= atanh downward ldbl-128ibm 0x1p-8L : 0x1.000055558888ad1aee1ef93404p-8L : inexact-ok
+= atanh tonearest ldbl-128ibm 0x1p-8L : 0x1.000055558888ad1aee1ef93404p-8L : inexact-ok
+= atanh towardzero ldbl-128ibm 0x1p-8L : 0x1.000055558888ad1aee1ef93404p-8L : inexact-ok
+= atanh upward ldbl-128ibm 0x1p-8L : 0x1.000055558888ad1aee1ef934048p-8L : inexact-ok
+atanh 0x1p-9
+= atanh downward flt-32 0x8p-12f : 0x8.0000ap-12f : inexact-ok
+= atanh tonearest flt-32 0x8p-12f : 0x8.0000bp-12f : inexact-ok
+= atanh towardzero flt-32 0x8p-12f : 0x8.0000ap-12f : inexact-ok
+= atanh upward flt-32 0x8p-12f : 0x8.0000bp-12f : inexact-ok
+= atanh downward dbl-64 0x8p-12 : 0x8.0000aaaac444p-12 : inexact-ok
+= atanh tonearest dbl-64 0x8p-12 : 0x8.0000aaaac4448p-12 : inexact-ok
+= atanh towardzero dbl-64 0x8p-12 : 0x8.0000aaaac444p-12 : inexact-ok
+= atanh upward dbl-64 0x8p-12 : 0x8.0000aaaac4448p-12 : inexact-ok
+= atanh downward ldbl-96-intel 0x8p-12L : 0x8.0000aaaac44448dp-12L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x8p-12L : 0x8.0000aaaac44448dp-12L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x8p-12L : 0x8.0000aaaac44448dp-12L : inexact-ok
+= atanh upward ldbl-96-intel 0x8p-12L : 0x8.0000aaaac44448ep-12L : inexact-ok
+= atanh downward ldbl-96-m68k 0x8p-12L : 0x8.0000aaaac44448dp-12L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x8p-12L : 0x8.0000aaaac44448dp-12L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x8p-12L : 0x8.0000aaaac44448dp-12L : inexact-ok
+= atanh upward ldbl-96-m68k 0x8p-12L : 0x8.0000aaaac44448ep-12L : inexact-ok
+= atanh downward ldbl-128 0x8p-12L : 0x8.0000aaaac44448d68e4c64f4d81p-12L : inexact-ok
+= atanh tonearest ldbl-128 0x8p-12L : 0x8.0000aaaac44448d68e4c64f4d81p-12L : inexact-ok
+= atanh towardzero ldbl-128 0x8p-12L : 0x8.0000aaaac44448d68e4c64f4d81p-12L : inexact-ok
+= atanh upward ldbl-128 0x8p-12L : 0x8.0000aaaac44448d68e4c64f4d818p-12L : inexact-ok
+= atanh downward ldbl-128ibm 0x8p-12L : 0x8.0000aaaac44448d68e4c64f4d8p-12L : inexact-ok
+= atanh tonearest ldbl-128ibm 0x8p-12L : 0x8.0000aaaac44448d68e4c64f4d8p-12L : inexact-ok
+= atanh towardzero ldbl-128ibm 0x8p-12L : 0x8.0000aaaac44448d68e4c64f4d8p-12L : inexact-ok
+= atanh upward ldbl-128ibm 0x8p-12L : 0x8.0000aaaac44448d68e4c64f4dcp-12L : inexact-ok
+atanh 0x1p-10
+= atanh downward flt-32 0x4p-12f : 0x4.00001p-12f : inexact-ok
+= atanh tonearest flt-32 0x4p-12f : 0x4.000018p-12f : inexact-ok
+= atanh towardzero flt-32 0x4p-12f : 0x4.00001p-12f : inexact-ok
+= atanh upward flt-32 0x4p-12f : 0x4.000018p-12f : inexact-ok
+= atanh downward dbl-64 0x4p-12 : 0x4.000015555622p-12 : inexact-ok
+= atanh tonearest dbl-64 0x4p-12 : 0x4.0000155556224p-12 : inexact-ok
+= atanh towardzero dbl-64 0x4p-12 : 0x4.000015555622p-12 : inexact-ok
+= atanh upward dbl-64 0x4p-12 : 0x4.0000155556224p-12 : inexact-ok
+= atanh downward ldbl-96-intel 0x4p-12L : 0x4.0000155556222228p-12L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x4p-12L : 0x4.0000155556222228p-12L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x4p-12L : 0x4.0000155556222228p-12L : inexact-ok
+= atanh upward ldbl-96-intel 0x4p-12L : 0x4.000015555622223p-12L : inexact-ok
+= atanh downward ldbl-96-m68k 0x4p-12L : 0x4.0000155556222228p-12L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x4p-12L : 0x4.0000155556222228p-12L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x4p-12L : 0x4.0000155556222228p-12L : inexact-ok
+= atanh upward ldbl-96-m68k 0x4p-12L : 0x4.000015555622223p-12L : inexact-ok
+= atanh downward ldbl-128 0x4p-12L : 0x4.000015555622222b46b4dd0dd6acp-12L : inexact-ok
+= atanh tonearest ldbl-128 0x4p-12L : 0x4.000015555622222b46b4dd0dd6bp-12L : inexact-ok
+= atanh towardzero ldbl-128 0x4p-12L : 0x4.000015555622222b46b4dd0dd6acp-12L : inexact-ok
+= atanh upward ldbl-128 0x4p-12L : 0x4.000015555622222b46b4dd0dd6bp-12L : inexact-ok
+= atanh downward ldbl-128ibm 0x4p-12L : 0x4.000015555622222b46b4dd0dd6p-12L : inexact-ok
+= atanh tonearest ldbl-128ibm 0x4p-12L : 0x4.000015555622222b46b4dd0dd6p-12L : inexact-ok
+= atanh towardzero ldbl-128ibm 0x4p-12L : 0x4.000015555622222b46b4dd0dd6p-12L : inexact-ok
+= atanh upward ldbl-128ibm 0x4p-12L : 0x4.000015555622222b46b4dd0dd8p-12L : inexact-ok
+atanh 0x1p-11
+= atanh downward flt-32 0x2p-12f : 0x2p-12f : inexact-ok
+= atanh tonearest flt-32 0x2p-12f : 0x2.000004p-12f : inexact-ok
+= atanh towardzero flt-32 0x2p-12f : 0x2p-12f : inexact-ok
+= atanh upward flt-32 0x2p-12f : 0x2.000004p-12f : inexact-ok
+= atanh downward dbl-64 0x2p-12 : 0x2.000002aaaab1p-12 : inexact-ok
+= atanh tonearest dbl-64 0x2p-12 : 0x2.000002aaaab12p-12 : inexact-ok
+= atanh towardzero dbl-64 0x2p-12 : 0x2.000002aaaab1p-12 : inexact-ok
+= atanh upward dbl-64 0x2p-12 : 0x2.000002aaaab12p-12 : inexact-ok
+= atanh downward ldbl-96-intel 0x2p-12L : 0x2.000002aaaab1111p-12L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x2p-12L : 0x2.000002aaaab1111p-12L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x2p-12L : 0x2.000002aaaab1111p-12L : inexact-ok
+= atanh upward ldbl-96-intel 0x2p-12L : 0x2.000002aaaab11114p-12L : inexact-ok
+= atanh downward ldbl-96-m68k 0x2p-12L : 0x2.000002aaaab1111p-12L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x2p-12L : 0x2.000002aaaab1111p-12L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x2p-12L : 0x2.000002aaaab1111p-12L : inexact-ok
+= atanh upward ldbl-96-m68k 0x2p-12L : 0x2.000002aaaab11114p-12L : inexact-ok
+= atanh downward ldbl-128 0x2p-12L : 0x2.000002aaaab11111235a35dc3dc4p-12L : inexact-ok
+= atanh tonearest ldbl-128 0x2p-12L : 0x2.000002aaaab11111235a35dc3dc4p-12L : inexact-ok
+= atanh towardzero ldbl-128 0x2p-12L : 0x2.000002aaaab11111235a35dc3dc4p-12L : inexact-ok
+= atanh upward ldbl-128 0x2p-12L : 0x2.000002aaaab11111235a35dc3dc6p-12L : inexact-ok
+= atanh downward ldbl-128ibm 0x2p-12L : 0x2.000002aaaab11111235a35dc3dp-12L : inexact-ok
+= atanh tonearest ldbl-128ibm 0x2p-12L : 0x2.000002aaaab11111235a35dc3ep-12L : inexact-ok
+= atanh towardzero ldbl-128ibm 0x2p-12L : 0x2.000002aaaab11111235a35dc3dp-12L : inexact-ok
+= atanh upward ldbl-128ibm 0x2p-12L : 0x2.000002aaaab11111235a35dc3ep-12L : inexact-ok
+atanh 0x1p-12
+= atanh downward flt-32 0x1p-12f : 0x1p-12f : inexact-ok
+= atanh tonearest flt-32 0x1p-12f : 0x1p-12f : inexact-ok
+= atanh towardzero flt-32 0x1p-12f : 0x1p-12f : inexact-ok
+= atanh upward flt-32 0x1p-12f : 0x1.000002p-12f : inexact-ok
+= atanh downward dbl-64 0x1p-12 : 0x1.0000005555558p-12 : inexact-ok
+= atanh tonearest dbl-64 0x1p-12 : 0x1.0000005555559p-12 : inexact-ok
+= atanh towardzero dbl-64 0x1p-12 : 0x1.0000005555558p-12 : inexact-ok
+= atanh upward dbl-64 0x1p-12 : 0x1.0000005555559p-12 : inexact-ok
+= atanh downward ldbl-96-intel 0x1p-12L : 0x1.0000005555558888p-12L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x1p-12L : 0x1.0000005555558888p-12L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x1p-12L : 0x1.0000005555558888p-12L : inexact-ok
+= atanh upward ldbl-96-intel 0x1p-12L : 0x1.000000555555888ap-12L : inexact-ok
+= atanh downward ldbl-96-m68k 0x1p-12L : 0x1.0000005555558888p-12L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x1p-12L : 0x1.0000005555558888p-12L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x1p-12L : 0x1.0000005555558888p-12L : inexact-ok
+= atanh upward ldbl-96-m68k 0x1p-12L : 0x1.000000555555888ap-12L : inexact-ok
+= atanh downward ldbl-128 0x1p-12L : 0x1.000000555555888888ad1ad1c98cp-12L : inexact-ok
+= atanh tonearest ldbl-128 0x1p-12L : 0x1.000000555555888888ad1ad1c98dp-12L : inexact-ok
+= atanh towardzero ldbl-128 0x1p-12L : 0x1.000000555555888888ad1ad1c98cp-12L : inexact-ok
+= atanh upward ldbl-128 0x1p-12L : 0x1.000000555555888888ad1ad1c98dp-12L : inexact-ok
+= atanh downward ldbl-128ibm 0x1p-12L : 0x1.000000555555888888ad1ad1c98p-12L : inexact-ok
+= atanh tonearest ldbl-128ibm 0x1p-12L : 0x1.000000555555888888ad1ad1c98p-12L : inexact-ok
+= atanh towardzero ldbl-128ibm 0x1p-12L : 0x1.000000555555888888ad1ad1c98p-12L : inexact-ok
+= atanh upward ldbl-128ibm 0x1p-12L : 0x1.000000555555888888ad1ad1cap-12L : inexact-ok
+atanh 0x1p-13
+= atanh downward flt-32 0x8p-16f : 0x8p-16f : inexact-ok
+= atanh tonearest flt-32 0x8p-16f : 0x8p-16f : inexact-ok
+= atanh towardzero flt-32 0x8p-16f : 0x8p-16f : inexact-ok
+= atanh upward flt-32 0x8p-16f : 0x8.00001p-16f : inexact-ok
+= atanh downward dbl-64 0x8p-16 : 0x8.000000aaaaaa8p-16 : inexact-ok
+= atanh tonearest dbl-64 0x8p-16 : 0x8.000000aaaaabp-16 : inexact-ok
+= atanh towardzero dbl-64 0x8p-16 : 0x8.000000aaaaaa8p-16 : inexact-ok
+= atanh upward dbl-64 0x8p-16 : 0x8.000000aaaaabp-16 : inexact-ok
+= atanh downward ldbl-96-intel 0x8p-16L : 0x8.000000aaaaaac44p-16L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x8p-16L : 0x8.000000aaaaaac44p-16L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x8p-16L : 0x8.000000aaaaaac44p-16L : inexact-ok
+= atanh upward ldbl-96-intel 0x8p-16L : 0x8.000000aaaaaac45p-16L : inexact-ok
+= atanh downward ldbl-96-m68k 0x8p-16L : 0x8.000000aaaaaac44p-16L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x8p-16L : 0x8.000000aaaaaac44p-16L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x8p-16L : 0x8.000000aaaaaac44p-16L : inexact-ok
+= atanh upward ldbl-96-m68k 0x8p-16L : 0x8.000000aaaaaac45p-16L : inexact-ok
+= atanh downward ldbl-128 0x8p-16L : 0x8.000000aaaaaac4444448d68d69b8p-16L : inexact-ok
+= atanh tonearest ldbl-128 0x8p-16L : 0x8.000000aaaaaac4444448d68d69b8p-16L : inexact-ok
+= atanh towardzero ldbl-128 0x8p-16L : 0x8.000000aaaaaac4444448d68d69b8p-16L : inexact-ok
+= atanh upward ldbl-128 0x8p-16L : 0x8.000000aaaaaac4444448d68d69cp-16L : inexact-ok
+= atanh downward ldbl-128ibm 0x8p-16L : 0x8.000000aaaaaac4444448d68d68p-16L : inexact-ok
+= atanh tonearest ldbl-128ibm 0x8p-16L : 0x8.000000aaaaaac4444448d68d68p-16L : inexact-ok
+= atanh towardzero ldbl-128ibm 0x8p-16L : 0x8.000000aaaaaac4444448d68d68p-16L : inexact-ok
+= atanh upward ldbl-128ibm 0x8p-16L : 0x8.000000aaaaaac4444448d68d6cp-16L : inexact-ok
+atanh 0x1p-24
+= atanh downward flt-32 0x1p-24f : 0x1p-24f : inexact-ok
+= atanh tonearest flt-32 0x1p-24f : 0x1p-24f : inexact-ok
+= atanh towardzero flt-32 0x1p-24f : 0x1p-24f : inexact-ok
+= atanh upward flt-32 0x1p-24f : 0x1.000002p-24f : inexact-ok
+= atanh downward dbl-64 0x1p-24 : 0x1.0000000000005p-24 : inexact-ok
+= atanh tonearest dbl-64 0x1p-24 : 0x1.0000000000005p-24 : inexact-ok
+= atanh towardzero dbl-64 0x1p-24 : 0x1.0000000000005p-24 : inexact-ok
+= atanh upward dbl-64 0x1p-24 : 0x1.0000000000006p-24 : inexact-ok
+= atanh downward ldbl-96-intel 0x1p-24L : 0x1.0000000000005554p-24L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x1p-24L : 0x1.0000000000005556p-24L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x1p-24L : 0x1.0000000000005554p-24L : inexact-ok
+= atanh upward ldbl-96-intel 0x1p-24L : 0x1.0000000000005556p-24L : inexact-ok
+= atanh downward ldbl-96-m68k 0x1p-24L : 0x1.0000000000005554p-24L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x1p-24L : 0x1.0000000000005556p-24L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x1p-24L : 0x1.0000000000005554p-24L : inexact-ok
+= atanh upward ldbl-96-m68k 0x1p-24L : 0x1.0000000000005556p-24L : inexact-ok
+= atanh downward ldbl-128 0x1p-24L : 0x1.0000000000005555555555558888p-24L : inexact-ok
+= atanh tonearest ldbl-128 0x1p-24L : 0x1.0000000000005555555555558889p-24L : inexact-ok
+= atanh towardzero ldbl-128 0x1p-24L : 0x1.0000000000005555555555558888p-24L : inexact-ok
+= atanh upward ldbl-128 0x1p-24L : 0x1.0000000000005555555555558889p-24L : inexact-ok
+= atanh downward ldbl-128ibm 0x1p-24L : 0x1.000000000000555555555555888p-24L : inexact-ok
+= atanh tonearest ldbl-128ibm 0x1p-24L : 0x1.000000000000555555555555888p-24L : inexact-ok
+= atanh towardzero ldbl-128ibm 0x1p-24L : 0x1.000000000000555555555555888p-24L : inexact-ok
+= atanh upward ldbl-128ibm 0x1p-24L : 0x1.00000000000055555555555589p-24L : inexact-ok
+atanh 0x1p-25
+= atanh downward flt-32 0x8p-28f : 0x8p-28f : inexact-ok
+= atanh tonearest flt-32 0x8p-28f : 0x8p-28f : inexact-ok
+= atanh towardzero flt-32 0x8p-28f : 0x8p-28f : inexact-ok
+= atanh upward flt-32 0x8p-28f : 0x8.00001p-28f : inexact-ok
+= atanh downward dbl-64 0x8p-28 : 0x8.0000000000008p-28 : inexact-ok
+= atanh tonearest dbl-64 0x8p-28 : 0x8.0000000000008p-28 : inexact-ok
+= atanh towardzero dbl-64 0x8p-28 : 0x8.0000000000008p-28 : inexact-ok
+= atanh upward dbl-64 0x8p-28 : 0x8.000000000001p-28 : inexact-ok
+= atanh downward ldbl-96-intel 0x8p-28L : 0x8.000000000000aaap-28L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x8p-28L : 0x8.000000000000aabp-28L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x8p-28L : 0x8.000000000000aaap-28L : inexact-ok
+= atanh upward ldbl-96-intel 0x8p-28L : 0x8.000000000000aabp-28L : inexact-ok
+= atanh downward ldbl-96-m68k 0x8p-28L : 0x8.000000000000aaap-28L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x8p-28L : 0x8.000000000000aabp-28L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x8p-28L : 0x8.000000000000aaap-28L : inexact-ok
+= atanh upward ldbl-96-m68k 0x8p-28L : 0x8.000000000000aabp-28L : inexact-ok
+= atanh downward ldbl-128 0x8p-28L : 0x8.000000000000aaaaaaaaaaaac44p-28L : inexact-ok
+= atanh tonearest ldbl-128 0x8p-28L : 0x8.000000000000aaaaaaaaaaaac448p-28L : inexact-ok
+= atanh towardzero ldbl-128 0x8p-28L : 0x8.000000000000aaaaaaaaaaaac44p-28L : inexact-ok
+= atanh upward ldbl-128 0x8p-28L : 0x8.000000000000aaaaaaaaaaaac448p-28L : inexact-ok
+= atanh downward ldbl-128ibm 0x8p-28L : 0x8.000000000000aaaaaaaaaaaac4p-28L : inexact-ok
+= atanh tonearest ldbl-128ibm 0x8p-28L : 0x8.000000000000aaaaaaaaaaaac4p-28L : inexact-ok
+= atanh towardzero ldbl-128ibm 0x8p-28L : 0x8.000000000000aaaaaaaaaaaac4p-28L : inexact-ok
+= atanh upward ldbl-128ibm 0x8p-28L : 0x8.000000000000aaaaaaaaaaaac8p-28L : inexact-ok
+atanh 0x1p-26
+= atanh downward flt-32 0x4p-28f : 0x4p-28f : inexact-ok
+= atanh tonearest flt-32 0x4p-28f : 0x4p-28f : inexact-ok
+= atanh towardzero flt-32 0x4p-28f : 0x4p-28f : inexact-ok
+= atanh upward flt-32 0x4p-28f : 0x4.000008p-28f : inexact-ok
+= atanh downward dbl-64 0x4p-28 : 0x4p-28 : inexact-ok
+= atanh tonearest dbl-64 0x4p-28 : 0x4p-28 : inexact-ok
+= atanh towardzero dbl-64 0x4p-28 : 0x4p-28 : inexact-ok
+= atanh upward dbl-64 0x4p-28 : 0x4.0000000000004p-28 : inexact-ok
+= atanh downward ldbl-96-intel 0x4p-28L : 0x4.000000000000155p-28L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x4p-28L : 0x4.0000000000001558p-28L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x4p-28L : 0x4.000000000000155p-28L : inexact-ok
+= atanh upward ldbl-96-intel 0x4p-28L : 0x4.0000000000001558p-28L : inexact-ok
+= atanh downward ldbl-96-m68k 0x4p-28L : 0x4.000000000000155p-28L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x4p-28L : 0x4.0000000000001558p-28L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x4p-28L : 0x4.000000000000155p-28L : inexact-ok
+= atanh upward ldbl-96-m68k 0x4p-28L : 0x4.0000000000001558p-28L : inexact-ok
+= atanh downward ldbl-128 0x4p-28L : 0x4.000000000000155555555555562p-28L : inexact-ok
+= atanh tonearest ldbl-128 0x4p-28L : 0x4.0000000000001555555555555624p-28L : inexact-ok
+= atanh towardzero ldbl-128 0x4p-28L : 0x4.000000000000155555555555562p-28L : inexact-ok
+= atanh upward ldbl-128 0x4p-28L : 0x4.0000000000001555555555555624p-28L : inexact-ok
+= atanh downward ldbl-128ibm 0x4p-28L : 0x4.00000000000015555555555556p-28L : inexact-ok
+= atanh tonearest ldbl-128ibm 0x4p-28L : 0x4.00000000000015555555555556p-28L : inexact-ok
+= atanh towardzero ldbl-128ibm 0x4p-28L : 0x4.00000000000015555555555556p-28L : inexact-ok
+= atanh upward ldbl-128ibm 0x4p-28L : 0x4.00000000000015555555555558p-28L : inexact-ok
+atanh 0x1p-27
+= atanh downward flt-32 0x2p-28f : 0x2p-28f : inexact-ok
+= atanh tonearest flt-32 0x2p-28f : 0x2p-28f : inexact-ok
+= atanh towardzero flt-32 0x2p-28f : 0x2p-28f : inexact-ok
+= atanh upward flt-32 0x2p-28f : 0x2.000004p-28f : inexact-ok
+= atanh downward dbl-64 0x2p-28 : 0x2p-28 : inexact-ok
+= atanh tonearest dbl-64 0x2p-28 : 0x2p-28 : inexact-ok
+= atanh towardzero dbl-64 0x2p-28 : 0x2p-28 : inexact-ok
+= atanh upward dbl-64 0x2p-28 : 0x2.0000000000002p-28 : inexact-ok
+= atanh downward ldbl-96-intel 0x2p-28L : 0x2.00000000000002a8p-28L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x2p-28L : 0x2.00000000000002acp-28L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x2p-28L : 0x2.00000000000002a8p-28L : inexact-ok
+= atanh upward ldbl-96-intel 0x2p-28L : 0x2.00000000000002acp-28L : inexact-ok
+= atanh downward ldbl-96-m68k 0x2p-28L : 0x2.00000000000002a8p-28L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x2p-28L : 0x2.00000000000002acp-28L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x2p-28L : 0x2.00000000000002a8p-28L : inexact-ok
+= atanh upward ldbl-96-m68k 0x2p-28L : 0x2.00000000000002acp-28L : inexact-ok
+= atanh downward ldbl-128 0x2p-28L : 0x2.00000000000002aaaaaaaaaaaabp-28L : inexact-ok
+= atanh tonearest ldbl-128 0x2p-28L : 0x2.00000000000002aaaaaaaaaaaab2p-28L : inexact-ok
+= atanh towardzero ldbl-128 0x2p-28L : 0x2.00000000000002aaaaaaaaaaaabp-28L : inexact-ok
+= atanh upward ldbl-128 0x2p-28L : 0x2.00000000000002aaaaaaaaaaaab2p-28L : inexact-ok
+= atanh downward ldbl-128ibm 0x2p-28L : 0x2.00000000000002aaaaaaaaaaaap-28L : inexact-ok
+= atanh tonearest ldbl-128ibm 0x2p-28L : 0x2.00000000000002aaaaaaaaaaabp-28L : inexact-ok
+= atanh towardzero ldbl-128ibm 0x2p-28L : 0x2.00000000000002aaaaaaaaaaaap-28L : inexact-ok
+= atanh upward ldbl-128ibm 0x2p-28L : 0x2.00000000000002aaaaaaaaaaabp-28L : inexact-ok
+atanh 0x1p-28
+= atanh downward flt-32 0x1p-28f : 0x1p-28f : inexact-ok
+= atanh tonearest flt-32 0x1p-28f : 0x1p-28f : inexact-ok
+= atanh towardzero flt-32 0x1p-28f : 0x1p-28f : inexact-ok
+= atanh upward flt-32 0x1p-28f : 0x1.000002p-28f : inexact-ok
+= atanh downward dbl-64 0x1p-28 : 0x1p-28 : inexact-ok
+= atanh tonearest dbl-64 0x1p-28 : 0x1p-28 : inexact-ok
+= atanh towardzero dbl-64 0x1p-28 : 0x1p-28 : inexact-ok
+= atanh upward dbl-64 0x1p-28 : 0x1.0000000000001p-28 : inexact-ok
+= atanh downward ldbl-96-intel 0x1p-28L : 0x1.0000000000000054p-28L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x1p-28L : 0x1.0000000000000056p-28L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x1p-28L : 0x1.0000000000000054p-28L : inexact-ok
+= atanh upward ldbl-96-intel 0x1p-28L : 0x1.0000000000000056p-28L : inexact-ok
+= atanh downward ldbl-96-m68k 0x1p-28L : 0x1.0000000000000054p-28L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x1p-28L : 0x1.0000000000000056p-28L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x1p-28L : 0x1.0000000000000054p-28L : inexact-ok
+= atanh upward ldbl-96-m68k 0x1p-28L : 0x1.0000000000000056p-28L : inexact-ok
+= atanh downward ldbl-128 0x1p-28L : 0x1.0000000000000055555555555555p-28L : inexact-ok
+= atanh tonearest ldbl-128 0x1p-28L : 0x1.0000000000000055555555555556p-28L : inexact-ok
+= atanh towardzero ldbl-128 0x1p-28L : 0x1.0000000000000055555555555555p-28L : inexact-ok
+= atanh upward ldbl-128 0x1p-28L : 0x1.0000000000000055555555555556p-28L : inexact-ok
+= atanh downward ldbl-128ibm 0x1p-28L : 0x1.00000000000000555555555555p-28L : inexact-ok
+= atanh tonearest ldbl-128ibm 0x1p-28L : 0x1.000000000000005555555555558p-28L : inexact-ok
+= atanh towardzero ldbl-128ibm 0x1p-28L : 0x1.00000000000000555555555555p-28L : inexact-ok
+= atanh upward ldbl-128ibm 0x1p-28L : 0x1.000000000000005555555555558p-28L : inexact-ok
+atanh 0x1p-29
+= atanh downward flt-32 0x8p-32f : 0x8p-32f : inexact-ok
+= atanh tonearest flt-32 0x8p-32f : 0x8p-32f : inexact-ok
+= atanh towardzero flt-32 0x8p-32f : 0x8p-32f : inexact-ok
+= atanh upward flt-32 0x8p-32f : 0x8.00001p-32f : inexact-ok
+= atanh downward dbl-64 0x8p-32 : 0x8p-32 : inexact-ok
+= atanh tonearest dbl-64 0x8p-32 : 0x8p-32 : inexact-ok
+= atanh towardzero dbl-64 0x8p-32 : 0x8p-32 : inexact-ok
+= atanh upward dbl-64 0x8p-32 : 0x8.0000000000008p-32 : inexact-ok
+= atanh downward ldbl-96-intel 0x8p-32L : 0x8.00000000000000ap-32L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x8p-32L : 0x8.00000000000000bp-32L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x8p-32L : 0x8.00000000000000ap-32L : inexact-ok
+= atanh upward ldbl-96-intel 0x8p-32L : 0x8.00000000000000bp-32L : inexact-ok
+= atanh downward ldbl-96-m68k 0x8p-32L : 0x8.00000000000000ap-32L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x8p-32L : 0x8.00000000000000bp-32L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x8p-32L : 0x8.00000000000000ap-32L : inexact-ok
+= atanh upward ldbl-96-m68k 0x8p-32L : 0x8.00000000000000bp-32L : inexact-ok
+= atanh downward ldbl-128 0x8p-32L : 0x8.00000000000000aaaaaaaaaaaaa8p-32L : inexact-ok
+= atanh tonearest ldbl-128 0x8p-32L : 0x8.00000000000000aaaaaaaaaaaaa8p-32L : inexact-ok
+= atanh towardzero ldbl-128 0x8p-32L : 0x8.00000000000000aaaaaaaaaaaaa8p-32L : inexact-ok
+= atanh upward ldbl-128 0x8p-32L : 0x8.00000000000000aaaaaaaaaaaabp-32L : inexact-ok
+= atanh downward ldbl-128ibm 0x8p-32L : 0x8.00000000000000aaaaaaaaaaa8p-32L : inexact-ok
+= atanh tonearest ldbl-128ibm 0x8p-32L : 0x8.00000000000000aaaaaaaaaaacp-32L : inexact-ok
+= atanh towardzero ldbl-128ibm 0x8p-32L : 0x8.00000000000000aaaaaaaaaaa8p-32L : inexact-ok
+= atanh upward ldbl-128ibm 0x8p-32L : 0x8.00000000000000aaaaaaaaaaacp-32L : inexact-ok
+atanh 0x1p-30
+= atanh downward flt-32 0x4p-32f : 0x4p-32f : inexact-ok
+= atanh tonearest flt-32 0x4p-32f : 0x4p-32f : inexact-ok
+= atanh towardzero flt-32 0x4p-32f : 0x4p-32f : inexact-ok
+= atanh upward flt-32 0x4p-32f : 0x4.000008p-32f : inexact-ok
+= atanh downward dbl-64 0x4p-32 : 0x4p-32 : inexact-ok
+= atanh tonearest dbl-64 0x4p-32 : 0x4p-32 : inexact-ok
+= atanh towardzero dbl-64 0x4p-32 : 0x4p-32 : inexact-ok
+= atanh upward dbl-64 0x4p-32 : 0x4.0000000000004p-32 : inexact-ok
+= atanh downward ldbl-96-intel 0x4p-32L : 0x4.000000000000001p-32L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x4p-32L : 0x4.0000000000000018p-32L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x4p-32L : 0x4.000000000000001p-32L : inexact-ok
+= atanh upward ldbl-96-intel 0x4p-32L : 0x4.0000000000000018p-32L : inexact-ok
+= atanh downward ldbl-96-m68k 0x4p-32L : 0x4.000000000000001p-32L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x4p-32L : 0x4.0000000000000018p-32L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x4p-32L : 0x4.000000000000001p-32L : inexact-ok
+= atanh upward ldbl-96-m68k 0x4p-32L : 0x4.0000000000000018p-32L : inexact-ok
+= atanh downward ldbl-128 0x4p-32L : 0x4.0000000000000015555555555554p-32L : inexact-ok
+= atanh tonearest ldbl-128 0x4p-32L : 0x4.0000000000000015555555555554p-32L : inexact-ok
+= atanh towardzero ldbl-128 0x4p-32L : 0x4.0000000000000015555555555554p-32L : inexact-ok
+= atanh upward ldbl-128 0x4p-32L : 0x4.0000000000000015555555555558p-32L : inexact-ok
+= atanh downward ldbl-128ibm 0x4p-32L : 0x4.00000000000000155555555554p-32L : inexact-ok
+= atanh tonearest ldbl-128ibm 0x4p-32L : 0x4.00000000000000155555555556p-32L : inexact-ok
+= atanh towardzero ldbl-128ibm 0x4p-32L : 0x4.00000000000000155555555554p-32L : inexact-ok
+= atanh upward ldbl-128ibm 0x4p-32L : 0x4.00000000000000155555555556p-32L : inexact-ok
+atanh 0x1p-31
+= atanh downward flt-32 0x2p-32f : 0x2p-32f : inexact-ok
+= atanh tonearest flt-32 0x2p-32f : 0x2p-32f : inexact-ok
+= atanh towardzero flt-32 0x2p-32f : 0x2p-32f : inexact-ok
+= atanh upward flt-32 0x2p-32f : 0x2.000004p-32f : inexact-ok
+= atanh downward dbl-64 0x2p-32 : 0x2p-32 : inexact-ok
+= atanh tonearest dbl-64 0x2p-32 : 0x2p-32 : inexact-ok
+= atanh towardzero dbl-64 0x2p-32 : 0x2p-32 : inexact-ok
+= atanh upward dbl-64 0x2p-32 : 0x2.0000000000002p-32 : inexact-ok
+= atanh downward ldbl-96-intel 0x2p-32L : 0x2p-32L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x2p-32L : 0x2.0000000000000004p-32L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x2p-32L : 0x2p-32L : inexact-ok
+= atanh upward ldbl-96-intel 0x2p-32L : 0x2.0000000000000004p-32L : inexact-ok
+= atanh downward ldbl-96-m68k 0x2p-32L : 0x2p-32L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x2p-32L : 0x2.0000000000000004p-32L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x2p-32L : 0x2p-32L : inexact-ok
+= atanh upward ldbl-96-m68k 0x2p-32L : 0x2.0000000000000004p-32L : inexact-ok
+= atanh downward ldbl-128 0x2p-32L : 0x2.0000000000000002aaaaaaaaaaaap-32L : inexact-ok
+= atanh tonearest ldbl-128 0x2p-32L : 0x2.0000000000000002aaaaaaaaaaaap-32L : inexact-ok
+= atanh towardzero ldbl-128 0x2p-32L : 0x2.0000000000000002aaaaaaaaaaaap-32L : inexact-ok
+= atanh upward ldbl-128 0x2p-32L : 0x2.0000000000000002aaaaaaaaaaacp-32L : inexact-ok
+= atanh downward ldbl-128ibm 0x2p-32L : 0x2.0000000000000002aaaaaaaaaap-32L : inexact-ok
+= atanh tonearest ldbl-128ibm 0x2p-32L : 0x2.0000000000000002aaaaaaaaabp-32L : inexact-ok
+= atanh towardzero ldbl-128ibm 0x2p-32L : 0x2.0000000000000002aaaaaaaaaap-32L : inexact-ok
+= atanh upward ldbl-128ibm 0x2p-32L : 0x2.0000000000000002aaaaaaaaabp-32L : inexact-ok
+atanh 0x1p-32
+= atanh downward flt-32 0x1p-32f : 0x1p-32f : inexact-ok
+= atanh tonearest flt-32 0x1p-32f : 0x1p-32f : inexact-ok
+= atanh towardzero flt-32 0x1p-32f : 0x1p-32f : inexact-ok
+= atanh upward flt-32 0x1p-32f : 0x1.000002p-32f : inexact-ok
+= atanh downward dbl-64 0x1p-32 : 0x1p-32 : inexact-ok
+= atanh tonearest dbl-64 0x1p-32 : 0x1p-32 : inexact-ok
+= atanh towardzero dbl-64 0x1p-32 : 0x1p-32 : inexact-ok
+= atanh upward dbl-64 0x1p-32 : 0x1.0000000000001p-32 : inexact-ok
+= atanh downward ldbl-96-intel 0x1p-32L : 0x1p-32L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x1p-32L : 0x1p-32L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x1p-32L : 0x1p-32L : inexact-ok
+= atanh upward ldbl-96-intel 0x1p-32L : 0x1.0000000000000002p-32L : inexact-ok
+= atanh downward ldbl-96-m68k 0x1p-32L : 0x1p-32L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x1p-32L : 0x1p-32L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x1p-32L : 0x1p-32L : inexact-ok
+= atanh upward ldbl-96-m68k 0x1p-32L : 0x1.0000000000000002p-32L : inexact-ok
+= atanh downward ldbl-128 0x1p-32L : 0x1.0000000000000000555555555555p-32L : inexact-ok
+= atanh tonearest ldbl-128 0x1p-32L : 0x1.0000000000000000555555555555p-32L : inexact-ok
+= atanh towardzero ldbl-128 0x1p-32L : 0x1.0000000000000000555555555555p-32L : inexact-ok
+= atanh upward ldbl-128 0x1p-32L : 0x1.0000000000000000555555555556p-32L : inexact-ok
+= atanh downward ldbl-128ibm 0x1p-32L : 0x1.00000000000000005555555555p-32L : inexact-ok
+= atanh tonearest ldbl-128ibm 0x1p-32L : 0x1.000000000000000055555555558p-32L : inexact-ok
+= atanh towardzero ldbl-128ibm 0x1p-32L : 0x1.00000000000000005555555555p-32L : inexact-ok
+= atanh upward ldbl-128ibm 0x1p-32L : 0x1.000000000000000055555555558p-32L : inexact-ok
+atanh 0x1p-33
+= atanh downward flt-32 0x8p-36f : 0x8p-36f : inexact-ok
+= atanh tonearest flt-32 0x8p-36f : 0x8p-36f : inexact-ok
+= atanh towardzero flt-32 0x8p-36f : 0x8p-36f : inexact-ok
+= atanh upward flt-32 0x8p-36f : 0x8.00001p-36f : inexact-ok
+= atanh downward dbl-64 0x8p-36 : 0x8p-36 : inexact-ok
+= atanh tonearest dbl-64 0x8p-36 : 0x8p-36 : inexact-ok
+= atanh towardzero dbl-64 0x8p-36 : 0x8p-36 : inexact-ok
+= atanh upward dbl-64 0x8p-36 : 0x8.0000000000008p-36 : inexact-ok
+= atanh downward ldbl-96-intel 0x8p-36L : 0x8p-36L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x8p-36L : 0x8p-36L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x8p-36L : 0x8p-36L : inexact-ok
+= atanh upward ldbl-96-intel 0x8p-36L : 0x8.000000000000001p-36L : inexact-ok
+= atanh downward ldbl-96-m68k 0x8p-36L : 0x8p-36L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x8p-36L : 0x8p-36L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x8p-36L : 0x8p-36L : inexact-ok
+= atanh upward ldbl-96-m68k 0x8p-36L : 0x8.000000000000001p-36L : inexact-ok
+= atanh downward ldbl-128 0x8p-36L : 0x8.0000000000000000aaaaaaaaaaa8p-36L : inexact-ok
+= atanh tonearest ldbl-128 0x8p-36L : 0x8.0000000000000000aaaaaaaaaaa8p-36L : inexact-ok
+= atanh towardzero ldbl-128 0x8p-36L : 0x8.0000000000000000aaaaaaaaaaa8p-36L : inexact-ok
+= atanh upward ldbl-128 0x8p-36L : 0x8.0000000000000000aaaaaaaaaabp-36L : inexact-ok
+= atanh downward ldbl-128ibm 0x8p-36L : 0x8.0000000000000000aaaaaaaaa8p-36L : inexact-ok
+= atanh tonearest ldbl-128ibm 0x8p-36L : 0x8.0000000000000000aaaaaaaaacp-36L : inexact-ok
+= atanh towardzero ldbl-128ibm 0x8p-36L : 0x8.0000000000000000aaaaaaaaa8p-36L : inexact-ok
+= atanh upward ldbl-128ibm 0x8p-36L : 0x8.0000000000000000aaaaaaaaacp-36L : inexact-ok
+atanh 0x1p-48
+= atanh downward flt-32 0x1p-48f : 0x1p-48f : inexact-ok
+= atanh tonearest flt-32 0x1p-48f : 0x1p-48f : inexact-ok
+= atanh towardzero flt-32 0x1p-48f : 0x1p-48f : inexact-ok
+= atanh upward flt-32 0x1p-48f : 0x1.000002p-48f : inexact-ok
+= atanh downward dbl-64 0x1p-48 : 0x1p-48 : inexact-ok
+= atanh tonearest dbl-64 0x1p-48 : 0x1p-48 : inexact-ok
+= atanh towardzero dbl-64 0x1p-48 : 0x1p-48 : inexact-ok
+= atanh upward dbl-64 0x1p-48 : 0x1.0000000000001p-48 : inexact-ok
+= atanh downward ldbl-96-intel 0x1p-48L : 0x1p-48L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x1p-48L : 0x1p-48L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x1p-48L : 0x1p-48L : inexact-ok
+= atanh upward ldbl-96-intel 0x1p-48L : 0x1.0000000000000002p-48L : inexact-ok
+= atanh downward ldbl-96-m68k 0x1p-48L : 0x1p-48L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x1p-48L : 0x1p-48L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x1p-48L : 0x1p-48L : inexact-ok
+= atanh upward ldbl-96-m68k 0x1p-48L : 0x1.0000000000000002p-48L : inexact-ok
+= atanh downward ldbl-128 0x1p-48L : 0x1.0000000000000000000000005555p-48L : inexact-ok
+= atanh tonearest ldbl-128 0x1p-48L : 0x1.0000000000000000000000005555p-48L : inexact-ok
+= atanh towardzero ldbl-128 0x1p-48L : 0x1.0000000000000000000000005555p-48L : inexact-ok
+= atanh upward ldbl-128 0x1p-48L : 0x1.0000000000000000000000005556p-48L : inexact-ok
+= atanh downward ldbl-128ibm 0x1p-48L : 0x1.00000000000000000000000055p-48L : inexact-ok
+= atanh tonearest ldbl-128ibm 0x1p-48L : 0x1.000000000000000000000000558p-48L : inexact-ok
+= atanh towardzero ldbl-128ibm 0x1p-48L : 0x1.00000000000000000000000055p-48L : inexact-ok
+= atanh upward ldbl-128ibm 0x1p-48L : 0x1.000000000000000000000000558p-48L : inexact-ok
+atanh 0x1p-49
+= atanh downward flt-32 0x8p-52f : 0x8p-52f : inexact-ok
+= atanh tonearest flt-32 0x8p-52f : 0x8p-52f : inexact-ok
+= atanh towardzero flt-32 0x8p-52f : 0x8p-52f : inexact-ok
+= atanh upward flt-32 0x8p-52f : 0x8.00001p-52f : inexact-ok
+= atanh downward dbl-64 0x8p-52 : 0x8p-52 : inexact-ok
+= atanh tonearest dbl-64 0x8p-52 : 0x8p-52 : inexact-ok
+= atanh towardzero dbl-64 0x8p-52 : 0x8p-52 : inexact-ok
+= atanh upward dbl-64 0x8p-52 : 0x8.0000000000008p-52 : inexact-ok
+= atanh downward ldbl-96-intel 0x8p-52L : 0x8p-52L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x8p-52L : 0x8p-52L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x8p-52L : 0x8p-52L : inexact-ok
+= atanh upward ldbl-96-intel 0x8p-52L : 0x8.000000000000001p-52L : inexact-ok
+= atanh downward ldbl-96-m68k 0x8p-52L : 0x8p-52L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x8p-52L : 0x8p-52L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x8p-52L : 0x8p-52L : inexact-ok
+= atanh upward ldbl-96-m68k 0x8p-52L : 0x8.000000000000001p-52L : inexact-ok
+= atanh downward ldbl-128 0x8p-52L : 0x8.000000000000000000000000aaa8p-52L : inexact-ok
+= atanh tonearest ldbl-128 0x8p-52L : 0x8.000000000000000000000000aaa8p-52L : inexact-ok
+= atanh towardzero ldbl-128 0x8p-52L : 0x8.000000000000000000000000aaa8p-52L : inexact-ok
+= atanh upward ldbl-128 0x8p-52L : 0x8.000000000000000000000000aabp-52L : inexact-ok
+= atanh downward ldbl-128ibm 0x8p-52L : 0x8.000000000000000000000000a8p-52L : inexact-ok
+= atanh tonearest ldbl-128ibm 0x8p-52L : 0x8.000000000000000000000000acp-52L : inexact-ok
+= atanh towardzero ldbl-128ibm 0x8p-52L : 0x8.000000000000000000000000a8p-52L : inexact-ok
+= atanh upward ldbl-128ibm 0x8p-52L : 0x8.000000000000000000000000acp-52L : inexact-ok
+atanh 0x1p-50
+= atanh downward flt-32 0x4p-52f : 0x4p-52f : inexact-ok
+= atanh tonearest flt-32 0x4p-52f : 0x4p-52f : inexact-ok
+= atanh towardzero flt-32 0x4p-52f : 0x4p-52f : inexact-ok
+= atanh upward flt-32 0x4p-52f : 0x4.000008p-52f : inexact-ok
+= atanh downward dbl-64 0x4p-52 : 0x4p-52 : inexact-ok
+= atanh tonearest dbl-64 0x4p-52 : 0x4p-52 : inexact-ok
+= atanh towardzero dbl-64 0x4p-52 : 0x4p-52 : inexact-ok
+= atanh upward dbl-64 0x4p-52 : 0x4.0000000000004p-52 : inexact-ok
+= atanh downward ldbl-96-intel 0x4p-52L : 0x4p-52L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x4p-52L : 0x4p-52L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x4p-52L : 0x4p-52L : inexact-ok
+= atanh upward ldbl-96-intel 0x4p-52L : 0x4.0000000000000008p-52L : inexact-ok
+= atanh downward ldbl-96-m68k 0x4p-52L : 0x4p-52L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x4p-52L : 0x4p-52L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x4p-52L : 0x4p-52L : inexact-ok
+= atanh upward ldbl-96-m68k 0x4p-52L : 0x4.0000000000000008p-52L : inexact-ok
+= atanh downward ldbl-128 0x4p-52L : 0x4.0000000000000000000000001554p-52L : inexact-ok
+= atanh tonearest ldbl-128 0x4p-52L : 0x4.0000000000000000000000001554p-52L : inexact-ok
+= atanh towardzero ldbl-128 0x4p-52L : 0x4.0000000000000000000000001554p-52L : inexact-ok
+= atanh upward ldbl-128 0x4p-52L : 0x4.0000000000000000000000001558p-52L : inexact-ok
+= atanh downward ldbl-128ibm 0x4p-52L : 0x4.00000000000000000000000014p-52L : inexact-ok
+= atanh tonearest ldbl-128ibm 0x4p-52L : 0x4.00000000000000000000000016p-52L : inexact-ok
+= atanh towardzero ldbl-128ibm 0x4p-52L : 0x4.00000000000000000000000014p-52L : inexact-ok
+= atanh upward ldbl-128ibm 0x4p-52L : 0x4.00000000000000000000000016p-52L : inexact-ok
+atanh 0x1p-51
+= atanh downward flt-32 0x2p-52f : 0x2p-52f : inexact-ok
+= atanh tonearest flt-32 0x2p-52f : 0x2p-52f : inexact-ok
+= atanh towardzero flt-32 0x2p-52f : 0x2p-52f : inexact-ok
+= atanh upward flt-32 0x2p-52f : 0x2.000004p-52f : inexact-ok
+= atanh downward dbl-64 0x2p-52 : 0x2p-52 : inexact-ok
+= atanh tonearest dbl-64 0x2p-52 : 0x2p-52 : inexact-ok
+= atanh towardzero dbl-64 0x2p-52 : 0x2p-52 : inexact-ok
+= atanh upward dbl-64 0x2p-52 : 0x2.0000000000002p-52 : inexact-ok
+= atanh downward ldbl-96-intel 0x2p-52L : 0x2p-52L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x2p-52L : 0x2p-52L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x2p-52L : 0x2p-52L : inexact-ok
+= atanh upward ldbl-96-intel 0x2p-52L : 0x2.0000000000000004p-52L : inexact-ok
+= atanh downward ldbl-96-m68k 0x2p-52L : 0x2p-52L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x2p-52L : 0x2p-52L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x2p-52L : 0x2p-52L : inexact-ok
+= atanh upward ldbl-96-m68k 0x2p-52L : 0x2.0000000000000004p-52L : inexact-ok
+= atanh downward ldbl-128 0x2p-52L : 0x2.00000000000000000000000002aap-52L : inexact-ok
+= atanh tonearest ldbl-128 0x2p-52L : 0x2.00000000000000000000000002aap-52L : inexact-ok
+= atanh towardzero ldbl-128 0x2p-52L : 0x2.00000000000000000000000002aap-52L : inexact-ok
+= atanh upward ldbl-128 0x2p-52L : 0x2.00000000000000000000000002acp-52L : inexact-ok
+= atanh downward ldbl-128ibm 0x2p-52L : 0x2.00000000000000000000000002p-52L : inexact-ok
+= atanh tonearest ldbl-128ibm 0x2p-52L : 0x2.00000000000000000000000003p-52L : inexact-ok
+= atanh towardzero ldbl-128ibm 0x2p-52L : 0x2.00000000000000000000000002p-52L : inexact-ok
+= atanh upward ldbl-128ibm 0x2p-52L : 0x2.00000000000000000000000003p-52L : inexact-ok
+atanh 0x1p-52
+= atanh downward flt-32 0x1p-52f : 0x1p-52f : inexact-ok
+= atanh tonearest flt-32 0x1p-52f : 0x1p-52f : inexact-ok
+= atanh towardzero flt-32 0x1p-52f : 0x1p-52f : inexact-ok
+= atanh upward flt-32 0x1p-52f : 0x1.000002p-52f : inexact-ok
+= atanh downward dbl-64 0x1p-52 : 0x1p-52 : inexact-ok
+= atanh tonearest dbl-64 0x1p-52 : 0x1p-52 : inexact-ok
+= atanh towardzero dbl-64 0x1p-52 : 0x1p-52 : inexact-ok
+= atanh upward dbl-64 0x1p-52 : 0x1.0000000000001p-52 : inexact-ok
+= atanh downward ldbl-96-intel 0x1p-52L : 0x1p-52L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x1p-52L : 0x1p-52L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x1p-52L : 0x1p-52L : inexact-ok
+= atanh upward ldbl-96-intel 0x1p-52L : 0x1.0000000000000002p-52L : inexact-ok
+= atanh downward ldbl-96-m68k 0x1p-52L : 0x1p-52L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x1p-52L : 0x1p-52L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x1p-52L : 0x1p-52L : inexact-ok
+= atanh upward ldbl-96-m68k 0x1p-52L : 0x1.0000000000000002p-52L : inexact-ok
+= atanh downward ldbl-128 0x1p-52L : 0x1.0000000000000000000000000055p-52L : inexact-ok
+= atanh tonearest ldbl-128 0x1p-52L : 0x1.0000000000000000000000000055p-52L : inexact-ok
+= atanh towardzero ldbl-128 0x1p-52L : 0x1.0000000000000000000000000055p-52L : inexact-ok
+= atanh upward ldbl-128 0x1p-52L : 0x1.0000000000000000000000000056p-52L : inexact-ok
+= atanh downward ldbl-128ibm 0x1p-52L : 0x1p-52L : inexact-ok
+= atanh tonearest ldbl-128ibm 0x1p-52L : 0x1.000000000000000000000000008p-52L : inexact-ok
+= atanh towardzero ldbl-128ibm 0x1p-52L : 0x1p-52L : inexact-ok
+= atanh upward ldbl-128ibm 0x1p-52L : 0x1.000000000000000000000000008p-52L : inexact-ok
+atanh 0x1p-53
+= atanh downward flt-32 0x8p-56f : 0x8p-56f : inexact-ok
+= atanh tonearest flt-32 0x8p-56f : 0x8p-56f : inexact-ok
+= atanh towardzero flt-32 0x8p-56f : 0x8p-56f : inexact-ok
+= atanh upward flt-32 0x8p-56f : 0x8.00001p-56f : inexact-ok
+= atanh downward dbl-64 0x8p-56 : 0x8p-56 : inexact-ok
+= atanh tonearest dbl-64 0x8p-56 : 0x8p-56 : inexact-ok
+= atanh towardzero dbl-64 0x8p-56 : 0x8p-56 : inexact-ok
+= atanh upward dbl-64 0x8p-56 : 0x8.0000000000008p-56 : inexact-ok
+= atanh downward ldbl-96-intel 0x8p-56L : 0x8p-56L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x8p-56L : 0x8p-56L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x8p-56L : 0x8p-56L : inexact-ok
+= atanh upward ldbl-96-intel 0x8p-56L : 0x8.000000000000001p-56L : inexact-ok
+= atanh downward ldbl-96-m68k 0x8p-56L : 0x8p-56L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x8p-56L : 0x8p-56L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x8p-56L : 0x8p-56L : inexact-ok
+= atanh upward ldbl-96-m68k 0x8p-56L : 0x8.000000000000001p-56L : inexact-ok
+= atanh downward ldbl-128 0x8p-56L : 0x8.00000000000000000000000000a8p-56L : inexact-ok
+= atanh tonearest ldbl-128 0x8p-56L : 0x8.00000000000000000000000000a8p-56L : inexact-ok
+= atanh towardzero ldbl-128 0x8p-56L : 0x8.00000000000000000000000000a8p-56L : inexact-ok
+= atanh upward ldbl-128 0x8p-56L : 0x8.00000000000000000000000000bp-56L : inexact-ok
+= atanh downward ldbl-128ibm 0x8p-56L : 0x8p-56L : inexact-ok
+= atanh tonearest ldbl-128ibm 0x8p-56L : 0x8p-56L : inexact-ok
+= atanh towardzero ldbl-128ibm 0x8p-56L : 0x8p-56L : inexact-ok
+= atanh upward ldbl-128ibm 0x8p-56L : 0x8.00000000000000000000000004p-56L : inexact-ok
+atanh 0x1p-54
+= atanh downward flt-32 0x4p-56f : 0x4p-56f : inexact-ok
+= atanh tonearest flt-32 0x4p-56f : 0x4p-56f : inexact-ok
+= atanh towardzero flt-32 0x4p-56f : 0x4p-56f : inexact-ok
+= atanh upward flt-32 0x4p-56f : 0x4.000008p-56f : inexact-ok
+= atanh downward dbl-64 0x4p-56 : 0x4p-56 : inexact-ok
+= atanh tonearest dbl-64 0x4p-56 : 0x4p-56 : inexact-ok
+= atanh towardzero dbl-64 0x4p-56 : 0x4p-56 : inexact-ok
+= atanh upward dbl-64 0x4p-56 : 0x4.0000000000004p-56 : inexact-ok
+= atanh downward ldbl-96-intel 0x4p-56L : 0x4p-56L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x4p-56L : 0x4p-56L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x4p-56L : 0x4p-56L : inexact-ok
+= atanh upward ldbl-96-intel 0x4p-56L : 0x4.0000000000000008p-56L : inexact-ok
+= atanh downward ldbl-96-m68k 0x4p-56L : 0x4p-56L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x4p-56L : 0x4p-56L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x4p-56L : 0x4p-56L : inexact-ok
+= atanh upward ldbl-96-m68k 0x4p-56L : 0x4.0000000000000008p-56L : inexact-ok
+= atanh downward ldbl-128 0x4p-56L : 0x4.0000000000000000000000000014p-56L : inexact-ok
+= atanh tonearest ldbl-128 0x4p-56L : 0x4.0000000000000000000000000014p-56L : inexact-ok
+= atanh towardzero ldbl-128 0x4p-56L : 0x4.0000000000000000000000000014p-56L : inexact-ok
+= atanh upward ldbl-128 0x4p-56L : 0x4.0000000000000000000000000018p-56L : inexact-ok
+= atanh downward ldbl-128ibm 0x4p-56L : 0x4p-56L : inexact-ok
+= atanh tonearest ldbl-128ibm 0x4p-56L : 0x4p-56L : inexact-ok
+= atanh towardzero ldbl-128ibm 0x4p-56L : 0x4p-56L : inexact-ok
+= atanh upward ldbl-128ibm 0x4p-56L : 0x4.00000000000000000000000002p-56L : inexact-ok
+atanh 0x1p-55
+= atanh downward flt-32 0x2p-56f : 0x2p-56f : inexact-ok
+= atanh tonearest flt-32 0x2p-56f : 0x2p-56f : inexact-ok
+= atanh towardzero flt-32 0x2p-56f : 0x2p-56f : inexact-ok
+= atanh upward flt-32 0x2p-56f : 0x2.000004p-56f : inexact-ok
+= atanh downward dbl-64 0x2p-56 : 0x2p-56 : inexact-ok
+= atanh tonearest dbl-64 0x2p-56 : 0x2p-56 : inexact-ok
+= atanh towardzero dbl-64 0x2p-56 : 0x2p-56 : inexact-ok
+= atanh upward dbl-64 0x2p-56 : 0x2.0000000000002p-56 : inexact-ok
+= atanh downward ldbl-96-intel 0x2p-56L : 0x2p-56L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x2p-56L : 0x2p-56L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x2p-56L : 0x2p-56L : inexact-ok
+= atanh upward ldbl-96-intel 0x2p-56L : 0x2.0000000000000004p-56L : inexact-ok
+= atanh downward ldbl-96-m68k 0x2p-56L : 0x2p-56L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x2p-56L : 0x2p-56L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x2p-56L : 0x2p-56L : inexact-ok
+= atanh upward ldbl-96-m68k 0x2p-56L : 0x2.0000000000000004p-56L : inexact-ok
+= atanh downward ldbl-128 0x2p-56L : 0x2.0000000000000000000000000002p-56L : inexact-ok
+= atanh tonearest ldbl-128 0x2p-56L : 0x2.0000000000000000000000000002p-56L : inexact-ok
+= atanh towardzero ldbl-128 0x2p-56L : 0x2.0000000000000000000000000002p-56L : inexact-ok
+= atanh upward ldbl-128 0x2p-56L : 0x2.0000000000000000000000000004p-56L : inexact-ok
+= atanh downward ldbl-128ibm 0x2p-56L : 0x2p-56L : inexact-ok
+= atanh tonearest ldbl-128ibm 0x2p-56L : 0x2p-56L : inexact-ok
+= atanh towardzero ldbl-128ibm 0x2p-56L : 0x2p-56L : inexact-ok
+= atanh upward ldbl-128ibm 0x2p-56L : 0x2.00000000000000000000000001p-56L : inexact-ok
+atanh 0x1p-56
+= atanh downward flt-32 0x1p-56f : 0x1p-56f : inexact-ok
+= atanh tonearest flt-32 0x1p-56f : 0x1p-56f : inexact-ok
+= atanh towardzero flt-32 0x1p-56f : 0x1p-56f : inexact-ok
+= atanh upward flt-32 0x1p-56f : 0x1.000002p-56f : inexact-ok
+= atanh downward dbl-64 0x1p-56 : 0x1p-56 : inexact-ok
+= atanh tonearest dbl-64 0x1p-56 : 0x1p-56 : inexact-ok
+= atanh towardzero dbl-64 0x1p-56 : 0x1p-56 : inexact-ok
+= atanh upward dbl-64 0x1p-56 : 0x1.0000000000001p-56 : inexact-ok
+= atanh downward ldbl-96-intel 0x1p-56L : 0x1p-56L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x1p-56L : 0x1p-56L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x1p-56L : 0x1p-56L : inexact-ok
+= atanh upward ldbl-96-intel 0x1p-56L : 0x1.0000000000000002p-56L : inexact-ok
+= atanh downward ldbl-96-m68k 0x1p-56L : 0x1p-56L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x1p-56L : 0x1p-56L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x1p-56L : 0x1p-56L : inexact-ok
+= atanh upward ldbl-96-m68k 0x1p-56L : 0x1.0000000000000002p-56L : inexact-ok
+= atanh downward ldbl-128 0x1p-56L : 0x1p-56L : inexact-ok
+= atanh tonearest ldbl-128 0x1p-56L : 0x1p-56L : inexact-ok
+= atanh towardzero ldbl-128 0x1p-56L : 0x1p-56L : inexact-ok
+= atanh upward ldbl-128 0x1p-56L : 0x1.0000000000000000000000000001p-56L : inexact-ok
+= atanh downward ldbl-128ibm 0x1p-56L : 0x1p-56L : inexact-ok
+= atanh tonearest ldbl-128ibm 0x1p-56L : 0x1p-56L : inexact-ok
+= atanh towardzero ldbl-128ibm 0x1p-56L : 0x1p-56L : inexact-ok
+= atanh upward ldbl-128ibm 0x1p-56L : 0x1.000000000000000000000000008p-56L : inexact-ok
+atanh 0x1p-57
+= atanh downward flt-32 0x8p-60f : 0x8p-60f : inexact-ok
+= atanh tonearest flt-32 0x8p-60f : 0x8p-60f : inexact-ok
+= atanh towardzero flt-32 0x8p-60f : 0x8p-60f : inexact-ok
+= atanh upward flt-32 0x8p-60f : 0x8.00001p-60f : inexact-ok
+= atanh downward dbl-64 0x8p-60 : 0x8p-60 : inexact-ok
+= atanh tonearest dbl-64 0x8p-60 : 0x8p-60 : inexact-ok
+= atanh towardzero dbl-64 0x8p-60 : 0x8p-60 : inexact-ok
+= atanh upward dbl-64 0x8p-60 : 0x8.0000000000008p-60 : inexact-ok
+= atanh downward ldbl-96-intel 0x8p-60L : 0x8p-60L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x8p-60L : 0x8p-60L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x8p-60L : 0x8p-60L : inexact-ok
+= atanh upward ldbl-96-intel 0x8p-60L : 0x8.000000000000001p-60L : inexact-ok
+= atanh downward ldbl-96-m68k 0x8p-60L : 0x8p-60L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x8p-60L : 0x8p-60L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x8p-60L : 0x8p-60L : inexact-ok
+= atanh upward ldbl-96-m68k 0x8p-60L : 0x8.000000000000001p-60L : inexact-ok
+= atanh downward ldbl-128 0x8p-60L : 0x8p-60L : inexact-ok
+= atanh tonearest ldbl-128 0x8p-60L : 0x8p-60L : inexact-ok
+= atanh towardzero ldbl-128 0x8p-60L : 0x8p-60L : inexact-ok
+= atanh upward ldbl-128 0x8p-60L : 0x8.0000000000000000000000000008p-60L : inexact-ok
+= atanh downward ldbl-128ibm 0x8p-60L : 0x8p-60L : inexact-ok
+= atanh tonearest ldbl-128ibm 0x8p-60L : 0x8p-60L : inexact-ok
+= atanh towardzero ldbl-128ibm 0x8p-60L : 0x8p-60L : inexact-ok
+= atanh upward ldbl-128ibm 0x8p-60L : 0x8.00000000000000000000000004p-60L : inexact-ok
+atanh 0x1p-58
+= atanh downward flt-32 0x4p-60f : 0x4p-60f : inexact-ok
+= atanh tonearest flt-32 0x4p-60f : 0x4p-60f : inexact-ok
+= atanh towardzero flt-32 0x4p-60f : 0x4p-60f : inexact-ok
+= atanh upward flt-32 0x4p-60f : 0x4.000008p-60f : inexact-ok
+= atanh downward dbl-64 0x4p-60 : 0x4p-60 : inexact-ok
+= atanh tonearest dbl-64 0x4p-60 : 0x4p-60 : inexact-ok
+= atanh towardzero dbl-64 0x4p-60 : 0x4p-60 : inexact-ok
+= atanh upward dbl-64 0x4p-60 : 0x4.0000000000004p-60 : inexact-ok
+= atanh downward ldbl-96-intel 0x4p-60L : 0x4p-60L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x4p-60L : 0x4p-60L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x4p-60L : 0x4p-60L : inexact-ok
+= atanh upward ldbl-96-intel 0x4p-60L : 0x4.0000000000000008p-60L : inexact-ok
+= atanh downward ldbl-96-m68k 0x4p-60L : 0x4p-60L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x4p-60L : 0x4p-60L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x4p-60L : 0x4p-60L : inexact-ok
+= atanh upward ldbl-96-m68k 0x4p-60L : 0x4.0000000000000008p-60L : inexact-ok
+= atanh downward ldbl-128 0x4p-60L : 0x4p-60L : inexact-ok
+= atanh tonearest ldbl-128 0x4p-60L : 0x4p-60L : inexact-ok
+= atanh towardzero ldbl-128 0x4p-60L : 0x4p-60L : inexact-ok
+= atanh upward ldbl-128 0x4p-60L : 0x4.0000000000000000000000000004p-60L : inexact-ok
+= atanh downward ldbl-128ibm 0x4p-60L : 0x4p-60L : inexact-ok
+= atanh tonearest ldbl-128ibm 0x4p-60L : 0x4p-60L : inexact-ok
+= atanh towardzero ldbl-128ibm 0x4p-60L : 0x4p-60L : inexact-ok
+= atanh upward ldbl-128ibm 0x4p-60L : 0x4.00000000000000000000000002p-60L : inexact-ok
+atanh 0x1p-59
+= atanh downward flt-32 0x2p-60f : 0x2p-60f : inexact-ok
+= atanh tonearest flt-32 0x2p-60f : 0x2p-60f : inexact-ok
+= atanh towardzero flt-32 0x2p-60f : 0x2p-60f : inexact-ok
+= atanh upward flt-32 0x2p-60f : 0x2.000004p-60f : inexact-ok
+= atanh downward dbl-64 0x2p-60 : 0x2p-60 : inexact-ok
+= atanh tonearest dbl-64 0x2p-60 : 0x2p-60 : inexact-ok
+= atanh towardzero dbl-64 0x2p-60 : 0x2p-60 : inexact-ok
+= atanh upward dbl-64 0x2p-60 : 0x2.0000000000002p-60 : inexact-ok
+= atanh downward ldbl-96-intel 0x2p-60L : 0x2p-60L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x2p-60L : 0x2p-60L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x2p-60L : 0x2p-60L : inexact-ok
+= atanh upward ldbl-96-intel 0x2p-60L : 0x2.0000000000000004p-60L : inexact-ok
+= atanh downward ldbl-96-m68k 0x2p-60L : 0x2p-60L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x2p-60L : 0x2p-60L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x2p-60L : 0x2p-60L : inexact-ok
+= atanh upward ldbl-96-m68k 0x2p-60L : 0x2.0000000000000004p-60L : inexact-ok
+= atanh downward ldbl-128 0x2p-60L : 0x2p-60L : inexact-ok
+= atanh tonearest ldbl-128 0x2p-60L : 0x2p-60L : inexact-ok
+= atanh towardzero ldbl-128 0x2p-60L : 0x2p-60L : inexact-ok
+= atanh upward ldbl-128 0x2p-60L : 0x2.0000000000000000000000000002p-60L : inexact-ok
+= atanh downward ldbl-128ibm 0x2p-60L : 0x2p-60L : inexact-ok
+= atanh tonearest ldbl-128ibm 0x2p-60L : 0x2p-60L : inexact-ok
+= atanh towardzero ldbl-128ibm 0x2p-60L : 0x2p-60L : inexact-ok
+= atanh upward ldbl-128ibm 0x2p-60L : 0x2.00000000000000000000000001p-60L : inexact-ok
+atanh 0x1p-100
+= atanh downward flt-32 0x1p-100f : 0x1p-100f : inexact-ok
+= atanh tonearest flt-32 0x1p-100f : 0x1p-100f : inexact-ok
+= atanh towardzero flt-32 0x1p-100f : 0x1p-100f : inexact-ok
+= atanh upward flt-32 0x1p-100f : 0x1.000002p-100f : inexact-ok
+= atanh downward dbl-64 0x1p-100 : 0x1p-100 : inexact-ok
+= atanh tonearest dbl-64 0x1p-100 : 0x1p-100 : inexact-ok
+= atanh towardzero dbl-64 0x1p-100 : 0x1p-100 : inexact-ok
+= atanh upward dbl-64 0x1p-100 : 0x1.0000000000001p-100 : inexact-ok
+= atanh downward ldbl-96-intel 0x1p-100L : 0x1p-100L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x1p-100L : 0x1p-100L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x1p-100L : 0x1p-100L : inexact-ok
+= atanh upward ldbl-96-intel 0x1p-100L : 0x1.0000000000000002p-100L : inexact-ok
+= atanh downward ldbl-96-m68k 0x1p-100L : 0x1p-100L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x1p-100L : 0x1p-100L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x1p-100L : 0x1p-100L : inexact-ok
+= atanh upward ldbl-96-m68k 0x1p-100L : 0x1.0000000000000002p-100L : inexact-ok
+= atanh downward ldbl-128 0x1p-100L : 0x1p-100L : inexact-ok
+= atanh tonearest ldbl-128 0x1p-100L : 0x1p-100L : inexact-ok
+= atanh towardzero ldbl-128 0x1p-100L : 0x1p-100L : inexact-ok
+= atanh upward ldbl-128 0x1p-100L : 0x1.0000000000000000000000000001p-100L : inexact-ok
+= atanh downward ldbl-128ibm 0x1p-100L : 0x1p-100L : inexact-ok
+= atanh tonearest ldbl-128ibm 0x1p-100L : 0x1p-100L : inexact-ok
+= atanh towardzero ldbl-128ibm 0x1p-100L : 0x1p-100L : inexact-ok
+= atanh upward ldbl-128ibm 0x1p-100L : 0x1.000000000000000000000000008p-100L : inexact-ok
+atanh 0x1p-500 missing-underflow
+= atanh downward flt-32 0x8p-152f : 0x8p-152f : inexact-ok underflow underflow-ok errno-erange-ok
+= atanh tonearest flt-32 0x8p-152f : 0x8p-152f : inexact-ok underflow underflow-ok errno-erange-ok
+= atanh towardzero flt-32 0x8p-152f : 0x8p-152f : inexact-ok underflow underflow-ok errno-erange-ok
+= atanh upward flt-32 0x8p-152f : 0x1p-148f : inexact-ok underflow underflow-ok errno-erange-ok
+= atanh downward dbl-64 0x8p-152 : 0x8p-152 : inexact-ok
+= atanh tonearest dbl-64 0x8p-152 : 0x8p-152 : inexact-ok
+= atanh towardzero dbl-64 0x8p-152 : 0x8p-152 : inexact-ok
+= atanh upward dbl-64 0x8p-152 : 0x8.0000000000008p-152 : inexact-ok
+= atanh downward ldbl-96-intel 0x8p-152L : 0x8p-152L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x8p-152L : 0x8p-152L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x8p-152L : 0x8p-152L : inexact-ok
+= atanh upward ldbl-96-intel 0x8p-152L : 0x8.000000000000001p-152L : inexact-ok
+= atanh downward ldbl-96-m68k 0x8p-152L : 0x8p-152L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x8p-152L : 0x8p-152L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x8p-152L : 0x8p-152L : inexact-ok
+= atanh upward ldbl-96-m68k 0x8p-152L : 0x8.000000000000001p-152L : inexact-ok
+= atanh downward ldbl-128 0x8p-152L : 0x8p-152L : inexact-ok
+= atanh tonearest ldbl-128 0x8p-152L : 0x8p-152L : inexact-ok
+= atanh towardzero ldbl-128 0x8p-152L : 0x8p-152L : inexact-ok
+= atanh upward ldbl-128 0x8p-152L : 0x8.0000000000000000000000000008p-152L : inexact-ok
+= atanh downward ldbl-128ibm 0x8p-152L : 0x8p-152L : inexact-ok
+= atanh tonearest ldbl-128ibm 0x8p-152L : 0x8p-152L : inexact-ok
+= atanh towardzero ldbl-128ibm 0x8p-152L : 0x8p-152L : inexact-ok
+= atanh upward ldbl-128ibm 0x8p-152L : 0x8.00000000000000000000000004p-152L : inexact-ok
+= atanh downward flt-32 0x0p+0f : 0x0p+0f : inexact-ok
+= atanh tonearest flt-32 0x0p+0f : 0x0p+0f : inexact-ok
+= atanh towardzero flt-32 0x0p+0f : 0x0p+0f : inexact-ok
+= atanh upward flt-32 0x0p+0f : 0x0p+0f : inexact-ok
+= atanh downward dbl-64 0x0p+0 : 0x0p+0 : inexact-ok
+= atanh tonearest dbl-64 0x0p+0 : 0x0p+0 : inexact-ok
+= atanh towardzero dbl-64 0x0p+0 : 0x0p+0 : inexact-ok
+= atanh upward dbl-64 0x0p+0 : 0x0p+0 : inexact-ok
+= atanh downward ldbl-96-intel 0x0p+0L : 0x0p+0L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x0p+0L : 0x0p+0L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x0p+0L : 0x0p+0L : inexact-ok
+= atanh upward ldbl-96-intel 0x0p+0L : 0x0p+0L : inexact-ok
+= atanh downward ldbl-96-m68k 0x0p+0L : 0x0p+0L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x0p+0L : 0x0p+0L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x0p+0L : 0x0p+0L : inexact-ok
+= atanh upward ldbl-96-m68k 0x0p+0L : 0x0p+0L : inexact-ok
+= atanh downward ldbl-128 0x0p+0L : 0x0p+0L : inexact-ok
+= atanh tonearest ldbl-128 0x0p+0L : 0x0p+0L : inexact-ok
+= atanh towardzero ldbl-128 0x0p+0L : 0x0p+0L : inexact-ok
+= atanh upward ldbl-128 0x0p+0L : 0x0p+0L : inexact-ok
+= atanh downward ldbl-128ibm 0x0p+0L : 0x0p+0L : inexact-ok
+= atanh tonearest ldbl-128ibm 0x0p+0L : 0x0p+0L : inexact-ok
+= atanh towardzero ldbl-128ibm 0x0p+0L : 0x0p+0L : inexact-ok
+= atanh upward ldbl-128ibm 0x0p+0L : 0x0p+0L : inexact-ok
+= atanh downward dbl-64 0x1p-500 : 0x1p-500 : inexact-ok
+= atanh tonearest dbl-64 0x1p-500 : 0x1p-500 : inexact-ok
+= atanh towardzero dbl-64 0x1p-500 : 0x1p-500 : inexact-ok
+= atanh upward dbl-64 0x1p-500 : 0x1.0000000000001p-500 : inexact-ok
+= atanh downward ldbl-96-intel 0x1p-500L : 0x1p-500L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x1p-500L : 0x1p-500L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x1p-500L : 0x1p-500L : inexact-ok
+= atanh upward ldbl-96-intel 0x1p-500L : 0x1.0000000000000002p-500L : inexact-ok
+= atanh downward ldbl-96-m68k 0x1p-500L : 0x1p-500L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x1p-500L : 0x1p-500L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x1p-500L : 0x1p-500L : inexact-ok
+= atanh upward ldbl-96-m68k 0x1p-500L : 0x1.0000000000000002p-500L : inexact-ok
+= atanh downward ldbl-128 0x1p-500L : 0x1p-500L : inexact-ok
+= atanh tonearest ldbl-128 0x1p-500L : 0x1p-500L : inexact-ok
+= atanh towardzero ldbl-128 0x1p-500L : 0x1p-500L : inexact-ok
+= atanh upward ldbl-128 0x1p-500L : 0x1.0000000000000000000000000001p-500L : inexact-ok
+= atanh downward ldbl-128ibm 0x1p-500L : 0x1p-500L : inexact-ok
+= atanh tonearest ldbl-128ibm 0x1p-500L : 0x1p-500L : inexact-ok
+= atanh towardzero ldbl-128ibm 0x1p-500L : 0x1p-500L : inexact-ok
+= atanh upward ldbl-128ibm 0x1p-500L : 0x1.000000000000000000000000008p-500L : inexact-ok
+atanh 0x1p-5000 missing-underflow
+= atanh downward flt-32 0x8p-152f : 0x8p-152f : inexact-ok underflow underflow-ok errno-erange-ok
+= atanh tonearest flt-32 0x8p-152f : 0x8p-152f : inexact-ok underflow underflow-ok errno-erange-ok
+= atanh towardzero flt-32 0x8p-152f : 0x8p-152f : inexact-ok underflow underflow-ok errno-erange-ok
+= atanh upward flt-32 0x8p-152f : 0x1p-148f : inexact-ok underflow underflow-ok errno-erange-ok
+= atanh downward dbl-64 0x8p-152 : 0x8p-152 : inexact-ok
+= atanh tonearest dbl-64 0x8p-152 : 0x8p-152 : inexact-ok
+= atanh towardzero dbl-64 0x8p-152 : 0x8p-152 : inexact-ok
+= atanh upward dbl-64 0x8p-152 : 0x8.0000000000008p-152 : inexact-ok
+= atanh downward ldbl-96-intel 0x8p-152L : 0x8p-152L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x8p-152L : 0x8p-152L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x8p-152L : 0x8p-152L : inexact-ok
+= atanh upward ldbl-96-intel 0x8p-152L : 0x8.000000000000001p-152L : inexact-ok
+= atanh downward ldbl-96-m68k 0x8p-152L : 0x8p-152L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x8p-152L : 0x8p-152L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x8p-152L : 0x8p-152L : inexact-ok
+= atanh upward ldbl-96-m68k 0x8p-152L : 0x8.000000000000001p-152L : inexact-ok
+= atanh downward ldbl-128 0x8p-152L : 0x8p-152L : inexact-ok
+= atanh tonearest ldbl-128 0x8p-152L : 0x8p-152L : inexact-ok
+= atanh towardzero ldbl-128 0x8p-152L : 0x8p-152L : inexact-ok
+= atanh upward ldbl-128 0x8p-152L : 0x8.0000000000000000000000000008p-152L : inexact-ok
+= atanh downward ldbl-128ibm 0x8p-152L : 0x8p-152L : inexact-ok
+= atanh tonearest ldbl-128ibm 0x8p-152L : 0x8p-152L : inexact-ok
+= atanh towardzero ldbl-128ibm 0x8p-152L : 0x8p-152L : inexact-ok
+= atanh upward ldbl-128ibm 0x8p-152L : 0x8.00000000000000000000000004p-152L : inexact-ok
+= atanh downward flt-32 0x0p+0f : 0x0p+0f : inexact-ok
+= atanh tonearest flt-32 0x0p+0f : 0x0p+0f : inexact-ok
+= atanh towardzero flt-32 0x0p+0f : 0x0p+0f : inexact-ok
+= atanh upward flt-32 0x0p+0f : 0x0p+0f : inexact-ok
+= atanh downward dbl-64 0x0p+0 : 0x0p+0 : inexact-ok
+= atanh tonearest dbl-64 0x0p+0 : 0x0p+0 : inexact-ok
+= atanh towardzero dbl-64 0x0p+0 : 0x0p+0 : inexact-ok
+= atanh upward dbl-64 0x0p+0 : 0x0p+0 : inexact-ok
+= atanh downward ldbl-96-intel 0x0p+0L : 0x0p+0L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x0p+0L : 0x0p+0L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x0p+0L : 0x0p+0L : inexact-ok
+= atanh upward ldbl-96-intel 0x0p+0L : 0x0p+0L : inexact-ok
+= atanh downward ldbl-96-m68k 0x0p+0L : 0x0p+0L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x0p+0L : 0x0p+0L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x0p+0L : 0x0p+0L : inexact-ok
+= atanh upward ldbl-96-m68k 0x0p+0L : 0x0p+0L : inexact-ok
+= atanh downward ldbl-128 0x0p+0L : 0x0p+0L : inexact-ok
+= atanh tonearest ldbl-128 0x0p+0L : 0x0p+0L : inexact-ok
+= atanh towardzero ldbl-128 0x0p+0L : 0x0p+0L : inexact-ok
+= atanh upward ldbl-128 0x0p+0L : 0x0p+0L : inexact-ok
+= atanh downward ldbl-128ibm 0x0p+0L : 0x0p+0L : inexact-ok
+= atanh tonearest ldbl-128ibm 0x0p+0L : 0x0p+0L : inexact-ok
+= atanh towardzero ldbl-128ibm 0x0p+0L : 0x0p+0L : inexact-ok
+= atanh upward ldbl-128ibm 0x0p+0L : 0x0p+0L : inexact-ok
+= atanh downward dbl-64 0x4p-1076 : 0x4p-1076 : inexact-ok underflow underflow-ok errno-erange-ok
+= atanh tonearest dbl-64 0x4p-1076 : 0x4p-1076 : inexact-ok underflow underflow-ok errno-erange-ok
+= atanh towardzero dbl-64 0x4p-1076 : 0x4p-1076 : inexact-ok underflow underflow-ok errno-erange-ok
+= atanh upward dbl-64 0x4p-1076 : 0x8p-1076 : inexact-ok underflow underflow-ok errno-erange-ok
+= atanh downward ldbl-96-intel 0x4p-1076L : 0x4p-1076L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x4p-1076L : 0x4p-1076L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x4p-1076L : 0x4p-1076L : inexact-ok
+= atanh upward ldbl-96-intel 0x4p-1076L : 0x4.0000000000000008p-1076L : inexact-ok
+= atanh downward ldbl-96-m68k 0x4p-1076L : 0x4p-1076L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x4p-1076L : 0x4p-1076L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x4p-1076L : 0x4p-1076L : inexact-ok
+= atanh upward ldbl-96-m68k 0x4p-1076L : 0x4.0000000000000008p-1076L : inexact-ok
+= atanh downward ldbl-128 0x4p-1076L : 0x4p-1076L : inexact-ok
+= atanh tonearest ldbl-128 0x4p-1076L : 0x4p-1076L : inexact-ok
+= atanh towardzero ldbl-128 0x4p-1076L : 0x4p-1076L : inexact-ok
+= atanh upward ldbl-128 0x4p-1076L : 0x4.0000000000000000000000000004p-1076L : inexact-ok
+= atanh downward ldbl-128ibm 0x4p-1076L : 0x4p-1076L : inexact-ok underflow underflow-ok errno-erange-ok
+= atanh tonearest ldbl-128ibm 0x4p-1076L : 0x4p-1076L : inexact-ok underflow underflow-ok errno-erange-ok
+= atanh towardzero ldbl-128ibm 0x4p-1076L : 0x4p-1076L : inexact-ok underflow underflow-ok errno-erange-ok
+= atanh upward ldbl-128ibm 0x4p-1076L : 0x8p-1076L : inexact-ok underflow underflow-ok errno-erange-ok
+= atanh downward ldbl-96-intel 0x1p-5000L : 0x1p-5000L : inexact-ok
+= atanh tonearest ldbl-96-intel 0x1p-5000L : 0x1p-5000L : inexact-ok
+= atanh towardzero ldbl-96-intel 0x1p-5000L : 0x1p-5000L : inexact-ok
+= atanh upward ldbl-96-intel 0x1p-5000L : 0x1.0000000000000002p-5000L : inexact-ok
+= atanh downward ldbl-96-m68k 0x1p-5000L : 0x1p-5000L : inexact-ok
+= atanh tonearest ldbl-96-m68k 0x1p-5000L : 0x1p-5000L : inexact-ok
+= atanh towardzero ldbl-96-m68k 0x1p-5000L : 0x1p-5000L : inexact-ok
+= atanh upward ldbl-96-m68k 0x1p-5000L : 0x1.0000000000000002p-5000L : inexact-ok
+= atanh downward ldbl-128 0x1p-5000L : 0x1p-5000L : inexact-ok
+= atanh tonearest ldbl-128 0x1p-5000L : 0x1p-5000L : inexact-ok
+= atanh towardzero ldbl-128 0x1p-5000L : 0x1p-5000L : inexact-ok
+= atanh upward ldbl-128 0x1p-5000L : 0x1.0000000000000000000000000001p-5000L : inexact-ok
 atanh min missing-underflow
 = atanh downward flt-32 0x4p-128f : 0x4p-128f : inexact-ok underflow-ok errno-erange-ok
 = atanh tonearest flt-32 0x4p-128f : 0x4p-128f : inexact-ok underflow-ok errno-erange-ok