math: Sync atanh from CORE-MATH

The CORE-MATH c423b9a3 commit made atanh to use a slight different
muldd_acc, mulddd, and polydd (which uses muldd_acc internally)
compare to asinh and acosh.

The new tests were suggested by Paul Zimmermann (although I did
not see any regression).

Checked on x86_64-linux-gnu, x86_64-linux-gnu-v3, aarch64-linux-gnu,
and i686-linux-gnu.

Reviewed-by: Paul Zimmermann <Paul.Zimmermann@inria.fr>
This commit is contained in:
Adhemerval Zanella 2026-01-09 11:56:50 -03:00
parent eafea63c11
commit 05b46df987
6 changed files with 782 additions and 21 deletions

View File

@ -246,7 +246,7 @@ tzdata:
core-math:
# src/binary64/acosh/acosh.c, revision 6736002f
sysdeps/ieee754/dbl-64/e_acosh.c
# src/binary64/atanh/atanh.c, revision dc9465e7
# src/binary64/atanh/atanh.c, revision c423b9a3
sysdeps/ieee754/dbl-64/e_atanh.c
# src/binary64/tgamma/tgamma.c, revision 0f185e23
sysdeps/ieee754/dbl-64/e_gamma_r.c

View File

@ -916,6 +916,16 @@ atanh 0x1.07f00a701ace5p-1
atanh 0x1.f80094p-8
# the next value generates larger error bounds on x86_64 (binary128)
atanh 0x2.c02a24f3472c7840afbd8cfb68bap-4
atanh 0x1.ebf0a791a74bep-1
atanh 0x1.ebf0a974933dp-1
atanh 0x1.ebf0a992eabf2p-1
atanh 0x1.ebf0adca5e78ep-1
atanh 0x1.ebf0afcde5f31p-1
atanh 0x1.ebf0b78af8d51p-1
atanh 0x1.ebf0bdc2afd4p-1
atanh 0x1.ebf0bfefa727dp-1
atanh 0x1.f5deed6e671a1p-1
atanh 0x1.f5def5fcaa8efp-1
atanh min
atanh -min
atanh min_subnorm

View File

