From 05b46df987eef671ab7e45f555a2c8b25cc570ae Mon Sep 17 00:00:00 2001 From: Adhemerval Zanella Date: Fri, 9 Jan 2026 11:56:50 -0300 Subject: [PATCH] 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 --- SHARED-FILES | 2 +- math/auto-libm-test-in | 10 + math/auto-libm-test-out-atanh | 690 ++++++++++++++++++++++++++ sysdeps/ieee754/dbl-64/ddcoremath.h | 56 ++- sysdeps/ieee754/dbl-64/e_atanh.c | 12 +- sysdeps/ieee754/dbl-64/s_atanh_data.c | 33 +- 6 files changed, 782 insertions(+), 21 deletions(-) diff --git a/SHARED-FILES b/SHARED-FILES index e4325b6e7f..4fcc66b2ef 100644 --- a/SHARED-FILES +++ b/SHARED-FILES @@ -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 diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in index 0778834c22..e27d51ba55 100644 --- a/math/auto-libm-test-in +++ b/math/auto-libm-test-in @@ -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 diff --git a/math/auto-libm-test-out-atanh b/math/auto-libm-test-out-atanh index f1e3e96ffa..c910c8bc5f 100644 --- a/math/auto-libm-test-out-atanh +++ b/math/auto-libm-test-out-atanh @@ -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 diff --git a/sysdeps/ieee754/dbl-64/ddcoremath.h b/sysdeps/ieee754/dbl-64/ddcoremath.h index c451199061..ffb16feb4e 100644 --- a/sysdeps/ieee754/dbl-64/ddcoremath.h +++ b/sysdeps/ieee754/dbl-64/ddcoremath.h @@ -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) { diff --git a/sysdeps/ieee754/dbl-64/e_atanh.c b/sysdeps/ieee754/dbl-64/e_atanh.c index 4b1cbe46bc..e017afc12a 100644 --- a/sysdeps/ieee754/dbl-64/e_atanh.c +++ b/sysdeps/ieee754/dbl-64/e_atanh.c @@ -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)))) { diff --git a/sysdeps/ieee754/dbl-64/s_atanh_data.c b/sysdeps/ieee754/dbl-64/s_atanh_data.c index 6a09142270..38342ef1c1 100644 --- a/sysdeps/ieee754/dbl-64/s_atanh_data.c +++ b/sysdeps/ieee754/dbl-64/s_atanh_data.c @@ -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 },