@ -3623,6 +3623,696 @@ atanh 0x2.c02a24f3472c7840afbd8cfb68bap-4
= atanh tonearest ibm128 0x2.c02a24f3472c7840afbd8cfb68p-4 : 0x2.c73a3a9475b5a6198c97986c8ep-4 : inexact-ok
= atanh towardzero ibm128 0x2.c02a24f3472c7840afbd8cfb68p-4 : 0x2.c73a3a9475b5a6198c97986c8ep-4 : inexact-ok
= atanh upward ibm128 0x2.c02a24f3472c7840afbd8cfb68p-4 : 0x2.c73a3a9475b5a6198c97986c8fp-4 : inexact-ok
atanh 0x1.ebf0a791a74bep-1
= atanh downward binary32 0xf.5f854p-4 : 0x1.f4dbf8p+0 : inexact-ok
= atanh tonearest binary32 0xf.5f854p-4 : 0x1.f4dbf8p+0 : inexact-ok
= atanh towardzero binary32 0xf.5f854p-4 : 0x1.f4dbf8p+0 : inexact-ok
= atanh upward binary32 0xf.5f854p-4 : 0x1.f4dbfap+0 : inexact-ok
= atanh downward binary64 0xf.5f854p-4 : 0x1.f4dbf8943dd49p+0 : inexact-ok
= atanh tonearest binary64 0xf.5f854p-4 : 0x1.f4dbf8943dd4ap+0 : inexact-ok
= atanh towardzero binary64 0xf.5f854p-4 : 0x1.f4dbf8943dd49p+0 : inexact-ok
= atanh upward binary64 0xf.5f854p-4 : 0x1.f4dbf8943dd4ap+0 : inexact-ok
= atanh downward intel96 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb4p+0 : inexact-ok
= atanh tonearest intel96 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb4p+0 : inexact-ok
= atanh towardzero intel96 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb4p+0 : inexact-ok
= atanh upward intel96 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb6p+0 : inexact-ok
= atanh downward m68k96 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb4p+0 : inexact-ok
= atanh tonearest m68k96 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb4p+0 : inexact-ok
= atanh towardzero m68k96 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb4p+0 : inexact-ok
= atanh upward m68k96 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb6p+0 : inexact-ok
= atanh downward binary128 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb47831b82212f4p+0 : inexact-ok
= atanh tonearest binary128 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb47831b82212f5p+0 : inexact-ok
= atanh towardzero binary128 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb47831b82212f4p+0 : inexact-ok
= atanh upward binary128 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb47831b82212f5p+0 : inexact-ok
= atanh downward ibm128 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb47831b822128p+0 : inexact-ok
= atanh tonearest ibm128 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb47831b82213p+0 : inexact-ok
= atanh towardzero ibm128 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb47831b822128p+0 : inexact-ok
= atanh upward ibm128 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb47831b82213p+0 : inexact-ok
= atanh downward binary32 0xf.5f853p-4 : 0x1.f4dbeap+0 : inexact-ok
= atanh tonearest binary32 0xf.5f853p-4 : 0x1.f4dbecp+0 : inexact-ok
= atanh towardzero binary32 0xf.5f853p-4 : 0x1.f4dbeap+0 : inexact-ok
= atanh upward binary32 0xf.5f853p-4 : 0x1.f4dbecp+0 : inexact-ok
= atanh downward binary64 0xf.5f853p-4 : 0x1.f4dbeb8ff4b3fp+0 : inexact-ok
= atanh tonearest binary64 0xf.5f853p-4 : 0x1.f4dbeb8ff4b4p+0 : inexact-ok
= atanh towardzero binary64 0xf.5f853p-4 : 0x1.f4dbeb8ff4b3fp+0 : inexact-ok
= atanh upward binary64 0xf.5f853p-4 : 0x1.f4dbeb8ff4b4p+0 : inexact-ok
= atanh downward intel96 0xf.5f853p-4 : 0x1.f4dbeb8ff4b3fa52p+0 : inexact-ok
= atanh tonearest intel96 0xf.5f853p-4 : 0x1.f4dbeb8ff4b3fa54p+0 : inexact-ok
= atanh towardzero intel96 0xf.5f853p-4 : 0x1.f4dbeb8ff4b3fa52p+0 : inexact-ok
= atanh upward intel96 0xf.5f853p-4 : 0x1.f4dbeb8ff4b3fa54p+0 : inexact-ok
= atanh downward m68k96 0xf.5f853p-4 : 0x1.f4dbeb8ff4b3fa52p+0 : inexact-ok
= atanh tonearest m68k96 0xf.5f853p-4 : 0x1.f4dbeb8ff4b3fa54p+0 : inexact-ok
= atanh towardzero m68k96 0xf.5f853p-4 : 0x1.f4dbeb8ff4b3fa52p+0 : inexact-ok
= atanh upward m68k96 0xf.5f853p-4 : 0x1.f4dbeb8ff4b3fa54p+0 : inexact-ok
= atanh downward binary128 0xf.5f853p-4 : 0x1.f4dbeb8ff4b3fa53ab4b8ebb0b3ep+0 : inexact-ok
= atanh tonearest binary128 0xf.5f853p-4 : 0x1.f4dbeb8ff4b3fa53ab4b8ebb0b3ep+0 : inexact-ok
= atanh towardzero binary128 0xf.5f853p-4 : 0x1.f4dbeb8ff4b3fa53ab4b8ebb0b3ep+0 : inexact-ok
= atanh upward binary128 0xf.5f853p-4 : 0x1.f4dbeb8ff4b3fa53ab4b8ebb0b3fp+0 : inexact-ok
= atanh downward ibm128 0xf.5f853p-4 : 0x1.f4dbeb8ff4b3fa53ab4b8ebb0bp+0 : inexact-ok
= atanh tonearest ibm128 0xf.5f853p-4 : 0x1.f4dbeb8ff4b3fa53ab4b8ebb0bp+0 : inexact-ok
= atanh towardzero ibm128 0xf.5f853p-4 : 0x1.f4dbeb8ff4b3fa53ab4b8ebb0bp+0 : inexact-ok
= atanh upward ibm128 0xf.5f853p-4 : 0x1.f4dbeb8ff4b3fa53ab4b8ebb0b8p+0 : inexact-ok
= atanh downward binary64 0xf.5f853c8d3a5fp-4 : 0x1.f4dbf5c610b22p+0 : inexact-ok
= atanh tonearest binary64 0xf.5f853c8d3a5fp-4 : 0x1.f4dbf5c610b23p+0 : inexact-ok
= atanh towardzero binary64 0xf.5f853c8d3a5fp-4 : 0x1.f4dbf5c610b22p+0 : inexact-ok
= atanh upward binary64 0xf.5f853c8d3a5fp-4 : 0x1.f4dbf5c610b23p+0 : inexact-ok
= atanh downward intel96 0xf.5f853c8d3a5fp-4 : 0x1.f4dbf5c610b22ffep+0 : inexact-ok
= atanh tonearest intel96 0xf.5f853c8d3a5fp-4 : 0x1.f4dbf5c610b23p+0 : inexact-ok
= atanh towardzero intel96 0xf.5f853c8d3a5fp-4 : 0x1.f4dbf5c610b22ffep+0 : inexact-ok
= atanh upward intel96 0xf.5f853c8d3a5fp-4 : 0x1.f4dbf5c610b23p+0 : inexact-ok
= atanh downward m68k96 0xf.5f853c8d3a5fp-4 : 0x1.f4dbf5c610b22ffep+0 : inexact-ok
= atanh tonearest m68k96 0xf.5f853c8d3a5fp-4 : 0x1.f4dbf5c610b23p+0 : inexact-ok
= atanh towardzero m68k96 0xf.5f853c8d3a5fp-4 : 0x1.f4dbf5c610b22ffep+0 : inexact-ok
= atanh upward m68k96 0xf.5f853c8d3a5fp-4 : 0x1.f4dbf5c610b23p+0 : inexact-ok
= atanh downward binary128 0xf.5f853c8d3a5fp-4 : 0x1.f4dbf5c610b22fffffffdddbece9p+0 : inexact-ok
= atanh tonearest binary128 0xf.5f853c8d3a5fp-4 : 0x1.f4dbf5c610b22fffffffdddbece9p+0 : inexact-ok
= atanh towardzero binary128 0xf.5f853c8d3a5fp-4 : 0x1.f4dbf5c610b22fffffffdddbece9p+0 : inexact-ok
= atanh upward binary128 0xf.5f853c8d3a5fp-4 : 0x1.f4dbf5c610b22fffffffdddbeceap+0 : inexact-ok
= atanh downward ibm128 0xf.5f853c8d3a5fp-4 : 0x1.f4dbf5c610b22fffffffdddbec8p+0 : inexact-ok
= atanh tonearest ibm128 0xf.5f853c8d3a5fp-4 : 0x1.f4dbf5c610b22fffffffdddbedp+0 : inexact-ok
= atanh towardzero ibm128 0xf.5f853c8d3a5fp-4 : 0x1.f4dbf5c610b22fffffffdddbec8p+0 : inexact-ok
= atanh upward ibm128 0xf.5f853c8d3a5fp-4 : 0x1.f4dbf5c610b22fffffffdddbedp+0 : inexact-ok
atanh 0x1.ebf0a974933dp-1
= atanh downward binary32 0xf.5f855p-4 : 0x1.f4dc04p+0 : inexact-ok
= atanh tonearest binary32 0xf.5f855p-4 : 0x1.f4dc06p+0 : inexact-ok
= atanh towardzero binary32 0xf.5f855p-4 : 0x1.f4dc04p+0 : inexact-ok
= atanh upward binary32 0xf.5f855p-4 : 0x1.f4dc06p+0 : inexact-ok
= atanh downward binary64 0xf.5f855p-4 : 0x1.f4dc0598883adp+0 : inexact-ok
= atanh tonearest binary64 0xf.5f855p-4 : 0x1.f4dc0598883adp+0 : inexact-ok
= atanh towardzero binary64 0xf.5f855p-4 : 0x1.f4dc0598883adp+0 : inexact-ok
= atanh upward binary64 0xf.5f855p-4 : 0x1.f4dc0598883aep+0 : inexact-ok
= atanh downward intel96 0xf.5f855p-4 : 0x1.f4dc0598883ad756p+0 : inexact-ok
= atanh tonearest intel96 0xf.5f855p-4 : 0x1.f4dc0598883ad756p+0 : inexact-ok
= atanh towardzero intel96 0xf.5f855p-4 : 0x1.f4dc0598883ad756p+0 : inexact-ok
= atanh upward intel96 0xf.5f855p-4 : 0x1.f4dc0598883ad758p+0 : inexact-ok
= atanh downward m68k96 0xf.5f855p-4 : 0x1.f4dc0598883ad756p+0 : inexact-ok
= atanh tonearest m68k96 0xf.5f855p-4 : 0x1.f4dc0598883ad756p+0 : inexact-ok
= atanh towardzero m68k96 0xf.5f855p-4 : 0x1.f4dc0598883ad756p+0 : inexact-ok
= atanh upward m68k96 0xf.5f855p-4 : 0x1.f4dc0598883ad758p+0 : inexact-ok
= atanh downward binary128 0xf.5f855p-4 : 0x1.f4dc0598883ad756b1b9db134532p+0 : inexact-ok
= atanh tonearest binary128 0xf.5f855p-4 : 0x1.f4dc0598883ad756b1b9db134533p+0 : inexact-ok
= atanh towardzero binary128 0xf.5f855p-4 : 0x1.f4dc0598883ad756b1b9db134532p+0 : inexact-ok
= atanh upward binary128 0xf.5f855p-4 : 0x1.f4dc0598883ad756b1b9db134533p+0 : inexact-ok
= atanh downward ibm128 0xf.5f855p-4 : 0x1.f4dc0598883ad756b1b9db1345p+0 : inexact-ok
= atanh tonearest ibm128 0xf.5f855p-4 : 0x1.f4dc0598883ad756b1b9db1345p+0 : inexact-ok
= atanh towardzero ibm128 0xf.5f855p-4 : 0x1.f4dc0598883ad756b1b9db1345p+0 : inexact-ok
= atanh upward ibm128 0xf.5f855p-4 : 0x1.f4dc0598883ad756b1b9db13458p+0 : inexact-ok
= atanh downward binary32 0xf.5f854p-4 : 0x1.f4dbf8p+0 : inexact-ok
= atanh tonearest binary32 0xf.5f854p-4 : 0x1.f4dbf8p+0 : inexact-ok
= atanh towardzero binary32 0xf.5f854p-4 : 0x1.f4dbf8p+0 : inexact-ok
= atanh upward binary32 0xf.5f854p-4 : 0x1.f4dbfap+0 : inexact-ok
= atanh downward binary64 0xf.5f854p-4 : 0x1.f4dbf8943dd49p+0 : inexact-ok
= atanh tonearest binary64 0xf.5f854p-4 : 0x1.f4dbf8943dd4ap+0 : inexact-ok
= atanh towardzero binary64 0xf.5f854p-4 : 0x1.f4dbf8943dd49p+0 : inexact-ok
= atanh upward binary64 0xf.5f854p-4 : 0x1.f4dbf8943dd4ap+0 : inexact-ok
= atanh downward intel96 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb4p+0 : inexact-ok
= atanh tonearest intel96 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb4p+0 : inexact-ok
= atanh towardzero intel96 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb4p+0 : inexact-ok
= atanh upward intel96 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb6p+0 : inexact-ok
= atanh downward m68k96 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb4p+0 : inexact-ok
= atanh tonearest m68k96 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb4p+0 : inexact-ok
= atanh towardzero m68k96 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb4p+0 : inexact-ok
= atanh upward m68k96 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb6p+0 : inexact-ok
= atanh downward binary128 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb47831b82212f4p+0 : inexact-ok
= atanh tonearest binary128 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb47831b82212f5p+0 : inexact-ok
= atanh towardzero binary128 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb47831b82212f4p+0 : inexact-ok
= atanh upward binary128 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb47831b82212f5p+0 : inexact-ok
= atanh downward ibm128 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb47831b822128p+0 : inexact-ok
= atanh tonearest ibm128 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb47831b82213p+0 : inexact-ok
= atanh towardzero ibm128 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb47831b822128p+0 : inexact-ok
= atanh upward ibm128 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb47831b82213p+0 : inexact-ok
= atanh downward binary64 0xf.5f854ba499e8p-4 : 0x1.f4dc020d1a0afp+0 : inexact-ok
= atanh tonearest binary64 0xf.5f854ba499e8p-4 : 0x1.f4dc020d1a0bp+0 : inexact-ok
= atanh towardzero binary64 0xf.5f854ba499e8p-4 : 0x1.f4dc020d1a0afp+0 : inexact-ok
= atanh upward binary64 0xf.5f854ba499e8p-4 : 0x1.f4dc020d1a0bp+0 : inexact-ok
= atanh downward intel96 0xf.5f854ba499e8p-4 : 0x1.f4dc020d1a0afffep+0 : inexact-ok
= atanh tonearest intel96 0xf.5f854ba499e8p-4 : 0x1.f4dc020d1a0bp+0 : inexact-ok
= atanh towardzero intel96 0xf.5f854ba499e8p-4 : 0x1.f4dc020d1a0afffep+0 : inexact-ok
= atanh upward intel96 0xf.5f854ba499e8p-4 : 0x1.f4dc020d1a0bp+0 : inexact-ok
= atanh downward m68k96 0xf.5f854ba499e8p-4 : 0x1.f4dc020d1a0afffep+0 : inexact-ok
= atanh tonearest m68k96 0xf.5f854ba499e8p-4 : 0x1.f4dc020d1a0bp+0 : inexact-ok
= atanh towardzero m68k96 0xf.5f854ba499e8p-4 : 0x1.f4dc020d1a0afffep+0 : inexact-ok
= atanh upward m68k96 0xf.5f854ba499e8p-4 : 0x1.f4dc020d1a0bp+0 : inexact-ok
= atanh downward binary128 0xf.5f854ba499e8p-4 : 0x1.f4dc020d1a0afffffffda4fe8c86p+0 : inexact-ok
= atanh tonearest binary128 0xf.5f854ba499e8p-4 : 0x1.f4dc020d1a0afffffffda4fe8c87p+0 : inexact-ok
= atanh towardzero binary128 0xf.5f854ba499e8p-4 : 0x1.f4dc020d1a0afffffffda4fe8c86p+0 : inexact-ok
= atanh upward binary128 0xf.5f854ba499e8p-4 : 0x1.f4dc020d1a0afffffffda4fe8c87p+0 : inexact-ok
= atanh downward ibm128 0xf.5f854ba499e8p-4 : 0x1.f4dc020d1a0afffffffda4fe8c8p+0 : inexact-ok
= atanh tonearest ibm128 0xf.5f854ba499e8p-4 : 0x1.f4dc020d1a0afffffffda4fe8c8p+0 : inexact-ok
= atanh towardzero ibm128 0xf.5f854ba499e8p-4 : 0x1.f4dc020d1a0afffffffda4fe8c8p+0 : inexact-ok
= atanh upward ibm128 0xf.5f854ba499e8p-4 : 0x1.f4dc020d1a0afffffffda4fe8dp+0 : inexact-ok
atanh 0x1.ebf0a992eabf2p-1
= atanh downward binary32 0xf.5f855p-4 : 0x1.f4dc04p+0 : inexact-ok
= atanh tonearest binary32 0xf.5f855p-4 : 0x1.f4dc06p+0 : inexact-ok
= atanh towardzero binary32 0xf.5f855p-4 : 0x1.f4dc04p+0 : inexact-ok
= atanh upward binary32 0xf.5f855p-4 : 0x1.f4dc06p+0 : inexact-ok
= atanh downward binary64 0xf.5f855p-4 : 0x1.f4dc0598883adp+0 : inexact-ok
= atanh tonearest binary64 0xf.5f855p-4 : 0x1.f4dc0598883adp+0 : inexact-ok
= atanh towardzero binary64 0xf.5f855p-4 : 0x1.f4dc0598883adp+0 : inexact-ok
= atanh upward binary64 0xf.5f855p-4 : 0x1.f4dc0598883aep+0 : inexact-ok
= atanh downward intel96 0xf.5f855p-4 : 0x1.f4dc0598883ad756p+0 : inexact-ok
= atanh tonearest intel96 0xf.5f855p-4 : 0x1.f4dc0598883ad756p+0 : inexact-ok
= atanh towardzero intel96 0xf.5f855p-4 : 0x1.f4dc0598883ad756p+0 : inexact-ok
= atanh upward intel96 0xf.5f855p-4 : 0x1.f4dc0598883ad758p+0 : inexact-ok
= atanh downward m68k96 0xf.5f855p-4 : 0x1.f4dc0598883ad756p+0 : inexact-ok
= atanh tonearest m68k96 0xf.5f855p-4 : 0x1.f4dc0598883ad756p+0 : inexact-ok
= atanh towardzero m68k96 0xf.5f855p-4 : 0x1.f4dc0598883ad756p+0 : inexact-ok
= atanh upward m68k96 0xf.5f855p-4 : 0x1.f4dc0598883ad758p+0 : inexact-ok
= atanh downward binary128 0xf.5f855p-4 : 0x1.f4dc0598883ad756b1b9db134532p+0 : inexact-ok
= atanh tonearest binary128 0xf.5f855p-4 : 0x1.f4dc0598883ad756b1b9db134533p+0 : inexact-ok
= atanh towardzero binary128 0xf.5f855p-4 : 0x1.f4dc0598883ad756b1b9db134532p+0 : inexact-ok
= atanh upward binary128 0xf.5f855p-4 : 0x1.f4dc0598883ad756b1b9db134533p+0 : inexact-ok
= atanh downward ibm128 0xf.5f855p-4 : 0x1.f4dc0598883ad756b1b9db1345p+0 : inexact-ok
= atanh tonearest ibm128 0xf.5f855p-4 : 0x1.f4dc0598883ad756b1b9db1345p+0 : inexact-ok
= atanh towardzero ibm128 0xf.5f855p-4 : 0x1.f4dc0598883ad756b1b9db1345p+0 : inexact-ok
= atanh upward ibm128 0xf.5f855p-4 : 0x1.f4dc0598883ad756b1b9db13458p+0 : inexact-ok
= atanh downward binary32 0xf.5f854p-4 : 0x1.f4dbf8p+0 : inexact-ok
= atanh tonearest binary32 0xf.5f854p-4 : 0x1.f4dbf8p+0 : inexact-ok
= atanh towardzero binary32 0xf.5f854p-4 : 0x1.f4dbf8p+0 : inexact-ok
= atanh upward binary32 0xf.5f854p-4 : 0x1.f4dbfap+0 : inexact-ok
= atanh downward binary64 0xf.5f854p-4 : 0x1.f4dbf8943dd49p+0 : inexact-ok
= atanh tonearest binary64 0xf.5f854p-4 : 0x1.f4dbf8943dd4ap+0 : inexact-ok
= atanh towardzero binary64 0xf.5f854p-4 : 0x1.f4dbf8943dd49p+0 : inexact-ok
= atanh upward binary64 0xf.5f854p-4 : 0x1.f4dbf8943dd4ap+0 : inexact-ok
= atanh downward intel96 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb4p+0 : inexact-ok
= atanh tonearest intel96 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb4p+0 : inexact-ok
= atanh towardzero intel96 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb4p+0 : inexact-ok
= atanh upward intel96 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb6p+0 : inexact-ok
= atanh downward m68k96 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb4p+0 : inexact-ok
= atanh tonearest m68k96 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb4p+0 : inexact-ok
= atanh towardzero m68k96 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb4p+0 : inexact-ok
= atanh upward m68k96 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb6p+0 : inexact-ok
= atanh downward binary128 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb47831b82212f4p+0 : inexact-ok
= atanh tonearest binary128 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb47831b82212f5p+0 : inexact-ok
= atanh towardzero binary128 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb47831b82212f4p+0 : inexact-ok
= atanh upward binary128 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb47831b82212f5p+0 : inexact-ok
= atanh downward ibm128 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb47831b822128p+0 : inexact-ok
= atanh tonearest ibm128 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb47831b82213p+0 : inexact-ok
= atanh towardzero ibm128 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb47831b822128p+0 : inexact-ok
= atanh upward ibm128 0xf.5f854p-4 : 0x1.f4dbf8943dd49cb47831b82213p+0 : inexact-ok
= atanh downward binary64 0xf.5f854c9755f9p-4 : 0x1.f4dc02d293f57p+0 : inexact-ok
= atanh tonearest binary64 0xf.5f854c9755f9p-4 : 0x1.f4dc02d293f58p+0 : inexact-ok
= atanh towardzero binary64 0xf.5f854c9755f9p-4 : 0x1.f4dc02d293f57p+0 : inexact-ok
= atanh upward binary64 0xf.5f854c9755f9p-4 : 0x1.f4dc02d293f58p+0 : inexact-ok
= atanh downward intel96 0xf.5f854c9755f9p-4 : 0x1.f4dc02d293f57ffep+0 : inexact-ok
= atanh tonearest intel96 0xf.5f854c9755f9p-4 : 0x1.f4dc02d293f58p+0 : inexact-ok
= atanh towardzero intel96 0xf.5f854c9755f9p-4 : 0x1.f4dc02d293f57ffep+0 : inexact-ok
= atanh upward intel96 0xf.5f854c9755f9p-4 : 0x1.f4dc02d293f58p+0 : inexact-ok
= atanh downward m68k96 0xf.5f854c9755f9p-4 : 0x1.f4dc02d293f57ffep+0 : inexact-ok
= atanh tonearest m68k96 0xf.5f854c9755f9p-4 : 0x1.f4dc02d293f58p+0 : inexact-ok
= atanh towardzero m68k96 0xf.5f854c9755f9p-4 : 0x1.f4dc02d293f57ffep+0 : inexact-ok
= atanh upward m68k96 0xf.5f854c9755f9p-4 : 0x1.f4dc02d293f58p+0 : inexact-ok
= atanh downward binary128 0xf.5f854c9755f9p-4 : 0x1.f4dc02d293f57fffffffc3ab59a1p+0 : inexact-ok
= atanh tonearest binary128 0xf.5f854c9755f9p-4 : 0x1.f4dc02d293f57fffffffc3ab59a2p+0 : inexact-ok
= atanh towardzero binary128 0xf.5f854c9755f9p-4 : 0x1.f4dc02d293f57fffffffc3ab59a1p+0 : inexact-ok
= atanh upward binary128 0xf.5f854c9755f9p-4 : 0x1.f4dc02d293f57fffffffc3ab59a2p+0 : inexact-ok
= atanh downward ibm128 0xf.5f854c9755f9p-4 : 0x1.f4dc02d293f57fffffffc3ab598p+0 : inexact-ok
= atanh tonearest ibm128 0xf.5f854c9755f9p-4 : 0x1.f4dc02d293f57fffffffc3ab598p+0 : inexact-ok
= atanh towardzero ibm128 0xf.5f854c9755f9p-4 : 0x1.f4dc02d293f57fffffffc3ab598p+0 : inexact-ok
= atanh upward ibm128 0xf.5f854c9755f9p-4 : 0x1.f4dc02d293f57fffffffc3ab5ap+0 : inexact-ok
atanh 0x1.ebf0adca5e78ep-1
= atanh downward binary32 0xf.5f857p-4 : 0x1.f4dc1ep+0 : inexact-ok
= atanh tonearest binary32 0xf.5f857p-4 : 0x1.f4dc2p+0 : inexact-ok
= atanh towardzero binary32 0xf.5f857p-4 : 0x1.f4dc1ep+0 : inexact-ok
= atanh upward binary32 0xf.5f857p-4 : 0x1.f4dc2p+0 : inexact-ok
= atanh downward binary64 0xf.5f857p-4 : 0x1.f4dc1fa120d81p+0 : inexact-ok
= atanh tonearest binary64 0xf.5f857p-4 : 0x1.f4dc1fa120d81p+0 : inexact-ok
= atanh towardzero binary64 0xf.5f857p-4 : 0x1.f4dc1fa120d81p+0 : inexact-ok
= atanh upward binary64 0xf.5f857p-4 : 0x1.f4dc1fa120d82p+0 : inexact-ok
= atanh downward intel96 0xf.5f857p-4 : 0x1.f4dc1fa120d81662p+0 : inexact-ok
= atanh tonearest intel96 0xf.5f857p-4 : 0x1.f4dc1fa120d81664p+0 : inexact-ok
= atanh towardzero intel96 0xf.5f857p-4 : 0x1.f4dc1fa120d81662p+0 : inexact-ok
= atanh upward intel96 0xf.5f857p-4 : 0x1.f4dc1fa120d81664p+0 : inexact-ok
= atanh downward m68k96 0xf.5f857p-4 : 0x1.f4dc1fa120d81662p+0 : inexact-ok
= atanh tonearest m68k96 0xf.5f857p-4 : 0x1.f4dc1fa120d81664p+0 : inexact-ok
= atanh towardzero m68k96 0xf.5f857p-4 : 0x1.f4dc1fa120d81662p+0 : inexact-ok
= atanh upward m68k96 0xf.5f857p-4 : 0x1.f4dc1fa120d81664p+0 : inexact-ok
= atanh downward binary128 0xf.5f857p-4 : 0x1.f4dc1fa120d8166338913f82f52ep+0 : inexact-ok
= atanh tonearest binary128 0xf.5f857p-4 : 0x1.f4dc1fa120d8166338913f82f52ep+0 : inexact-ok
= atanh towardzero binary128 0xf.5f857p-4 : 0x1.f4dc1fa120d8166338913f82f52ep+0 : inexact-ok
= atanh upward binary128 0xf.5f857p-4 : 0x1.f4dc1fa120d8166338913f82f52fp+0 : inexact-ok
= atanh downward ibm128 0xf.5f857p-4 : 0x1.f4dc1fa120d8166338913f82f5p+0 : inexact-ok
= atanh tonearest ibm128 0xf.5f857p-4 : 0x1.f4dc1fa120d8166338913f82f5p+0 : inexact-ok
= atanh towardzero ibm128 0xf.5f857p-4 : 0x1.f4dc1fa120d8166338913f82f5p+0 : inexact-ok
= atanh upward ibm128 0xf.5f857p-4 : 0x1.f4dc1fa120d8166338913f82f58p+0 : inexact-ok
= atanh downward binary32 0xf.5f856p-4 : 0x1.f4dc12p+0 : inexact-ok
= atanh tonearest binary32 0xf.5f856p-4 : 0x1.f4dc12p+0 : inexact-ok
= atanh towardzero binary32 0xf.5f856p-4 : 0x1.f4dc12p+0 : inexact-ok
= atanh upward binary32 0xf.5f856p-4 : 0x1.f4dc14p+0 : inexact-ok
= atanh downward binary64 0xf.5f856p-4 : 0x1.f4dc129cd3e6ap+0 : inexact-ok
= atanh tonearest binary64 0xf.5f856p-4 : 0x1.f4dc129cd3e6bp+0 : inexact-ok
= atanh towardzero binary64 0xf.5f856p-4 : 0x1.f4dc129cd3e6ap+0 : inexact-ok
= atanh upward binary64 0xf.5f856p-4 : 0x1.f4dc129cd3e6bp+0 : inexact-ok
= atanh downward intel96 0xf.5f856p-4 : 0x1.f4dc129cd3e6aa7ap+0 : inexact-ok
= atanh tonearest intel96 0xf.5f856p-4 : 0x1.f4dc129cd3e6aa7cp+0 : inexact-ok
= atanh towardzero intel96 0xf.5f856p-4 : 0x1.f4dc129cd3e6aa7ap+0 : inexact-ok
= atanh upward intel96 0xf.5f856p-4 : 0x1.f4dc129cd3e6aa7cp+0 : inexact-ok
= atanh downward m68k96 0xf.5f856p-4 : 0x1.f4dc129cd3e6aa7ap+0 : inexact-ok
= atanh tonearest m68k96 0xf.5f856p-4 : 0x1.f4dc129cd3e6aa7cp+0 : inexact-ok
= atanh towardzero m68k96 0xf.5f856p-4 : 0x1.f4dc129cd3e6aa7ap+0 : inexact-ok
= atanh upward m68k96 0xf.5f856p-4 : 0x1.f4dc129cd3e6aa7cp+0 : inexact-ok
= atanh downward binary128 0xf.5f856p-4 : 0x1.f4dc129cd3e6aa7b4b5768b685b9p+0 : inexact-ok
= atanh tonearest binary128 0xf.5f856p-4 : 0x1.f4dc129cd3e6aa7b4b5768b685bap+0 : inexact-ok
= atanh towardzero binary128 0xf.5f856p-4 : 0x1.f4dc129cd3e6aa7b4b5768b685b9p+0 : inexact-ok
= atanh upward binary128 0xf.5f856p-4 : 0x1.f4dc129cd3e6aa7b4b5768b685bap+0 : inexact-ok
= atanh downward ibm128 0xf.5f856p-4 : 0x1.f4dc129cd3e6aa7b4b5768b6858p+0 : inexact-ok
= atanh tonearest ibm128 0xf.5f856p-4 : 0x1.f4dc129cd3e6aa7b4b5768b6858p+0 : inexact-ok
= atanh towardzero ibm128 0xf.5f856p-4 : 0x1.f4dc129cd3e6aa7b4b5768b6858p+0 : inexact-ok
= atanh upward ibm128 0xf.5f856p-4 : 0x1.f4dc129cd3e6aa7b4b5768b686p+0 : inexact-ok
= atanh downward binary64 0xf.5f856e52f3c7p-4 : 0x1.f4dc1e4413882p+0 : inexact-ok
= atanh tonearest binary64 0xf.5f856e52f3c7p-4 : 0x1.f4dc1e4413883p+0 : inexact-ok
= atanh towardzero binary64 0xf.5f856e52f3c7p-4 : 0x1.f4dc1e4413882p+0 : inexact-ok
= atanh upward binary64 0xf.5f856e52f3c7p-4 : 0x1.f4dc1e4413883p+0 : inexact-ok
= atanh downward intel96 0xf.5f856e52f3c7p-4 : 0x1.f4dc1e4413882ffep+0 : inexact-ok
= atanh tonearest intel96 0xf.5f856e52f3c7p-4 : 0x1.f4dc1e4413883p+0 : inexact-ok
= atanh towardzero intel96 0xf.5f856e52f3c7p-4 : 0x1.f4dc1e4413882ffep+0 : inexact-ok
= atanh upward intel96 0xf.5f856e52f3c7p-4 : 0x1.f4dc1e4413883p+0 : inexact-ok
= atanh downward m68k96 0xf.5f856e52f3c7p-4 : 0x1.f4dc1e4413882ffep+0 : inexact-ok
= atanh tonearest m68k96 0xf.5f856e52f3c7p-4 : 0x1.f4dc1e4413883p+0 : inexact-ok
= atanh towardzero m68k96 0xf.5f856e52f3c7p-4 : 0x1.f4dc1e4413882ffep+0 : inexact-ok
= atanh upward m68k96 0xf.5f856e52f3c7p-4 : 0x1.f4dc1e4413883p+0 : inexact-ok
= atanh downward binary128 0xf.5f856e52f3c7p-4 : 0x1.f4dc1e4413882ffffffe62c9f3f9p+0 : inexact-ok
= atanh tonearest binary128 0xf.5f856e52f3c7p-4 : 0x1.f4dc1e4413882ffffffe62c9f3fap+0 : inexact-ok
= atanh towardzero binary128 0xf.5f856e52f3c7p-4 : 0x1.f4dc1e4413882ffffffe62c9f3f9p+0 : inexact-ok
= atanh upward binary128 0xf.5f856e52f3c7p-4 : 0x1.f4dc1e4413882ffffffe62c9f3fap+0 : inexact-ok
= atanh downward ibm128 0xf.5f856e52f3c7p-4 : 0x1.f4dc1e4413882ffffffe62c9f38p+0 : inexact-ok
= atanh tonearest ibm128 0xf.5f856e52f3c7p-4 : 0x1.f4dc1e4413882ffffffe62c9f4p+0 : inexact-ok
= atanh towardzero ibm128 0xf.5f856e52f3c7p-4 : 0x1.f4dc1e4413882ffffffe62c9f38p+0 : inexact-ok
= atanh upward ibm128 0xf.5f856e52f3c7p-4 : 0x1.f4dc1e4413882ffffffe62c9f4p+0 : inexact-ok
atanh 0x1.ebf0afcde5f31p-1
= atanh downward binary32 0xf.5f858p-4 : 0x1.f4dc2cp+0 : inexact-ok
= atanh tonearest binary32 0xf.5f858p-4 : 0x1.f4dc2cp+0 : inexact-ok
= atanh towardzero binary32 0xf.5f858p-4 : 0x1.f4dc2cp+0 : inexact-ok
= atanh upward binary32 0xf.5f858p-4 : 0x1.f4dc2ep+0 : inexact-ok
= atanh downward binary64 0xf.5f858p-4 : 0x1.f4dc2ca56f0f1p+0 : inexact-ok
= atanh tonearest binary64 0xf.5f858p-4 : 0x1.f4dc2ca56f0f2p+0 : inexact-ok
= atanh towardzero binary64 0xf.5f858p-4 : 0x1.f4dc2ca56f0f1p+0 : inexact-ok
= atanh upward binary64 0xf.5f858p-4 : 0x1.f4dc2ca56f0f2p+0 : inexact-ok
= atanh downward intel96 0xf.5f858p-4 : 0x1.f4dc2ca56f0f1b4ep+0 : inexact-ok
= atanh tonearest intel96 0xf.5f858p-4 : 0x1.f4dc2ca56f0f1b5p+0 : inexact-ok
= atanh towardzero intel96 0xf.5f858p-4 : 0x1.f4dc2ca56f0f1b4ep+0 : inexact-ok
= atanh upward intel96 0xf.5f858p-4 : 0x1.f4dc2ca56f0f1b5p+0 : inexact-ok
= atanh downward m68k96 0xf.5f858p-4 : 0x1.f4dc2ca56f0f1b4ep+0 : inexact-ok
= atanh tonearest m68k96 0xf.5f858p-4 : 0x1.f4dc2ca56f0f1b5p+0 : inexact-ok
= atanh towardzero m68k96 0xf.5f858p-4 : 0x1.f4dc2ca56f0f1b4ep+0 : inexact-ok
= atanh upward m68k96 0xf.5f858p-4 : 0x1.f4dc2ca56f0f1b5p+0 : inexact-ok
= atanh downward binary128 0xf.5f858p-4 : 0x1.f4dc2ca56f0f1b4f6d01ab46b07fp+0 : inexact-ok
= atanh tonearest binary128 0xf.5f858p-4 : 0x1.f4dc2ca56f0f1b4f6d01ab46b07fp+0 : inexact-ok
= atanh towardzero binary128 0xf.5f858p-4 : 0x1.f4dc2ca56f0f1b4f6d01ab46b07fp+0 : inexact-ok
= atanh upward binary128 0xf.5f858p-4 : 0x1.f4dc2ca56f0f1b4f6d01ab46b08p+0 : inexact-ok
= atanh downward ibm128 0xf.5f858p-4 : 0x1.f4dc2ca56f0f1b4f6d01ab46bp+0 : inexact-ok
= atanh tonearest ibm128 0xf.5f858p-4 : 0x1.f4dc2ca56f0f1b4f6d01ab46b08p+0 : inexact-ok
= atanh towardzero ibm128 0xf.5f858p-4 : 0x1.f4dc2ca56f0f1b4f6d01ab46bp+0 : inexact-ok
= atanh upward ibm128 0xf.5f858p-4 : 0x1.f4dc2ca56f0f1b4f6d01ab46b08p+0 : inexact-ok
= atanh downward binary32 0xf.5f857p-4 : 0x1.f4dc1ep+0 : inexact-ok
= atanh tonearest binary32 0xf.5f857p-4 : 0x1.f4dc2p+0 : inexact-ok
= atanh towardzero binary32 0xf.5f857p-4 : 0x1.f4dc1ep+0 : inexact-ok
= atanh upward binary32 0xf.5f857p-4 : 0x1.f4dc2p+0 : inexact-ok
= atanh downward binary64 0xf.5f857p-4 : 0x1.f4dc1fa120d81p+0 : inexact-ok
= atanh tonearest binary64 0xf.5f857p-4 : 0x1.f4dc1fa120d81p+0 : inexact-ok
= atanh towardzero binary64 0xf.5f857p-4 : 0x1.f4dc1fa120d81p+0 : inexact-ok
= atanh upward binary64 0xf.5f857p-4 : 0x1.f4dc1fa120d82p+0 : inexact-ok
= atanh downward intel96 0xf.5f857p-4 : 0x1.f4dc1fa120d81662p+0 : inexact-ok
= atanh tonearest intel96 0xf.5f857p-4 : 0x1.f4dc1fa120d81664p+0 : inexact-ok
= atanh towardzero intel96 0xf.5f857p-4 : 0x1.f4dc1fa120d81662p+0 : inexact-ok
= atanh upward intel96 0xf.5f857p-4 : 0x1.f4dc1fa120d81664p+0 : inexact-ok
= atanh downward m68k96 0xf.5f857p-4 : 0x1.f4dc1fa120d81662p+0 : inexact-ok
= atanh tonearest m68k96 0xf.5f857p-4 : 0x1.f4dc1fa120d81664p+0 : inexact-ok
= atanh towardzero m68k96 0xf.5f857p-4 : 0x1.f4dc1fa120d81662p+0 : inexact-ok
= atanh upward m68k96 0xf.5f857p-4 : 0x1.f4dc1fa120d81664p+0 : inexact-ok
= atanh downward binary128 0xf.5f857p-4 : 0x1.f4dc1fa120d8166338913f82f52ep+0 : inexact-ok
= atanh tonearest binary128 0xf.5f857p-4 : 0x1.f4dc1fa120d8166338913f82f52ep+0 : inexact-ok
= atanh towardzero binary128 0xf.5f857p-4 : 0x1.f4dc1fa120d8166338913f82f52ep+0 : inexact-ok
= atanh upward binary128 0xf.5f857p-4 : 0x1.f4dc1fa120d8166338913f82f52fp+0 : inexact-ok
= atanh downward ibm128 0xf.5f857p-4 : 0x1.f4dc1fa120d8166338913f82f5p+0 : inexact-ok
= atanh tonearest ibm128 0xf.5f857p-4 : 0x1.f4dc1fa120d8166338913f82f5p+0 : inexact-ok
= atanh towardzero ibm128 0xf.5f857p-4 : 0x1.f4dc1fa120d8166338913f82f5p+0 : inexact-ok
= atanh upward ibm128 0xf.5f857p-4 : 0x1.f4dc1fa120d8166338913f82f58p+0 : inexact-ok
= atanh downward binary64 0xf.5f857e6f2f988p-4 : 0x1.f4dc2b5f59d12p+0 : inexact-ok
= atanh tonearest binary64 0xf.5f857e6f2f988p-4 : 0x1.f4dc2b5f59d13p+0 : inexact-ok
= atanh towardzero binary64 0xf.5f857e6f2f988p-4 : 0x1.f4dc2b5f59d12p+0 : inexact-ok
= atanh upward binary64 0xf.5f857e6f2f988p-4 : 0x1.f4dc2b5f59d13p+0 : inexact-ok
= atanh downward intel96 0xf.5f857e6f2f988p-4 : 0x1.f4dc2b5f59d12ffep+0 : inexact-ok
= atanh tonearest intel96 0xf.5f857e6f2f988p-4 : 0x1.f4dc2b5f59d13p+0 : inexact-ok
= atanh towardzero intel96 0xf.5f857e6f2f988p-4 : 0x1.f4dc2b5f59d12ffep+0 : inexact-ok
= atanh upward intel96 0xf.5f857e6f2f988p-4 : 0x1.f4dc2b5f59d13p+0 : inexact-ok
= atanh downward m68k96 0xf.5f857e6f2f988p-4 : 0x1.f4dc2b5f59d12ffep+0 : inexact-ok
= atanh tonearest m68k96 0xf.5f857e6f2f988p-4 : 0x1.f4dc2b5f59d13p+0 : inexact-ok
= atanh towardzero m68k96 0xf.5f857e6f2f988p-4 : 0x1.f4dc2b5f59d12ffep+0 : inexact-ok
= atanh upward m68k96 0xf.5f857e6f2f988p-4 : 0x1.f4dc2b5f59d13p+0 : inexact-ok
= atanh downward binary128 0xf.5f857e6f2f988p-4 : 0x1.f4dc2b5f59d12fffffff888d77b7p+0 : inexact-ok
= atanh tonearest binary128 0xf.5f857e6f2f988p-4 : 0x1.f4dc2b5f59d12fffffff888d77b8p+0 : inexact-ok
= atanh towardzero binary128 0xf.5f857e6f2f988p-4 : 0x1.f4dc2b5f59d12fffffff888d77b7p+0 : inexact-ok
= atanh upward binary128 0xf.5f857e6f2f988p-4 : 0x1.f4dc2b5f59d12fffffff888d77b8p+0 : inexact-ok
= atanh downward ibm128 0xf.5f857e6f2f988p-4 : 0x1.f4dc2b5f59d12fffffff888d778p+0 : inexact-ok
= atanh tonearest ibm128 0xf.5f857e6f2f988p-4 : 0x1.f4dc2b5f59d12fffffff888d778p+0 : inexact-ok
= atanh towardzero ibm128 0xf.5f857e6f2f988p-4 : 0x1.f4dc2b5f59d12fffffff888d778p+0 : inexact-ok
= atanh upward ibm128 0xf.5f857e6f2f988p-4 : 0x1.f4dc2b5f59d12fffffff888d78p+0 : inexact-ok
atanh 0x1.ebf0b78af8d51p-1
= atanh downward binary32 0xf.5f85cp-4 : 0x1.f4dc6p+0 : inexact-ok
= atanh tonearest binary32 0xf.5f85cp-4 : 0x1.f4dc6p+0 : inexact-ok
= atanh towardzero binary32 0xf.5f85cp-4 : 0x1.f4dc6p+0 : inexact-ok
= atanh upward binary32 0xf.5f85cp-4 : 0x1.f4dc62p+0 : inexact-ok
= atanh downward binary64 0xf.5f85cp-4 : 0x1.f4dc60b6b4a32p+0 : inexact-ok
= atanh tonearest binary64 0xf.5f85cp-4 : 0x1.f4dc60b6b4a33p+0 : inexact-ok
= atanh towardzero binary64 0xf.5f85cp-4 : 0x1.f4dc60b6b4a32p+0 : inexact-ok
= atanh upward binary64 0xf.5f85cp-4 : 0x1.f4dc60b6b4a33p+0 : inexact-ok
= atanh downward intel96 0xf.5f85cp-4 : 0x1.f4dc60b6b4a32e3ep+0 : inexact-ok
= atanh tonearest intel96 0xf.5f85cp-4 : 0x1.f4dc60b6b4a32e3ep+0 : inexact-ok
= atanh towardzero intel96 0xf.5f85cp-4 : 0x1.f4dc60b6b4a32e3ep+0 : inexact-ok
= atanh upward intel96 0xf.5f85cp-4 : 0x1.f4dc60b6b4a32e4p+0 : inexact-ok
= atanh downward m68k96 0xf.5f85cp-4 : 0x1.f4dc60b6b4a32e3ep+0 : inexact-ok
= atanh tonearest m68k96 0xf.5f85cp-4 : 0x1.f4dc60b6b4a32e3ep+0 : inexact-ok
= atanh towardzero m68k96 0xf.5f85cp-4 : 0x1.f4dc60b6b4a32e3ep+0 : inexact-ok
= atanh upward m68k96 0xf.5f85cp-4 : 0x1.f4dc60b6b4a32e4p+0 : inexact-ok
= atanh downward binary128 0xf.5f85cp-4 : 0x1.f4dc60b6b4a32e3e119b0caf3433p+0 : inexact-ok
= atanh tonearest binary128 0xf.5f85cp-4 : 0x1.f4dc60b6b4a32e3e119b0caf3434p+0 : inexact-ok
= atanh towardzero binary128 0xf.5f85cp-4 : 0x1.f4dc60b6b4a32e3e119b0caf3433p+0 : inexact-ok
= atanh upward binary128 0xf.5f85cp-4 : 0x1.f4dc60b6b4a32e3e119b0caf3434p+0 : inexact-ok
= atanh downward ibm128 0xf.5f85cp-4 : 0x1.f4dc60b6b4a32e3e119b0caf34p+0 : inexact-ok
= atanh tonearest ibm128 0xf.5f85cp-4 : 0x1.f4dc60b6b4a32e3e119b0caf34p+0 : inexact-ok
= atanh towardzero ibm128 0xf.5f85cp-4 : 0x1.f4dc60b6b4a32e3e119b0caf34p+0 : inexact-ok
= atanh upward ibm128 0xf.5f85cp-4 : 0x1.f4dc60b6b4a32e3e119b0caf348p+0 : inexact-ok
= atanh downward binary32 0xf.5f85bp-4 : 0x1.f4dc52p+0 : inexact-ok
= atanh tonearest binary32 0xf.5f85bp-4 : 0x1.f4dc54p+0 : inexact-ok
= atanh towardzero binary32 0xf.5f85bp-4 : 0x1.f4dc52p+0 : inexact-ok
= atanh upward binary32 0xf.5f85bp-4 : 0x1.f4dc54p+0 : inexact-ok
= atanh downward binary64 0xf.5f85bp-4 : 0x1.f4dc53b26155cp+0 : inexact-ok
= atanh tonearest binary64 0xf.5f85bp-4 : 0x1.f4dc53b26155cp+0 : inexact-ok
= atanh towardzero binary64 0xf.5f85bp-4 : 0x1.f4dc53b26155cp+0 : inexact-ok
= atanh upward binary64 0xf.5f85bp-4 : 0x1.f4dc53b26155dp+0 : inexact-ok
= atanh downward intel96 0xf.5f85bp-4 : 0x1.f4dc53b26155c2b6p+0 : inexact-ok
= atanh tonearest intel96 0xf.5f85bp-4 : 0x1.f4dc53b26155c2b8p+0 : inexact-ok
= atanh towardzero intel96 0xf.5f85bp-4 : 0x1.f4dc53b26155c2b6p+0 : inexact-ok
= atanh upward intel96 0xf.5f85bp-4 : 0x1.f4dc53b26155c2b8p+0 : inexact-ok
= atanh downward m68k96 0xf.5f85bp-4 : 0x1.f4dc53b26155c2b6p+0 : inexact-ok
= atanh tonearest m68k96 0xf.5f85bp-4 : 0x1.f4dc53b26155c2b8p+0 : inexact-ok
= atanh towardzero m68k96 0xf.5f85bp-4 : 0x1.f4dc53b26155c2b6p+0 : inexact-ok
= atanh upward m68k96 0xf.5f85bp-4 : 0x1.f4dc53b26155c2b8p+0 : inexact-ok
= atanh downward binary128 0xf.5f85bp-4 : 0x1.f4dc53b26155c2b73ac4cb2646ddp+0 : inexact-ok
= atanh tonearest binary128 0xf.5f85bp-4 : 0x1.f4dc53b26155c2b73ac4cb2646dep+0 : inexact-ok
= atanh towardzero binary128 0xf.5f85bp-4 : 0x1.f4dc53b26155c2b73ac4cb2646ddp+0 : inexact-ok
= atanh upward binary128 0xf.5f85bp-4 : 0x1.f4dc53b26155c2b73ac4cb2646dep+0 : inexact-ok
= atanh downward ibm128 0xf.5f85bp-4 : 0x1.f4dc53b26155c2b73ac4cb26468p+0 : inexact-ok
= atanh tonearest ibm128 0xf.5f85bp-4 : 0x1.f4dc53b26155c2b73ac4cb2647p+0 : inexact-ok
= atanh towardzero ibm128 0xf.5f85bp-4 : 0x1.f4dc53b26155c2b73ac4cb26468p+0 : inexact-ok
= atanh upward ibm128 0xf.5f85bp-4 : 0x1.f4dc53b26155c2b73ac4cb2647p+0 : inexact-ok
= atanh downward binary64 0xf.5f85bc57c6a88p-4 : 0x1.f4dc5dbd08d6ap+0 : inexact-ok
= atanh tonearest binary64 0xf.5f85bc57c6a88p-4 : 0x1.f4dc5dbd08d6bp+0 : inexact-ok
= atanh towardzero binary64 0xf.5f85bc57c6a88p-4 : 0x1.f4dc5dbd08d6ap+0 : inexact-ok
= atanh upward binary64 0xf.5f85bc57c6a88p-4 : 0x1.f4dc5dbd08d6bp+0 : inexact-ok
= atanh downward intel96 0xf.5f85bc57c6a88p-4 : 0x1.f4dc5dbd08d6affep+0 : inexact-ok
= atanh tonearest intel96 0xf.5f85bc57c6a88p-4 : 0x1.f4dc5dbd08d6bp+0 : inexact-ok
= atanh towardzero intel96 0xf.5f85bc57c6a88p-4 : 0x1.f4dc5dbd08d6affep+0 : inexact-ok
= atanh upward intel96 0xf.5f85bc57c6a88p-4 : 0x1.f4dc5dbd08d6bp+0 : inexact-ok
= atanh downward m68k96 0xf.5f85bc57c6a88p-4 : 0x1.f4dc5dbd08d6affep+0 : inexact-ok
= atanh tonearest m68k96 0xf.5f85bc57c6a88p-4 : 0x1.f4dc5dbd08d6bp+0 : inexact-ok
= atanh towardzero m68k96 0xf.5f85bc57c6a88p-4 : 0x1.f4dc5dbd08d6affep+0 : inexact-ok
= atanh upward m68k96 0xf.5f85bc57c6a88p-4 : 0x1.f4dc5dbd08d6bp+0 : inexact-ok
= atanh downward binary128 0xf.5f85bc57c6a88p-4 : 0x1.f4dc5dbd08d6afffffff4f5cba29p+0 : inexact-ok
= atanh tonearest binary128 0xf.5f85bc57c6a88p-4 : 0x1.f4dc5dbd08d6afffffff4f5cba2ap+0 : inexact-ok
= atanh towardzero binary128 0xf.5f85bc57c6a88p-4 : 0x1.f4dc5dbd08d6afffffff4f5cba29p+0 : inexact-ok
= atanh upward binary128 0xf.5f85bc57c6a88p-4 : 0x1.f4dc5dbd08d6afffffff4f5cba2ap+0 : inexact-ok
= atanh downward ibm128 0xf.5f85bc57c6a88p-4 : 0x1.f4dc5dbd08d6afffffff4f5cbap+0 : inexact-ok
= atanh tonearest ibm128 0xf.5f85bc57c6a88p-4 : 0x1.f4dc5dbd08d6afffffff4f5cbap+0 : inexact-ok
= atanh towardzero ibm128 0xf.5f85bc57c6a88p-4 : 0x1.f4dc5dbd08d6afffffff4f5cbap+0 : inexact-ok
= atanh upward ibm128 0xf.5f85bc57c6a88p-4 : 0x1.f4dc5dbd08d6afffffff4f5cba8p+0 : inexact-ok
atanh 0x1.ebf0bdc2afd4p-1
= atanh downward binary32 0xf.5f85fp-4 : 0x1.f4dc86p+0 : inexact-ok
= atanh tonearest binary32 0xf.5f85fp-4 : 0x1.f4dc88p+0 : inexact-ok
= atanh towardzero binary32 0xf.5f85fp-4 : 0x1.f4dc86p+0 : inexact-ok
= atanh upward binary32 0xf.5f85fp-4 : 0x1.f4dc88p+0 : inexact-ok
= atanh downward binary64 0xf.5f85fp-4 : 0x1.f4dc87c3b62dp+0 : inexact-ok
= atanh tonearest binary64 0xf.5f85fp-4 : 0x1.f4dc87c3b62d1p+0 : inexact-ok
= atanh towardzero binary64 0xf.5f85fp-4 : 0x1.f4dc87c3b62dp+0 : inexact-ok
= atanh upward binary64 0xf.5f85fp-4 : 0x1.f4dc87c3b62d1p+0 : inexact-ok
= atanh downward intel96 0xf.5f85fp-4 : 0x1.f4dc87c3b62d0f8cp+0 : inexact-ok
= atanh tonearest intel96 0xf.5f85fp-4 : 0x1.f4dc87c3b62d0f8cp+0 : inexact-ok
= atanh towardzero intel96 0xf.5f85fp-4 : 0x1.f4dc87c3b62d0f8cp+0 : inexact-ok
= atanh upward intel96 0xf.5f85fp-4 : 0x1.f4dc87c3b62d0f8ep+0 : inexact-ok
= atanh downward m68k96 0xf.5f85fp-4 : 0x1.f4dc87c3b62d0f8cp+0 : inexact-ok
= atanh tonearest m68k96 0xf.5f85fp-4 : 0x1.f4dc87c3b62d0f8cp+0 : inexact-ok
= atanh towardzero m68k96 0xf.5f85fp-4 : 0x1.f4dc87c3b62d0f8cp+0 : inexact-ok
= atanh upward m68k96 0xf.5f85fp-4 : 0x1.f4dc87c3b62d0f8ep+0 : inexact-ok
= atanh downward binary128 0xf.5f85fp-4 : 0x1.f4dc87c3b62d0f8ca49d87a502c3p+0 : inexact-ok
= atanh tonearest binary128 0xf.5f85fp-4 : 0x1.f4dc87c3b62d0f8ca49d87a502c3p+0 : inexact-ok
= atanh towardzero binary128 0xf.5f85fp-4 : 0x1.f4dc87c3b62d0f8ca49d87a502c3p+0 : inexact-ok
= atanh upward binary128 0xf.5f85fp-4 : 0x1.f4dc87c3b62d0f8ca49d87a502c4p+0 : inexact-ok
= atanh downward ibm128 0xf.5f85fp-4 : 0x1.f4dc87c3b62d0f8ca49d87a5028p+0 : inexact-ok
= atanh tonearest ibm128 0xf.5f85fp-4 : 0x1.f4dc87c3b62d0f8ca49d87a503p+0 : inexact-ok
= atanh towardzero ibm128 0xf.5f85fp-4 : 0x1.f4dc87c3b62d0f8ca49d87a5028p+0 : inexact-ok
= atanh upward ibm128 0xf.5f85fp-4 : 0x1.f4dc87c3b62d0f8ca49d87a503p+0 : inexact-ok
= atanh downward binary32 0xf.5f85ep-4 : 0x1.f4dc7ap+0 : inexact-ok
= atanh tonearest binary32 0xf.5f85ep-4 : 0x1.f4dc7ap+0 : inexact-ok
= atanh towardzero binary32 0xf.5f85ep-4 : 0x1.f4dc7ap+0 : inexact-ok
= atanh upward binary32 0xf.5f85ep-4 : 0x1.f4dc7cp+0 : inexact-ok
= atanh downward binary64 0xf.5f85ep-4 : 0x1.f4dc7abf5f0edp+0 : inexact-ok
= atanh tonearest binary64 0xf.5f85ep-4 : 0x1.f4dc7abf5f0edp+0 : inexact-ok
= atanh towardzero binary64 0xf.5f85ep-4 : 0x1.f4dc7abf5f0edp+0 : inexact-ok
= atanh upward binary64 0xf.5f85ep-4 : 0x1.f4dc7abf5f0eep+0 : inexact-ok
= atanh downward intel96 0xf.5f85ep-4 : 0x1.f4dc7abf5f0ed466p+0 : inexact-ok
= atanh tonearest intel96 0xf.5f85ep-4 : 0x1.f4dc7abf5f0ed468p+0 : inexact-ok
= atanh towardzero intel96 0xf.5f85ep-4 : 0x1.f4dc7abf5f0ed466p+0 : inexact-ok
= atanh upward intel96 0xf.5f85ep-4 : 0x1.f4dc7abf5f0ed468p+0 : inexact-ok
= atanh downward m68k96 0xf.5f85ep-4 : 0x1.f4dc7abf5f0ed466p+0 : inexact-ok
= atanh tonearest m68k96 0xf.5f85ep-4 : 0x1.f4dc7abf5f0ed468p+0 : inexact-ok
= atanh towardzero m68k96 0xf.5f85ep-4 : 0x1.f4dc7abf5f0ed466p+0 : inexact-ok
= atanh upward m68k96 0xf.5f85ep-4 : 0x1.f4dc7abf5f0ed468p+0 : inexact-ok
= atanh downward binary128 0xf.5f85ep-4 : 0x1.f4dc7abf5f0ed467d26ed7ad3b39p+0 : inexact-ok
= atanh tonearest binary128 0xf.5f85ep-4 : 0x1.f4dc7abf5f0ed467d26ed7ad3b3ap+0 : inexact-ok
= atanh towardzero binary128 0xf.5f85ep-4 : 0x1.f4dc7abf5f0ed467d26ed7ad3b39p+0 : inexact-ok
= atanh upward binary128 0xf.5f85ep-4 : 0x1.f4dc7abf5f0ed467d26ed7ad3b3ap+0 : inexact-ok
= atanh downward ibm128 0xf.5f85ep-4 : 0x1.f4dc7abf5f0ed467d26ed7ad3bp+0 : inexact-ok
= atanh tonearest ibm128 0xf.5f85ep-4 : 0x1.f4dc7abf5f0ed467d26ed7ad3bp+0 : inexact-ok
= atanh towardzero ibm128 0xf.5f85ep-4 : 0x1.f4dc7abf5f0ed467d26ed7ad3bp+0 : inexact-ok
= atanh upward ibm128 0xf.5f85ep-4 : 0x1.f4dc7abf5f0ed467d26ed7ad3b8p+0 : inexact-ok
= atanh downward binary64 0xf.5f85ee157eap-4 : 0x1.f4dc8634a7eecp+0 : inexact-ok
= atanh tonearest binary64 0xf.5f85ee157eap-4 : 0x1.f4dc8634a7eedp+0 : inexact-ok
= atanh towardzero binary64 0xf.5f85ee157eap-4 : 0x1.f4dc8634a7eecp+0 : inexact-ok
= atanh upward binary64 0xf.5f85ee157eap-4 : 0x1.f4dc8634a7eedp+0 : inexact-ok
= atanh downward intel96 0xf.5f85ee157eap-4 : 0x1.f4dc8634a7eecffep+0 : inexact-ok
= atanh tonearest intel96 0xf.5f85ee157eap-4 : 0x1.f4dc8634a7eedp+0 : inexact-ok
= atanh towardzero intel96 0xf.5f85ee157eap-4 : 0x1.f4dc8634a7eecffep+0 : inexact-ok
= atanh upward intel96 0xf.5f85ee157eap-4 : 0x1.f4dc8634a7eedp+0 : inexact-ok
= atanh downward m68k96 0xf.5f85ee157eap-4 : 0x1.f4dc8634a7eecffep+0 : inexact-ok
= atanh tonearest m68k96 0xf.5f85ee157eap-4 : 0x1.f4dc8634a7eedp+0 : inexact-ok
= atanh towardzero m68k96 0xf.5f85ee157eap-4 : 0x1.f4dc8634a7eecffep+0 : inexact-ok
= atanh upward m68k96 0xf.5f85ee157eap-4 : 0x1.f4dc8634a7eedp+0 : inexact-ok
= atanh downward binary128 0xf.5f85ee157eap-4 : 0x1.f4dc8634a7eecfffffff76818b21p+0 : inexact-ok
= atanh tonearest binary128 0xf.5f85ee157eap-4 : 0x1.f4dc8634a7eecfffffff76818b22p+0 : inexact-ok
= atanh towardzero binary128 0xf.5f85ee157eap-4 : 0x1.f4dc8634a7eecfffffff76818b21p+0 : inexact-ok
= atanh upward binary128 0xf.5f85ee157eap-4 : 0x1.f4dc8634a7eecfffffff76818b22p+0 : inexact-ok
= atanh downward ibm128 0xf.5f85ee157eap-4 : 0x1.f4dc8634a7eecfffffff76818bp+0 : inexact-ok
= atanh tonearest ibm128 0xf.5f85ee157eap-4 : 0x1.f4dc8634a7eecfffffff76818bp+0 : inexact-ok
= atanh towardzero ibm128 0xf.5f85ee157eap-4 : 0x1.f4dc8634a7eecfffffff76818bp+0 : inexact-ok
= atanh upward ibm128 0xf.5f85ee157eap-4 : 0x1.f4dc8634a7eecfffffff76818b8p+0 : inexact-ok
atanh 0x1.ebf0bfefa727dp-1
= atanh downward binary32 0xf.5f86p-4 : 0x1.f4dc94p+0 : inexact-ok
= atanh tonearest binary32 0xf.5f86p-4 : 0x1.f4dc94p+0 : inexact-ok
= atanh towardzero binary32 0xf.5f86p-4 : 0x1.f4dc94p+0 : inexact-ok
= atanh upward binary32 0xf.5f86p-4 : 0x1.f4dc96p+0 : inexact-ok
= atanh downward binary64 0xf.5f86p-4 : 0x1.f4dc94c80e90ep+0 : inexact-ok
= atanh tonearest binary64 0xf.5f86p-4 : 0x1.f4dc94c80e90ep+0 : inexact-ok
= atanh towardzero binary64 0xf.5f86p-4 : 0x1.f4dc94c80e90ep+0 : inexact-ok
= atanh upward binary64 0xf.5f86p-4 : 0x1.f4dc94c80e90fp+0 : inexact-ok
= atanh downward intel96 0xf.5f86p-4 : 0x1.f4dc94c80e90e5bcp+0 : inexact-ok
= atanh tonearest intel96 0xf.5f86p-4 : 0x1.f4dc94c80e90e5bep+0 : inexact-ok
= atanh towardzero intel96 0xf.5f86p-4 : 0x1.f4dc94c80e90e5bcp+0 : inexact-ok
= atanh upward intel96 0xf.5f86p-4 : 0x1.f4dc94c80e90e5bep+0 : inexact-ok
= atanh downward m68k96 0xf.5f86p-4 : 0x1.f4dc94c80e90e5bcp+0 : inexact-ok
= atanh tonearest m68k96 0xf.5f86p-4 : 0x1.f4dc94c80e90e5bep+0 : inexact-ok
= atanh towardzero m68k96 0xf.5f86p-4 : 0x1.f4dc94c80e90e5bcp+0 : inexact-ok
= atanh upward m68k96 0xf.5f86p-4 : 0x1.f4dc94c80e90e5bep+0 : inexact-ok
= atanh downward binary128 0xf.5f86p-4 : 0x1.f4dc94c80e90e5bd5d908ee233ccp+0 : inexact-ok
= atanh tonearest binary128 0xf.5f86p-4 : 0x1.f4dc94c80e90e5bd5d908ee233ccp+0 : inexact-ok
= atanh towardzero binary128 0xf.5f86p-4 : 0x1.f4dc94c80e90e5bd5d908ee233ccp+0 : inexact-ok
= atanh upward binary128 0xf.5f86p-4 : 0x1.f4dc94c80e90e5bd5d908ee233cdp+0 : inexact-ok
= atanh downward ibm128 0xf.5f86p-4 : 0x1.f4dc94c80e90e5bd5d908ee2338p+0 : inexact-ok
= atanh tonearest ibm128 0xf.5f86p-4 : 0x1.f4dc94c80e90e5bd5d908ee234p+0 : inexact-ok
= atanh towardzero ibm128 0xf.5f86p-4 : 0x1.f4dc94c80e90e5bd5d908ee2338p+0 : inexact-ok
= atanh upward ibm128 0xf.5f86p-4 : 0x1.f4dc94c80e90e5bd5d908ee234p+0 : inexact-ok
= atanh downward binary32 0xf.5f85fp-4 : 0x1.f4dc86p+0 : inexact-ok
= atanh tonearest binary32 0xf.5f85fp-4 : 0x1.f4dc88p+0 : inexact-ok
= atanh towardzero binary32 0xf.5f85fp-4 : 0x1.f4dc86p+0 : inexact-ok
= atanh upward binary32 0xf.5f85fp-4 : 0x1.f4dc88p+0 : inexact-ok
= atanh downward binary64 0xf.5f85fp-4 : 0x1.f4dc87c3b62dp+0 : inexact-ok
= atanh tonearest binary64 0xf.5f85fp-4 : 0x1.f4dc87c3b62d1p+0 : inexact-ok
= atanh towardzero binary64 0xf.5f85fp-4 : 0x1.f4dc87c3b62dp+0 : inexact-ok
= atanh upward binary64 0xf.5f85fp-4 : 0x1.f4dc87c3b62d1p+0 : inexact-ok
= atanh downward intel96 0xf.5f85fp-4 : 0x1.f4dc87c3b62d0f8cp+0 : inexact-ok
= atanh tonearest intel96 0xf.5f85fp-4 : 0x1.f4dc87c3b62d0f8cp+0 : inexact-ok
= atanh towardzero intel96 0xf.5f85fp-4 : 0x1.f4dc87c3b62d0f8cp+0 : inexact-ok
= atanh upward intel96 0xf.5f85fp-4 : 0x1.f4dc87c3b62d0f8ep+0 : inexact-ok
= atanh downward m68k96 0xf.5f85fp-4 : 0x1.f4dc87c3b62d0f8cp+0 : inexact-ok
= atanh tonearest m68k96 0xf.5f85fp-4 : 0x1.f4dc87c3b62d0f8cp+0 : inexact-ok
= atanh towardzero m68k96 0xf.5f85fp-4 : 0x1.f4dc87c3b62d0f8cp+0 : inexact-ok
= atanh upward m68k96 0xf.5f85fp-4 : 0x1.f4dc87c3b62d0f8ep+0 : inexact-ok
= atanh downward binary128 0xf.5f85fp-4 : 0x1.f4dc87c3b62d0f8ca49d87a502c3p+0 : inexact-ok
= atanh tonearest binary128 0xf.5f85fp-4 : 0x1.f4dc87c3b62d0f8ca49d87a502c3p+0 : inexact-ok
= atanh towardzero binary128 0xf.5f85fp-4 : 0x1.f4dc87c3b62d0f8ca49d87a502c3p+0 : inexact-ok
= atanh upward binary128 0xf.5f85fp-4 : 0x1.f4dc87c3b62d0f8ca49d87a502c4p+0 : inexact-ok
= atanh downward ibm128 0xf.5f85fp-4 : 0x1.f4dc87c3b62d0f8ca49d87a5028p+0 : inexact-ok
= atanh tonearest ibm128 0xf.5f85fp-4 : 0x1.f4dc87c3b62d0f8ca49d87a503p+0 : inexact-ok
= atanh towardzero ibm128 0xf.5f85fp-4 : 0x1.f4dc87c3b62d0f8ca49d87a5028p+0 : inexact-ok
= atanh upward ibm128 0xf.5f85fp-4 : 0x1.f4dc87c3b62d0f8ca49d87a503p+0 : inexact-ok
= atanh downward binary64 0xf.5f85ff7d393e8p-4 : 0x1.f4dc945da98a7p+0 : inexact-ok
= atanh tonearest binary64 0xf.5f85ff7d393e8p-4 : 0x1.f4dc945da98a8p+0 : inexact-ok
= atanh towardzero binary64 0xf.5f85ff7d393e8p-4 : 0x1.f4dc945da98a7p+0 : inexact-ok
= atanh upward binary64 0xf.5f85ff7d393e8p-4 : 0x1.f4dc945da98a8p+0 : inexact-ok
= atanh downward intel96 0xf.5f85ff7d393e8p-4 : 0x1.f4dc945da98a7ffep+0 : inexact-ok
= atanh tonearest intel96 0xf.5f85ff7d393e8p-4 : 0x1.f4dc945da98a8p+0 : inexact-ok
= atanh towardzero intel96 0xf.5f85ff7d393e8p-4 : 0x1.f4dc945da98a7ffep+0 : inexact-ok
= atanh upward intel96 0xf.5f85ff7d393e8p-4 : 0x1.f4dc945da98a8p+0 : inexact-ok
= atanh downward m68k96 0xf.5f85ff7d393e8p-4 : 0x1.f4dc945da98a7ffep+0 : inexact-ok
= atanh tonearest m68k96 0xf.5f85ff7d393e8p-4 : 0x1.f4dc945da98a8p+0 : inexact-ok
= atanh towardzero m68k96 0xf.5f85ff7d393e8p-4 : 0x1.f4dc945da98a7ffep+0 : inexact-ok
= atanh upward m68k96 0xf.5f85ff7d393e8p-4 : 0x1.f4dc945da98a8p+0 : inexact-ok
= atanh downward binary128 0xf.5f85ff7d393e8p-4 : 0x1.f4dc945da98a7fffffffe6127505p+0 : inexact-ok
= atanh tonearest binary128 0xf.5f85ff7d393e8p-4 : 0x1.f4dc945da98a7fffffffe6127505p+0 : inexact-ok
= atanh towardzero binary128 0xf.5f85ff7d393e8p-4 : 0x1.f4dc945da98a7fffffffe6127505p+0 : inexact-ok
= atanh upward binary128 0xf.5f85ff7d393e8p-4 : 0x1.f4dc945da98a7fffffffe6127506p+0 : inexact-ok
= atanh downward ibm128 0xf.5f85ff7d393e8p-4 : 0x1.f4dc945da98a7fffffffe61275p+0 : inexact-ok
= atanh tonearest ibm128 0xf.5f85ff7d393e8p-4 : 0x1.f4dc945da98a7fffffffe61275p+0 : inexact-ok
= atanh towardzero ibm128 0xf.5f85ff7d393e8p-4 : 0x1.f4dc945da98a7fffffffe61275p+0 : inexact-ok
= atanh upward ibm128 0xf.5f85ff7d393e8p-4 : 0x1.f4dc945da98a7fffffffe612758p+0 : inexact-ok
atanh 0x1.f5deed6e671a1p-1
= atanh downward binary32 0xf.aef77p-4 : 0x2.4d9504p+0 : inexact-ok
= atanh tonearest binary32 0xf.aef77p-4 : 0x2.4d9504p+0 : inexact-ok
= atanh towardzero binary32 0xf.aef77p-4 : 0x2.4d9504p+0 : inexact-ok
= atanh upward binary32 0xf.aef77p-4 : 0x2.4d9508p+0 : inexact-ok
= atanh downward binary64 0xf.aef77p-4 : 0x2.4d9505e4c948ep+0 : inexact-ok
= atanh tonearest binary64 0xf.aef77p-4 : 0x2.4d9505e4c949p+0 : inexact-ok
= atanh towardzero binary64 0xf.aef77p-4 : 0x2.4d9505e4c948ep+0 : inexact-ok
= atanh upward binary64 0xf.aef77p-4 : 0x2.4d9505e4c949p+0 : inexact-ok
= atanh downward intel96 0xf.aef77p-4 : 0x2.4d9505e4c948f7fp+0 : inexact-ok
= atanh tonearest intel96 0xf.aef77p-4 : 0x2.4d9505e4c948f7f4p+0 : inexact-ok
= atanh towardzero intel96 0xf.aef77p-4 : 0x2.4d9505e4c948f7fp+0 : inexact-ok
= atanh upward intel96 0xf.aef77p-4 : 0x2.4d9505e4c948f7f4p+0 : inexact-ok
= atanh downward m68k96 0xf.aef77p-4 : 0x2.4d9505e4c948f7fp+0 : inexact-ok
= atanh tonearest m68k96 0xf.aef77p-4 : 0x2.4d9505e4c948f7f4p+0 : inexact-ok
= atanh towardzero m68k96 0xf.aef77p-4 : 0x2.4d9505e4c948f7fp+0 : inexact-ok
= atanh upward m68k96 0xf.aef77p-4 : 0x2.4d9505e4c948f7f4p+0 : inexact-ok
= atanh downward binary128 0xf.aef77p-4 : 0x2.4d9505e4c948f7f2088bcb1ed89ap+0 : inexact-ok
= atanh tonearest binary128 0xf.aef77p-4 : 0x2.4d9505e4c948f7f2088bcb1ed89cp+0 : inexact-ok
= atanh towardzero binary128 0xf.aef77p-4 : 0x2.4d9505e4c948f7f2088bcb1ed89ap+0 : inexact-ok
= atanh upward binary128 0xf.aef77p-4 : 0x2.4d9505e4c948f7f2088bcb1ed89cp+0 : inexact-ok
= atanh downward ibm128 0xf.aef77p-4 : 0x2.4d9505e4c948f7f2088bcb1ed8p+0 : inexact-ok
= atanh tonearest ibm128 0xf.aef77p-4 : 0x2.4d9505e4c948f7f2088bcb1ed9p+0 : inexact-ok
= atanh towardzero ibm128 0xf.aef77p-4 : 0x2.4d9505e4c948f7f2088bcb1ed8p+0 : inexact-ok
= atanh upward ibm128 0xf.aef77p-4 : 0x2.4d9505e4c948f7f2088bcb1ed9p+0 : inexact-ok
= atanh downward binary32 0xf.aef76p-4 : 0x2.4d94ecp+0 : inexact-ok
= atanh tonearest binary32 0xf.aef76p-4 : 0x2.4d94ecp+0 : inexact-ok
= atanh towardzero binary32 0xf.aef76p-4 : 0x2.4d94ecp+0 : inexact-ok
= atanh upward binary32 0xf.aef76p-4 : 0x2.4d94fp+0 : inexact-ok
= atanh downward binary64 0xf.aef76p-4 : 0x2.4d94ec5e230dp+0 : inexact-ok
= atanh tonearest binary64 0xf.aef76p-4 : 0x2.4d94ec5e230d2p+0 : inexact-ok
= atanh towardzero binary64 0xf.aef76p-4 : 0x2.4d94ec5e230dp+0 : inexact-ok
= atanh upward binary64 0xf.aef76p-4 : 0x2.4d94ec5e230d2p+0 : inexact-ok
= atanh downward intel96 0xf.aef76p-4 : 0x2.4d94ec5e230d1a98p+0 : inexact-ok
= atanh tonearest intel96 0xf.aef76p-4 : 0x2.4d94ec5e230d1a9cp+0 : inexact-ok
= atanh towardzero intel96 0xf.aef76p-4 : 0x2.4d94ec5e230d1a98p+0 : inexact-ok
= atanh upward intel96 0xf.aef76p-4 : 0x2.4d94ec5e230d1a9cp+0 : inexact-ok
= atanh downward m68k96 0xf.aef76p-4 : 0x2.4d94ec5e230d1a98p+0 : inexact-ok
= atanh tonearest m68k96 0xf.aef76p-4 : 0x2.4d94ec5e230d1a9cp+0 : inexact-ok
= atanh towardzero m68k96 0xf.aef76p-4 : 0x2.4d94ec5e230d1a98p+0 : inexact-ok
= atanh upward m68k96 0xf.aef76p-4 : 0x2.4d94ec5e230d1a9cp+0 : inexact-ok
= atanh downward binary128 0xf.aef76p-4 : 0x2.4d94ec5e230d1a9aa291440de2a2p+0 : inexact-ok
= atanh tonearest binary128 0xf.aef76p-4 : 0x2.4d94ec5e230d1a9aa291440de2a4p+0 : inexact-ok
= atanh towardzero binary128 0xf.aef76p-4 : 0x2.4d94ec5e230d1a9aa291440de2a2p+0 : inexact-ok
= atanh upward binary128 0xf.aef76p-4 : 0x2.4d94ec5e230d1a9aa291440de2a4p+0 : inexact-ok
= atanh downward ibm128 0xf.aef76p-4 : 0x2.4d94ec5e230d1a9aa291440de2p+0 : inexact-ok
= atanh tonearest ibm128 0xf.aef76p-4 : 0x2.4d94ec5e230d1a9aa291440de3p+0 : inexact-ok
= atanh towardzero ibm128 0xf.aef76p-4 : 0x2.4d94ec5e230d1a9aa291440de2p+0 : inexact-ok
= atanh upward ibm128 0xf.aef76p-4 : 0x2.4d94ec5e230d1a9aa291440de3p+0 : inexact-ok
= atanh downward binary64 0xf.aef76b7338d08p-4 : 0x2.4d94fea28742ep+0 : inexact-ok
= atanh tonearest binary64 0xf.aef76b7338d08p-4 : 0x2.4d94fea28743p+0 : inexact-ok
= atanh towardzero binary64 0xf.aef76b7338d08p-4 : 0x2.4d94fea28742ep+0 : inexact-ok
= atanh upward binary64 0xf.aef76b7338d08p-4 : 0x2.4d94fea28743p+0 : inexact-ok
= atanh downward intel96 0xf.aef76b7338d08p-4 : 0x2.4d94fea28742fffcp+0 : inexact-ok
= atanh tonearest intel96 0xf.aef76b7338d08p-4 : 0x2.4d94fea28743p+0 : inexact-ok
= atanh towardzero intel96 0xf.aef76b7338d08p-4 : 0x2.4d94fea28742fffcp+0 : inexact-ok
= atanh upward intel96 0xf.aef76b7338d08p-4 : 0x2.4d94fea28743p+0 : inexact-ok
= atanh downward m68k96 0xf.aef76b7338d08p-4 : 0x2.4d94fea28742fffcp+0 : inexact-ok
= atanh tonearest m68k96 0xf.aef76b7338d08p-4 : 0x2.4d94fea28743p+0 : inexact-ok
= atanh towardzero m68k96 0xf.aef76b7338d08p-4 : 0x2.4d94fea28742fffcp+0 : inexact-ok
= atanh upward m68k96 0xf.aef76b7338d08p-4 : 0x2.4d94fea28743p+0 : inexact-ok
= atanh downward binary128 0xf.aef76b7338d08p-4 : 0x2.4d94fea28742fffffffdd0f6766ep+0 : inexact-ok
= atanh tonearest binary128 0xf.aef76b7338d08p-4 : 0x2.4d94fea28742fffffffdd0f6767p+0 : inexact-ok
= atanh towardzero binary128 0xf.aef76b7338d08p-4 : 0x2.4d94fea28742fffffffdd0f6766ep+0 : inexact-ok
= atanh upward binary128 0xf.aef76b7338d08p-4 : 0x2.4d94fea28742fffffffdd0f6767p+0 : inexact-ok
= atanh downward ibm128 0xf.aef76b7338d08p-4 : 0x2.4d94fea28742fffffffdd0f676p+0 : inexact-ok
= atanh tonearest ibm128 0xf.aef76b7338d08p-4 : 0x2.4d94fea28742fffffffdd0f676p+0 : inexact-ok
= atanh towardzero ibm128 0xf.aef76b7338d08p-4 : 0x2.4d94fea28742fffffffdd0f676p+0 : inexact-ok
= atanh upward ibm128 0xf.aef76b7338d08p-4 : 0x2.4d94fea28742fffffffdd0f677p+0 : inexact-ok
atanh 0x1.f5def5fcaa8efp-1
= atanh downward binary32 0xf.aef7bp-4 : 0x2.4d9568p+0 : inexact-ok
= atanh tonearest binary32 0xf.aef7bp-4 : 0x2.4d956cp+0 : inexact-ok
= atanh towardzero binary32 0xf.aef7bp-4 : 0x2.4d9568p+0 : inexact-ok
= atanh upward binary32 0xf.aef7bp-4 : 0x2.4d956cp+0 : inexact-ok
= atanh downward binary64 0xf.aef7bp-4 : 0x2.4d956bff941e2p+0 : inexact-ok
= atanh tonearest binary64 0xf.aef7bp-4 : 0x2.4d956bff941e4p+0 : inexact-ok
= atanh towardzero binary64 0xf.aef7bp-4 : 0x2.4d956bff941e2p+0 : inexact-ok
= atanh upward binary64 0xf.aef7bp-4 : 0x2.4d956bff941e4p+0 : inexact-ok
= atanh downward intel96 0xf.aef7bp-4 : 0x2.4d956bff941e3d5p+0 : inexact-ok
= atanh tonearest intel96 0xf.aef7bp-4 : 0x2.4d956bff941e3d5p+0 : inexact-ok
= atanh towardzero intel96 0xf.aef7bp-4 : 0x2.4d956bff941e3d5p+0 : inexact-ok
= atanh upward intel96 0xf.aef7bp-4 : 0x2.4d956bff941e3d54p+0 : inexact-ok
= atanh downward m68k96 0xf.aef7bp-4 : 0x2.4d956bff941e3d5p+0 : inexact-ok
= atanh tonearest m68k96 0xf.aef7bp-4 : 0x2.4d956bff941e3d5p+0 : inexact-ok
= atanh towardzero m68k96 0xf.aef7bp-4 : 0x2.4d956bff941e3d5p+0 : inexact-ok
= atanh upward m68k96 0xf.aef7bp-4 : 0x2.4d956bff941e3d54p+0 : inexact-ok
= atanh downward binary128 0xf.aef7bp-4 : 0x2.4d956bff941e3d514fc70d3533e4p+0 : inexact-ok
= atanh tonearest binary128 0xf.aef7bp-4 : 0x2.4d956bff941e3d514fc70d3533e4p+0 : inexact-ok
= atanh towardzero binary128 0xf.aef7bp-4 : 0x2.4d956bff941e3d514fc70d3533e4p+0 : inexact-ok
= atanh upward binary128 0xf.aef7bp-4 : 0x2.4d956bff941e3d514fc70d3533e6p+0 : inexact-ok
= atanh downward ibm128 0xf.aef7bp-4 : 0x2.4d956bff941e3d514fc70d3533p+0 : inexact-ok
= atanh tonearest ibm128 0xf.aef7bp-4 : 0x2.4d956bff941e3d514fc70d3534p+0 : inexact-ok
= atanh towardzero ibm128 0xf.aef7bp-4 : 0x2.4d956bff941e3d514fc70d3533p+0 : inexact-ok
= atanh upward ibm128 0xf.aef7bp-4 : 0x2.4d956bff941e3d514fc70d3534p+0 : inexact-ok
= atanh downward binary32 0xf.aef7ap-4 : 0x2.4d955p+0 : inexact-ok
= atanh tonearest binary32 0xf.aef7ap-4 : 0x2.4d9554p+0 : inexact-ok
= atanh towardzero binary32 0xf.aef7ap-4 : 0x2.4d955p+0 : inexact-ok
= atanh upward binary32 0xf.aef7ap-4 : 0x2.4d9554p+0 : inexact-ok
= atanh downward binary64 0xf.aef7ap-4 : 0x2.4d955278d9eccp+0 : inexact-ok
= atanh tonearest binary64 0xf.aef7ap-4 : 0x2.4d955278d9ecep+0 : inexact-ok
= atanh towardzero binary64 0xf.aef7ap-4 : 0x2.4d955278d9eccp+0 : inexact-ok
= atanh upward binary64 0xf.aef7ap-4 : 0x2.4d955278d9ecep+0 : inexact-ok
= atanh downward intel96 0xf.aef7ap-4 : 0x2.4d955278d9ecd5ap+0 : inexact-ok
= atanh tonearest intel96 0xf.aef7ap-4 : 0x2.4d955278d9ecd5ap+0 : inexact-ok
= atanh towardzero intel96 0xf.aef7ap-4 : 0x2.4d955278d9ecd5ap+0 : inexact-ok
= atanh upward intel96 0xf.aef7ap-4 : 0x2.4d955278d9ecd5a4p+0 : inexact-ok
= atanh downward m68k96 0xf.aef7ap-4 : 0x2.4d955278d9ecd5ap+0 : inexact-ok
= atanh tonearest m68k96 0xf.aef7ap-4 : 0x2.4d955278d9ecd5ap+0 : inexact-ok
= atanh towardzero m68k96 0xf.aef7ap-4 : 0x2.4d955278d9ecd5ap+0 : inexact-ok
= atanh upward m68k96 0xf.aef7ap-4 : 0x2.4d955278d9ecd5a4p+0 : inexact-ok
= atanh downward binary128 0xf.aef7ap-4 : 0x2.4d955278d9ecd5a1db946644fc12p+0 : inexact-ok
= atanh tonearest binary128 0xf.aef7ap-4 : 0x2.4d955278d9ecd5a1db946644fc12p+0 : inexact-ok
= atanh towardzero binary128 0xf.aef7ap-4 : 0x2.4d955278d9ecd5a1db946644fc12p+0 : inexact-ok
= atanh upward binary128 0xf.aef7ap-4 : 0x2.4d955278d9ecd5a1db946644fc14p+0 : inexact-ok
= atanh downward ibm128 0xf.aef7ap-4 : 0x2.4d955278d9ecd5a1db946644fcp+0 : inexact-ok
= atanh tonearest ibm128 0xf.aef7ap-4 : 0x2.4d955278d9ecd5a1db946644fcp+0 : inexact-ok
= atanh towardzero ibm128 0xf.aef7ap-4 : 0x2.4d955278d9ecd5a1db946644fcp+0 : inexact-ok
= atanh upward ibm128 0xf.aef7ap-4 : 0x2.4d955278d9ecd5a1db946644fdp+0 : inexact-ok
= atanh downward binary64 0xf.aef7afe554778p-4 : 0x2.4d956bd50781cp+0 : inexact-ok
= atanh tonearest binary64 0xf.aef7afe554778p-4 : 0x2.4d956bd50781ep+0 : inexact-ok
= atanh towardzero binary64 0xf.aef7afe554778p-4 : 0x2.4d956bd50781cp+0 : inexact-ok
= atanh upward binary64 0xf.aef7afe554778p-4 : 0x2.4d956bd50781ep+0 : inexact-ok
= atanh downward intel96 0xf.aef7afe554778p-4 : 0x2.4d956bd50781dffcp+0 : inexact-ok
= atanh tonearest intel96 0xf.aef7afe554778p-4 : 0x2.4d956bd50781ep+0 : inexact-ok
= atanh towardzero intel96 0xf.aef7afe554778p-4 : 0x2.4d956bd50781dffcp+0 : inexact-ok
= atanh upward intel96 0xf.aef7afe554778p-4 : 0x2.4d956bd50781ep+0 : inexact-ok
= atanh downward m68k96 0xf.aef7afe554778p-4 : 0x2.4d956bd50781dffcp+0 : inexact-ok
= atanh tonearest m68k96 0xf.aef7afe554778p-4 : 0x2.4d956bd50781ep+0 : inexact-ok
= atanh towardzero m68k96 0xf.aef7afe554778p-4 : 0x2.4d956bd50781dffcp+0 : inexact-ok
= atanh upward m68k96 0xf.aef7afe554778p-4 : 0x2.4d956bd50781ep+0 : inexact-ok
= atanh downward binary128 0xf.aef7afe554778p-4 : 0x2.4d956bd50781dfffffffcec63d16p+0 : inexact-ok
= atanh tonearest binary128 0xf.aef7afe554778p-4 : 0x2.4d956bd50781dfffffffcec63d18p+0 : inexact-ok
= atanh towardzero binary128 0xf.aef7afe554778p-4 : 0x2.4d956bd50781dfffffffcec63d16p+0 : inexact-ok
= atanh upward binary128 0xf.aef7afe554778p-4 : 0x2.4d956bd50781dfffffffcec63d18p+0 : inexact-ok
= atanh downward ibm128 0xf.aef7afe554778p-4 : 0x2.4d956bd50781dfffffffcec63dp+0 : inexact-ok
= atanh tonearest ibm128 0xf.aef7afe554778p-4 : 0x2.4d956bd50781dfffffffcec63dp+0 : inexact-ok
= atanh towardzero ibm128 0xf.aef7afe554778p-4 : 0x2.4d956bd50781dfffffffcec63dp+0 : inexact-ok
= atanh upward ibm128 0xf.aef7afe554778p-4 : 0x2.4d956bd50781dfffffffcec63ep+0 : inexact-ok
atanh min
= atanh downward binary32 0x4p-128 : 0x4p-128 : inexact-ok underflow-ok errno-erange-ok
= atanh tonearest binary32 0x4p-128 : 0x4p-128 : inexact-ok underflow-ok errno-erange-ok

View File

@ -102,6 +102,33 @@ muldd_acc (double xh, double xl, double ch, double cl, double *l)
return ch;
}
/* Note: in revision 085972b, we replaced the last two lines
ch = ahhh + ahhl and *l = (ahhh - ch) + ahhl by fasttwosum (ahhh, ahhl, l).
Indeed, these last two lines did emulate a FastTwoSum.
However, they did emulate another variant of fasttwosum, with
z = x - s and e = z + y.
Note that these two variants differ when the fasttwosum condition
|x| >= |y| is not satisfied.
Take for example with precision 3 and rounding upwards, x=-7 and
y=28. Then s = RU(x + y) = 24. With the first variant, z = RU(s-x) = 32
and e = RU(y - z) = -4, thus s + e = 20. With the second variant,
z = RU(x-s) = -28 and e = RU(z + y) = 0, thus s + e = 24. In this case,
the first variant is closer to the sum x + y = 21.
Still with precision 3 and rounding upwards, now take x=7 and
y=-28. Then s = RU(x + y) = -20. With the first variant, z = RU(s-x) = -24
and e = RU(y - z) = -4, thus s + e = -28. With the second variant,
z = RU(x-s) = 28 and e = RU(z + y) = 0, thus s + e = -20. In this case,
the second variant is closer to the sum x + y = -21.
*/
static inline double
muldd_acc2 (double xh, double xl, double ch, double cl, double *l)
{
double ahlh = ch * xl, alhh = cl * xh, ahhh = ch * xh,
ahhl = fma (ch, xh, -ahhh);
ahhl += alhh + ahlh;
return fasttwosum (ahhh, ahhl, l);
}
static inline double
muldd2 (double xh, double xl, double ch, double cl, double *l)
{
@ -139,11 +166,20 @@ mulddd2 (double x, double ch, double cl, double *l)
return ahhh;
}
static inline double mulddd3 (double xh, double xl, double ch, double *l)
{
double hh = xh * ch;
*l = fma (ch, xh, -hh) + xl * ch;
return hh;
}
static inline double
polydd (double xh, double xl, int n, const double c[][2], double *l)
{
int i = n - 1;
double ch = c[i][0] + *l, cl = ((c[i][0] - ch) + *l) + c[i][1];
double ch, cl;
ch = fasttwosum (c[i][0], *l, &cl);
cl += c[i][1];
while (--i >= 0)
{
ch = muldd_acc (xh, xl, ch, cl, &cl);
@ -170,6 +206,24 @@ polydd2 (double xh, double xl, int n, const double c[][2], double *l)
return ch;
}
static inline double
polydd3 (double xh, double xl, int n, const double c[][2], double *l)
{
int i = n - 1;
double ch, cl;
ch = fasttwosum (c[i][0], *l, &cl);
cl += c[i][1];
while(--i>=0){
ch = muldd_acc2 (xh, xl, ch, cl, &cl);
double th, tl;
th = fasttwosum (c[i][0], ch, &tl);
ch = th;
cl += tl + c[i][1];
}
*l = cl;
return ch;
}
static inline double
polyddd (double x, int n, const double c[][2], double *l)
{

View File

@ -3,7 +3,7 @@
Copyright (c) 2023-2026 Alexei Sibidanov.
The original version of this file was copied from the CORE-MATH
project (file src/binary64/atanh/atanh.c, revision dc9465e7).
project (file src/binary64/atanh/atanh.c, revision c423b9a3).
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@ -40,11 +40,15 @@ as_atanh_zero (double x)
double y2
= x2
* (CL[0] + x2 * (CL[1] + x2 * (CL[2] + x2 * (CL[3] + x2 * (CL[4])))));
double y1 = polydd (x2, x2l, 13, CH, &y2);
y1 = mulddd (y1, y2, x, &y2);
y1 = muldd_acc (y1, y2, x2, x2l, &y2);
double y1 = polydd3 (x2, x2l, 13, CH, &y2);
y1 = mulddd3 (y1, y2, x, &y2);
y1 = muldd_acc2 (x2, x2l, y1, y2, &y2);
double y0 = fasttwosum (x, y1, &y1);
y1 = fasttwosum (y1, y2, &y2);
/* We have 22 failures (only for RNDN, 11 up to sign) if we disable this
check, all with 53 or 54 identical bits after the round bit.
For example x=0x1.cc7092205cfafp-10 we have y0=0x1.cc70b12857108p-10
and y1=-0x1p-63. */
uint64_t t = asuint64 (y1);
if (__glibc_unlikely (!(t & (~UINT64_C(0) >> 12))))
{

View File

@ -26,23 +26,26 @@ SOFTWARE. */
#include "s_atanh_data.h"
const double __atanh_ch[][2]
= { { 0x1.5555555555555p-2, 0x1.5555555555555p-56 },
{ 0x1.999999999999ap-3, -0x1.999999999611cp-57 },
{ 0x1.2492492492492p-3, 0x1.2492490f76b25p-57 },
{ 0x1.c71c71c71c71cp-4, 0x1.c71cd5c38a112p-58 },
{ 0x1.745d1745d1746p-4, -0x1.7556c4165f4cap-59 },
{ 0x1.3b13b13b13b14p-4, -0x1.b893c3b36052ep-59 },
{ 0x1.1111111111105p-4, 0x1.4e1afd723ed1fp-59 },
{ 0x1.e1e1e1e1e2678p-5, -0x1.f86ea96fb1435p-59 },
{ 0x1.af286bc9f90ccp-5, 0x1.1e51a6e54fde9p-60 },
{ 0x1.8618618c779b6p-5, -0x1.ab913de95c3bfp-61 },
{ 0x1.642c84aa383ebp-5, 0x1.632e747641b12p-59 },
{ 0x1.47ae2d205013cp-5, -0x1.0c9617e7bcff2p-60 },
{ 0x1.2f664d60473f9p-5, 0x1.3adb3e2b7f35ep-61 } };
= { { 0x1.5555555555555p-2, 0x1.5555555555555p-56 }, /* degree 3 */
{ 0x1.999999999999ap-3, -0x1.999999999611cp-57 }, /* degree 5 */
{ 0x1.2492492492492p-3, 0x1.2492490f76b25p-57 }, /* degree 7 */
{ 0x1.c71c71c71c71cp-4, 0x1.c71cd5c38a112p-58 }, /* degree 9 */
{ 0x1.745d1745d1746p-4, -0x1.7556c4165f4cap-59 }, /* degree 11 */
{ 0x1.3b13b13b13b14p-4, -0x1.b893c3b36052ep-59 }, /* degree 13 */
{ 0x1.1111111111105p-4, 0x1.4e1afd723ed1fp-59 }, /* degree 15 */
{ 0x1.e1e1e1e1e2678p-5, -0x1.f86ea96fb1435p-59 }, /* degree 17 */
{ 0x1.af286bc9f90ccp-5, 0x1.1e51a6e54fde9p-60 }, /* degree 19 */
{ 0x1.8618618c779b6p-5, -0x1.ab913de95c3bfp-61 }, /* degree 21 */
{ 0x1.642c84aa383ebp-5, 0x1.632e747641b12p-59 }, /* degree 23 */
{ 0x1.47ae2d205013cp-5, -0x1.0c9617e7bcff2p-60 }, /* degree 25 */
{ 0x1.2f664d60473f9p-5, 0x1.3adb3e2b7f35ep-61 } }; /* degree 27 */
const double __atanh_cl[]
= { 0x1.1a9a91fd692afp-5, 0x1.06dfbb35e7f44p-5, 0x1.037bed4d7588fp-5,
0x1.5aca6d6d720d6p-6, 0x1.99ea5700d53a5p-5 };
= { 0x1.1a9a91fd692afp-5, /* degree 29 */
0x1.06dfbb35e7f44p-5, /* degree 31 */
0x1.037bed4d7588fp-5, /* degree 33 */
0x1.5aca6d6d720d6p-6, /* degree 35 */
0x1.99ea5700d53a5p-5 /* degree 37 */ };
const struct __atanh_B_t __atanh_B[] = {
{ 301, 27565 }, { 7189, 24786 }, { 13383, 22167 }, { 18923, 19696 },