aboutsummaryrefslogtreecommitdiff
path: root/math
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2015-02-25 11:13:41 +0000
committerJoseph Myers <joseph@codesourcery.com>2015-02-25 11:13:41 +0000
commit137cef7d433407bd2ded8bcc5bea70e5858df47a (patch)
treedeb0a6e04c5e7220d1e4eebcf59ab9d792a8eca6 /math
parentcb43bb0d68f001fc3d6e054d712ab8794b5fd1de (diff)
downloadglibc-137cef7d433407bd2ded8bcc5bea70e5858df47a.tar.xz
glibc-137cef7d433407bd2ded8bcc5bea70e5858df47a.zip
Fix ldbl-128ibm asinhl inaccuracy (bug 18020).
The ldbl-128ibm implementation of asinhl uses cut-offs of 0x1p28 and 0x1p-29 to determine when to use simpler formulas that avoid possible overflow / underflow. Both those cut-offs are inappropriate for this format, resulting in large errors. This patch changes the code to use more appropriate cut-offs of 0x1p56 and 0x1p-56, adding tests around the cut-offs for various floating-point formats. Tested for powerpc. Also tested for x86_64 and x86 and updated ulps. [BZ #18020] * sysdeps/ieee754/ldbl-128ibm/s_asinhl.c (__asinhl): Use 2**56 and 2**-56 not 2**28 and 2**-29 as thresholds for simpler formulas. * math/auto-libm-test-in: Add more tests of asinh. * math/auto-libm-test-out: Regenerated. * sysdeps/i386/fpu/libm-test-ulps: Update. * sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
Diffstat (limited to 'math')
-rw-r--r--math/auto-libm-test-in61
-rw-r--r--math/auto-libm-test-out1685
2 files changed, 1746 insertions, 0 deletions
diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in
index a4bd972c80..df51c26ff9 100644
--- a/math/auto-libm-test-in
+++ b/math/auto-libm-test-in
@@ -104,8 +104,69 @@ asinh 1
asinh 10
asinh 100
asinh 1e6
+asinh 0x1p8
+asinh 0x1p9
+asinh 0x1p10
+asinh 0x1p11
+asinh 0x1p12
+asinh 0x1p13
+asinh 0x1p24
+asinh 0x1p25
+asinh 0x1p26
+asinh 0x1p27
+asinh 0x1p28
+asinh 0x1p29
+asinh 0x1p30
+asinh 0x1p31
+asinh 0x1p32
+asinh 0x1p33
+asinh 0x1p48
+asinh 0x1p49
+asinh 0x1p50
+asinh 0x1p51
+asinh 0x1p52
+asinh 0x1p53
+asinh 0x1p54
+asinh 0x1p55
+asinh 0x1p56
+asinh 0x1p57
+asinh 0x1p58
+asinh 0x1p59
asinh 0x1p100
+asinh 0x1p500
+asinh 0x1p5000
+asinh 0x1p-8
+asinh 0x1p-9
+asinh 0x1p-10
+asinh 0x1p-11
+asinh 0x1p-12
+asinh 0x1p-13
+asinh 0x1p-24
+asinh 0x1p-25
+asinh 0x1p-26
+asinh 0x1p-27
+asinh 0x1p-28
+asinh 0x1p-29
+asinh 0x1p-30
+asinh 0x1p-31
+asinh 0x1p-32
+asinh 0x1p-33
+asinh 0x1p-48
+asinh 0x1p-49
+asinh 0x1p-50
+asinh 0x1p-51
+asinh 0x1p-52
+asinh 0x1p-53
+asinh 0x1p-54
+asinh 0x1p-55
+asinh 0x1p-56
+asinh 0x1p-57
+asinh 0x1p-58
+asinh 0x1p-59
+asinh 0x1p-100
# Bug 16350: underflow exception may be missing.
+asinh 0x1p-500 missing-underflow
+asinh 0x1p-5000 missing-underflow
asinh min missing-underflow
asinh -min missing-underflow
asinh min_subnorm missing-underflow
diff --git a/math/auto-libm-test-out b/math/auto-libm-test-out
index c8bc6a8b3f..83170d9efc 100644
--- a/math/auto-libm-test-out
+++ b/math/auto-libm-test-out
@@ -3346,6 +3346,706 @@ asinh 1e6
= asinh tonearest ldbl-128ibm 0xf.424p+16L : 0xe.823764bfd1e5fa37c6bf52ed08p+0L : inexact-ok
= asinh towardzero ldbl-128ibm 0xf.424p+16L : 0xe.823764bfd1e5fa37c6bf52ed08p+0L : inexact-ok
= asinh upward ldbl-128ibm 0xf.424p+16L : 0xe.823764bfd1e5fa37c6bf52ed0cp+0L : inexact-ok
+asinh 0x1p8
+= asinh downward flt-32 0x1p+8f : 0x6.3d031p+0f : inexact-ok
+= asinh tonearest flt-32 0x1p+8f : 0x6.3d0318p+0f : inexact-ok
+= asinh towardzero flt-32 0x1p+8f : 0x6.3d031p+0f : inexact-ok
+= asinh upward flt-32 0x1p+8f : 0x6.3d0318p+0f : inexact-ok
+= asinh downward dbl-64 0x1p+8 : 0x6.3d0317b6484b4p+0 : inexact-ok
+= asinh tonearest dbl-64 0x1p+8 : 0x6.3d0317b6484b4p+0 : inexact-ok
+= asinh towardzero dbl-64 0x1p+8 : 0x6.3d0317b6484b4p+0 : inexact-ok
+= asinh upward dbl-64 0x1p+8 : 0x6.3d0317b6484b8p+0 : inexact-ok
+= asinh downward ldbl-96-intel 0x1p+8L : 0x6.3d0317b6484b5458p+0L : inexact-ok
+= asinh tonearest ldbl-96-intel 0x1p+8L : 0x6.3d0317b6484b546p+0L : inexact-ok
+= asinh towardzero ldbl-96-intel 0x1p+8L : 0x6.3d0317b6484b5458p+0L : inexact-ok
+= asinh upward ldbl-96-intel 0x1p+8L : 0x6.3d0317b6484b546p+0L : inexact-ok
+= asinh downward ldbl-96-m68k 0x1p+8L : 0x6.3d0317b6484b5458p+0L : inexact-ok
+= asinh tonearest ldbl-96-m68k 0x1p+8L : 0x6.3d0317b6484b546p+0L : inexact-ok
+= asinh towardzero ldbl-96-m68k 0x1p+8L : 0x6.3d0317b6484b5458p+0L : inexact-ok
+= asinh upward ldbl-96-m68k 0x1p+8L : 0x6.3d0317b6484b546p+0L : inexact-ok
+= asinh downward ldbl-128 0x1p+8L : 0x6.3d0317b6484b545f6596abfa40dcp+0L : inexact-ok
+= asinh tonearest ldbl-128 0x1p+8L : 0x6.3d0317b6484b545f6596abfa40dcp+0L : inexact-ok
+= asinh towardzero ldbl-128 0x1p+8L : 0x6.3d0317b6484b545f6596abfa40dcp+0L : inexact-ok
+= asinh upward ldbl-128 0x1p+8L : 0x6.3d0317b6484b545f6596abfa40ep+0L : inexact-ok
+= asinh downward ldbl-128ibm 0x1p+8L : 0x6.3d0317b6484b545f6596abfa4p+0L : inexact-ok
+= asinh tonearest ldbl-128ibm 0x1p+8L : 0x6.3d0317b6484b545f6596abfa4p+0L : inexact-ok
+= asinh towardzero ldbl-128ibm 0x1p+8L : 0x6.3d0317b6484b545f6596abfa4p+0L : inexact-ok
+= asinh upward ldbl-128ibm 0x1p+8L : 0x6.3d0317b6484b545f6596abfa42p+0L : inexact-ok
+asinh 0x1p9
+= asinh downward flt-32 0x2p+8f : 0x6.ee74f8p+0f : inexact-ok
+= asinh tonearest flt-32 0x2p+8f : 0x6.ee75p+0f : inexact-ok
+= asinh towardzero flt-32 0x2p+8f : 0x6.ee74f8p+0f : inexact-ok
+= asinh upward flt-32 0x2p+8f : 0x6.ee75p+0f : inexact-ok
+= asinh downward dbl-64 0x2p+8 : 0x6.ee74ffae309acp+0 : inexact-ok
+= asinh tonearest dbl-64 0x2p+8 : 0x6.ee74ffae309acp+0 : inexact-ok
+= asinh towardzero dbl-64 0x2p+8 : 0x6.ee74ffae309acp+0 : inexact-ok
+= asinh upward dbl-64 0x2p+8 : 0x6.ee74ffae309bp+0 : inexact-ok
+= asinh downward ldbl-96-intel 0x2p+8L : 0x6.ee74ffae309ac0e8p+0L : inexact-ok
+= asinh tonearest ldbl-96-intel 0x2p+8L : 0x6.ee74ffae309ac0e8p+0L : inexact-ok
+= asinh towardzero ldbl-96-intel 0x2p+8L : 0x6.ee74ffae309ac0e8p+0L : inexact-ok
+= asinh upward ldbl-96-intel 0x2p+8L : 0x6.ee74ffae309ac0fp+0L : inexact-ok
+= asinh downward ldbl-96-m68k 0x2p+8L : 0x6.ee74ffae309ac0e8p+0L : inexact-ok
+= asinh tonearest ldbl-96-m68k 0x2p+8L : 0x6.ee74ffae309ac0e8p+0L : inexact-ok
+= asinh towardzero ldbl-96-m68k 0x2p+8L : 0x6.ee74ffae309ac0e8p+0L : inexact-ok
+= asinh upward ldbl-96-m68k 0x2p+8L : 0x6.ee74ffae309ac0fp+0L : inexact-ok
+= asinh downward ldbl-128 0x2p+8L : 0x6.ee74ffae309ac0eb383199471004p+0L : inexact-ok
+= asinh tonearest ldbl-128 0x2p+8L : 0x6.ee74ffae309ac0eb383199471004p+0L : inexact-ok
+= asinh towardzero ldbl-128 0x2p+8L : 0x6.ee74ffae309ac0eb383199471004p+0L : inexact-ok
+= asinh upward ldbl-128 0x2p+8L : 0x6.ee74ffae309ac0eb383199471008p+0L : inexact-ok
+= asinh downward ldbl-128ibm 0x2p+8L : 0x6.ee74ffae309ac0eb383199471p+0L : inexact-ok
+= asinh tonearest ldbl-128ibm 0x2p+8L : 0x6.ee74ffae309ac0eb383199471p+0L : inexact-ok
+= asinh towardzero ldbl-128ibm 0x2p+8L : 0x6.ee74ffae309ac0eb383199471p+0L : inexact-ok
+= asinh upward ldbl-128ibm 0x2p+8L : 0x6.ee74ffae309ac0eb3831994712p+0L : inexact-ok
+asinh 0x1p10
+= asinh downward flt-32 0x4p+8f : 0x7.9fe708p+0f : inexact-ok
+= asinh tonearest flt-32 0x4p+8f : 0x7.9fe708p+0f : inexact-ok
+= asinh towardzero flt-32 0x4p+8f : 0x7.9fe708p+0f : inexact-ok
+= asinh upward flt-32 0x4p+8f : 0x7.9fe71p+0f : inexact-ok
+= asinh downward dbl-64 0x4p+8 : 0x7.9fe70ba603d2p+0 : inexact-ok
+= asinh tonearest dbl-64 0x4p+8 : 0x7.9fe70ba603d24p+0 : inexact-ok
+= asinh towardzero dbl-64 0x4p+8 : 0x7.9fe70ba603d2p+0 : inexact-ok
+= asinh upward dbl-64 0x4p+8 : 0x7.9fe70ba603d24p+0 : inexact-ok
+= asinh downward ldbl-96-intel 0x4p+8L : 0x7.9fe70ba603d23a6p+0L : inexact-ok
+= asinh tonearest ldbl-96-intel 0x4p+8L : 0x7.9fe70ba603d23a6p+0L : inexact-ok
+= asinh towardzero ldbl-96-intel 0x4p+8L : 0x7.9fe70ba603d23a6p+0L : inexact-ok
+= asinh upward ldbl-96-intel 0x4p+8L : 0x7.9fe70ba603d23a68p+0L : inexact-ok
+= asinh downward ldbl-96-m68k 0x4p+8L : 0x7.9fe70ba603d23a6p+0L : inexact-ok
+= asinh tonearest ldbl-96-m68k 0x4p+8L : 0x7.9fe70ba603d23a6p+0L : inexact-ok
+= asinh towardzero ldbl-96-m68k 0x4p+8L : 0x7.9fe70ba603d23a6p+0L : inexact-ok
+= asinh upward ldbl-96-m68k 0x4p+8L : 0x7.9fe70ba603d23a68p+0L : inexact-ok
+= asinh downward ldbl-128 0x4p+8L : 0x7.9fe70ba603d23a62821e041d8128p+0L : inexact-ok
+= asinh tonearest ldbl-128 0x4p+8L : 0x7.9fe70ba603d23a62821e041d812cp+0L : inexact-ok
+= asinh towardzero ldbl-128 0x4p+8L : 0x7.9fe70ba603d23a62821e041d8128p+0L : inexact-ok
+= asinh upward ldbl-128 0x4p+8L : 0x7.9fe70ba603d23a62821e041d812cp+0L : inexact-ok
+= asinh downward ldbl-128ibm 0x4p+8L : 0x7.9fe70ba603d23a62821e041d8p+0L : inexact-ok
+= asinh tonearest ldbl-128ibm 0x4p+8L : 0x7.9fe70ba603d23a62821e041d82p+0L : inexact-ok
+= asinh towardzero ldbl-128ibm 0x4p+8L : 0x7.9fe70ba603d23a62821e041d8p+0L : inexact-ok
+= asinh upward ldbl-128ibm 0x4p+8L : 0x7.9fe70ba603d23a62821e041d82p+0L : inexact-ok
+asinh 0x1p11
+= asinh downward flt-32 0x8p+8f : 0x8.51592p+0f : inexact-ok
+= asinh tonearest flt-32 0x8p+8f : 0x8.51592p+0f : inexact-ok
+= asinh towardzero flt-32 0x8p+8f : 0x8.51592p+0f : inexact-ok
+= asinh upward flt-32 0x8p+8f : 0x8.51593p+0f : inexact-ok
+= asinh downward dbl-64 0x8p+8 : 0x8.5159209dd5b8p+0 : inexact-ok
+= asinh tonearest dbl-64 0x8p+8 : 0x8.5159209dd5b8p+0 : inexact-ok
+= asinh towardzero dbl-64 0x8p+8 : 0x8.5159209dd5b8p+0 : inexact-ok
+= asinh upward dbl-64 0x8p+8 : 0x8.5159209dd5b88p+0 : inexact-ok
+= asinh downward ldbl-96-intel 0x8p+8L : 0x8.5159209dd5b834p+0L : inexact-ok
+= asinh tonearest ldbl-96-intel 0x8p+8L : 0x8.5159209dd5b8341p+0L : inexact-ok
+= asinh towardzero ldbl-96-intel 0x8p+8L : 0x8.5159209dd5b834p+0L : inexact-ok
+= asinh upward ldbl-96-intel 0x8p+8L : 0x8.5159209dd5b8341p+0L : inexact-ok
+= asinh downward ldbl-96-m68k 0x8p+8L : 0x8.5159209dd5b834p+0L : inexact-ok
+= asinh tonearest ldbl-96-m68k 0x8p+8L : 0x8.5159209dd5b8341p+0L : inexact-ok
+= asinh towardzero ldbl-96-m68k 0x8p+8L : 0x8.5159209dd5b834p+0L : inexact-ok
+= asinh upward ldbl-96-m68k 0x8p+8L : 0x8.5159209dd5b8341p+0L : inexact-ok
+= asinh downward ldbl-128 0x8p+8L : 0x8.5159209dd5b8340d7a01c06cc4b8p+0L : inexact-ok
+= asinh tonearest ldbl-128 0x8p+8L : 0x8.5159209dd5b8340d7a01c06cc4b8p+0L : inexact-ok
+= asinh towardzero ldbl-128 0x8p+8L : 0x8.5159209dd5b8340d7a01c06cc4b8p+0L : inexact-ok
+= asinh upward ldbl-128 0x8p+8L : 0x8.5159209dd5b8340d7a01c06cc4cp+0L : inexact-ok
+= asinh downward ldbl-128ibm 0x8p+8L : 0x8.5159209dd5b8340d7a01c06cc4p+0L : inexact-ok
+= asinh tonearest ldbl-128ibm 0x8p+8L : 0x8.5159209dd5b8340d7a01c06cc4p+0L : inexact-ok
+= asinh towardzero ldbl-128ibm 0x8p+8L : 0x8.5159209dd5b8340d7a01c06cc4p+0L : inexact-ok
+= asinh upward ldbl-128ibm 0x8p+8L : 0x8.5159209dd5b8340d7a01c06cc8p+0L : inexact-ok
+asinh 0x1p12
+= asinh downward flt-32 0x1p+12f : 0x9.02cb3p+0f : inexact-ok
+= asinh tonearest flt-32 0x1p+12f : 0x9.02cb3p+0f : inexact-ok
+= asinh towardzero flt-32 0x1p+12f : 0x9.02cb3p+0f : inexact-ok
+= asinh upward flt-32 0x1p+12f : 0x9.02cb4p+0f : inexact-ok
+= asinh downward dbl-64 0x1p+12 : 0x9.02cb37d5a789p+0 : inexact-ok
+= asinh tonearest dbl-64 0x1p+12 : 0x9.02cb37d5a789p+0 : inexact-ok
+= asinh towardzero dbl-64 0x1p+12 : 0x9.02cb37d5a789p+0 : inexact-ok
+= asinh upward dbl-64 0x1p+12 : 0x9.02cb37d5a7898p+0 : inexact-ok
+= asinh downward ldbl-96-intel 0x1p+12L : 0x9.02cb37d5a78915bp+0L : inexact-ok
+= asinh tonearest ldbl-96-intel 0x1p+12L : 0x9.02cb37d5a78915cp+0L : inexact-ok
+= asinh towardzero ldbl-96-intel 0x1p+12L : 0x9.02cb37d5a78915bp+0L : inexact-ok
+= asinh upward ldbl-96-intel 0x1p+12L : 0x9.02cb37d5a78915cp+0L : inexact-ok
+= asinh downward ldbl-96-m68k 0x1p+12L : 0x9.02cb37d5a78915bp+0L : inexact-ok
+= asinh tonearest ldbl-96-m68k 0x1p+12L : 0x9.02cb37d5a78915cp+0L : inexact-ok
+= asinh towardzero ldbl-96-m68k 0x1p+12L : 0x9.02cb37d5a78915bp+0L : inexact-ok
+= asinh upward ldbl-96-m68k 0x1p+12L : 0x9.02cb37d5a78915cp+0L : inexact-ok
+= asinh downward ldbl-128 0x1p+12L : 0x9.02cb37d5a78915b9409d740d7fe8p+0L : inexact-ok
+= asinh tonearest ldbl-128 0x1p+12L : 0x9.02cb37d5a78915b9409d740d7fe8p+0L : inexact-ok
+= asinh towardzero ldbl-128 0x1p+12L : 0x9.02cb37d5a78915b9409d740d7fe8p+0L : inexact-ok
+= asinh upward ldbl-128 0x1p+12L : 0x9.02cb37d5a78915b9409d740d7ffp+0L : inexact-ok
+= asinh downward ldbl-128ibm 0x1p+12L : 0x9.02cb37d5a78915b9409d740d7cp+0L : inexact-ok
+= asinh tonearest ldbl-128ibm 0x1p+12L : 0x9.02cb37d5a78915b9409d740d8p+0L : inexact-ok
+= asinh towardzero ldbl-128ibm 0x1p+12L : 0x9.02cb37d5a78915b9409d740d7cp+0L : inexact-ok
+= asinh upward ldbl-128ibm 0x1p+12L : 0x9.02cb37d5a78915b9409d740d8p+0L : inexact-ok
+asinh 0x1p13
+= asinh downward flt-32 0x2p+12f : 0x9.b43d4p+0f : inexact-ok
+= asinh tonearest flt-32 0x2p+12f : 0x9.b43d5p+0f : inexact-ok
+= asinh towardzero flt-32 0x2p+12f : 0x9.b43d4p+0f : inexact-ok
+= asinh upward flt-32 0x2p+12f : 0x9.b43d5p+0f : inexact-ok
+= asinh downward dbl-64 0x2p+12 : 0x9.b43d4f9d79588p+0 : inexact-ok
+= asinh tonearest dbl-64 0x2p+12 : 0x9.b43d4f9d79588p+0 : inexact-ok
+= asinh towardzero dbl-64 0x2p+12 : 0x9.b43d4f9d79588p+0 : inexact-ok
+= asinh upward dbl-64 0x2p+12 : 0x9.b43d4f9d7959p+0 : inexact-ok
+= asinh downward ldbl-96-intel 0x2p+12L : 0x9.b43d4f9d7958a5ep+0L : inexact-ok
+= asinh tonearest ldbl-96-intel 0x2p+12L : 0x9.b43d4f9d7958a5ep+0L : inexact-ok
+= asinh towardzero ldbl-96-intel 0x2p+12L : 0x9.b43d4f9d7958a5ep+0L : inexact-ok
+= asinh upward ldbl-96-intel 0x2p+12L : 0x9.b43d4f9d7958a5fp+0L : inexact-ok
+= asinh downward ldbl-96-m68k 0x2p+12L : 0x9.b43d4f9d7958a5ep+0L : inexact-ok
+= asinh tonearest ldbl-96-m68k 0x2p+12L : 0x9.b43d4f9d7958a5ep+0L : inexact-ok
+= asinh towardzero ldbl-96-m68k 0x2p+12L : 0x9.b43d4f9d7958a5ep+0L : inexact-ok
+= asinh upward ldbl-96-m68k 0x2p+12L : 0x9.b43d4f9d7958a5fp+0L : inexact-ok
+= asinh downward ldbl-128 0x2p+12L : 0x9.b43d4f9d7958a5e50a7407a58c9p+0L : inexact-ok
+= asinh tonearest ldbl-128 0x2p+12L : 0x9.b43d4f9d7958a5e50a7407a58c98p+0L : inexact-ok
+= asinh towardzero ldbl-128 0x2p+12L : 0x9.b43d4f9d7958a5e50a7407a58c9p+0L : inexact-ok
+= asinh upward ldbl-128 0x2p+12L : 0x9.b43d4f9d7958a5e50a7407a58c98p+0L : inexact-ok
+= asinh downward ldbl-128ibm 0x2p+12L : 0x9.b43d4f9d7958a5e50a7407a58cp+0L : inexact-ok
+= asinh tonearest ldbl-128ibm 0x2p+12L : 0x9.b43d4f9d7958a5e50a7407a58cp+0L : inexact-ok
+= asinh towardzero ldbl-128ibm 0x2p+12L : 0x9.b43d4f9d7958a5e50a7407a58cp+0L : inexact-ok
+= asinh upward ldbl-128ibm 0x2p+12L : 0x9.b43d4f9d7958a5e50a7407a59p+0L : inexact-ok
+asinh 0x1p24
+= asinh downward flt-32 0x1p+24f : 0x1.154244p+4f : inexact-ok
+= asinh tonearest flt-32 0x1p+24f : 0x1.154246p+4f : inexact-ok
+= asinh towardzero flt-32 0x1p+24f : 0x1.154244p+4f : inexact-ok
+= asinh upward flt-32 0x1p+24f : 0x1.154246p+4f : inexact-ok
+= asinh downward dbl-64 0x1p+24 : 0x1.1542457337d43p+4 : inexact-ok
+= asinh tonearest dbl-64 0x1p+24 : 0x1.1542457337d43p+4 : inexact-ok
+= asinh towardzero dbl-64 0x1p+24 : 0x1.1542457337d43p+4 : inexact-ok
+= asinh upward dbl-64 0x1p+24 : 0x1.1542457337d44p+4 : inexact-ok
+= asinh downward ldbl-96-intel 0x1p+24L : 0x1.1542457337d4321cp+4L : inexact-ok
+= asinh tonearest ldbl-96-intel 0x1p+24L : 0x1.1542457337d4321cp+4L : inexact-ok
+= asinh towardzero ldbl-96-intel 0x1p+24L : 0x1.1542457337d4321cp+4L : inexact-ok
+= asinh upward ldbl-96-intel 0x1p+24L : 0x1.1542457337d4321ep+4L : inexact-ok
+= asinh downward ldbl-96-m68k 0x1p+24L : 0x1.1542457337d4321cp+4L : inexact-ok
+= asinh tonearest ldbl-96-m68k 0x1p+24L : 0x1.1542457337d4321cp+4L : inexact-ok
+= asinh towardzero ldbl-96-m68k 0x1p+24L : 0x1.1542457337d4321cp+4L : inexact-ok
+= asinh upward ldbl-96-m68k 0x1p+24L : 0x1.1542457337d4321ep+4L : inexact-ok
+= asinh downward ldbl-128 0x1p+24L : 0x1.1542457337d4321c6b73c89d84abp+4L : inexact-ok
+= asinh tonearest ldbl-128 0x1p+24L : 0x1.1542457337d4321c6b73c89d84acp+4L : inexact-ok
+= asinh towardzero ldbl-128 0x1p+24L : 0x1.1542457337d4321c6b73c89d84abp+4L : inexact-ok
+= asinh upward ldbl-128 0x1p+24L : 0x1.1542457337d4321c6b73c89d84acp+4L : inexact-ok
+= asinh downward ldbl-128ibm 0x1p+24L : 0x1.1542457337d4321c6b73c89d848p+4L : inexact-ok
+= asinh tonearest ldbl-128ibm 0x1p+24L : 0x1.1542457337d4321c6b73c89d848p+4L : inexact-ok
+= asinh towardzero ldbl-128ibm 0x1p+24L : 0x1.1542457337d4321c6b73c89d848p+4L : inexact-ok
+= asinh upward ldbl-128ibm 0x1p+24L : 0x1.1542457337d4321c6b73c89d85p+4L : inexact-ok
+asinh 0x1p25
+= asinh downward flt-32 0x2p+24f : 0x1.205966p+4f : inexact-ok
+= asinh tonearest flt-32 0x2p+24f : 0x1.205966p+4f : inexact-ok
+= asinh towardzero flt-32 0x2p+24f : 0x1.205966p+4f : inexact-ok
+= asinh upward flt-32 0x2p+24f : 0x1.205968p+4f : inexact-ok
+= asinh downward dbl-64 0x2p+24 : 0x1.205966f2b4f12p+4 : inexact-ok
+= asinh tonearest dbl-64 0x2p+24 : 0x1.205966f2b4f12p+4 : inexact-ok
+= asinh towardzero dbl-64 0x2p+24 : 0x1.205966f2b4f12p+4 : inexact-ok
+= asinh upward dbl-64 0x2p+24 : 0x1.205966f2b4f13p+4 : inexact-ok
+= asinh downward ldbl-96-intel 0x2p+24L : 0x1.205966f2b4f126b6p+4L : inexact-ok
+= asinh tonearest ldbl-96-intel 0x2p+24L : 0x1.205966f2b4f126b8p+4L : inexact-ok
+= asinh towardzero ldbl-96-intel 0x2p+24L : 0x1.205966f2b4f126b6p+4L : inexact-ok
+= asinh upward ldbl-96-intel 0x2p+24L : 0x1.205966f2b4f126b8p+4L : inexact-ok
+= asinh downward ldbl-96-m68k 0x2p+24L : 0x1.205966f2b4f126b6p+4L : inexact-ok
+= asinh tonearest ldbl-96-m68k 0x2p+24L : 0x1.205966f2b4f126b8p+4L : inexact-ok
+= asinh towardzero ldbl-96-m68k 0x2p+24L : 0x1.205966f2b4f126b6p+4L : inexact-ok
+= asinh upward ldbl-96-m68k 0x2p+24L : 0x1.205966f2b4f126b8p+4L : inexact-ok
+= asinh downward ldbl-128 0x2p+24L : 0x1.205966f2b4f126b7281203d70652p+4L : inexact-ok
+= asinh tonearest ldbl-128 0x2p+24L : 0x1.205966f2b4f126b7281203d70653p+4L : inexact-ok
+= asinh towardzero ldbl-128 0x2p+24L : 0x1.205966f2b4f126b7281203d70652p+4L : inexact-ok
+= asinh upward ldbl-128 0x2p+24L : 0x1.205966f2b4f126b7281203d70653p+4L : inexact-ok
+= asinh downward ldbl-128ibm 0x2p+24L : 0x1.205966f2b4f126b7281203d706p+4L : inexact-ok
+= asinh tonearest ldbl-128ibm 0x2p+24L : 0x1.205966f2b4f126b7281203d7068p+4L : inexact-ok
+= asinh towardzero ldbl-128ibm 0x2p+24L : 0x1.205966f2b4f126b7281203d706p+4L : inexact-ok
+= asinh upward ldbl-128ibm 0x2p+24L : 0x1.205966f2b4f126b7281203d7068p+4L : inexact-ok
+asinh 0x1p26
+= asinh downward flt-32 0x4p+24f : 0x1.2b7088p+4f : inexact-ok
+= asinh tonearest flt-32 0x4p+24f : 0x1.2b7088p+4f : inexact-ok
+= asinh towardzero flt-32 0x4p+24f : 0x1.2b7088p+4f : inexact-ok
+= asinh upward flt-32 0x4p+24f : 0x1.2b708ap+4f : inexact-ok
+= asinh downward dbl-64 0x4p+24 : 0x1.2b708872320e1p+4 : inexact-ok
+= asinh tonearest dbl-64 0x4p+24 : 0x1.2b708872320e2p+4 : inexact-ok
+= asinh towardzero dbl-64 0x4p+24 : 0x1.2b708872320e1p+4 : inexact-ok
+= asinh upward dbl-64 0x4p+24 : 0x1.2b708872320e2p+4 : inexact-ok
+= asinh downward ldbl-96-intel 0x4p+24L : 0x1.2b708872320e1d9p+4L : inexact-ok
+= asinh tonearest ldbl-96-intel 0x4p+24L : 0x1.2b708872320e1d92p+4L : inexact-ok
+= asinh towardzero ldbl-96-intel 0x4p+24L : 0x1.2b708872320e1d9p+4L : inexact-ok
+= asinh upward ldbl-96-intel 0x4p+24L : 0x1.2b708872320e1d92p+4L : inexact-ok
+= asinh downward ldbl-96-m68k 0x4p+24L : 0x1.2b708872320e1d9p+4L : inexact-ok
+= asinh tonearest ldbl-96-m68k 0x4p+24L : 0x1.2b708872320e1d92p+4L : inexact-ok
+= asinh towardzero ldbl-96-m68k 0x4p+24L : 0x1.2b708872320e1d9p+4L : inexact-ok
+= asinh upward ldbl-96-m68k 0x4p+24L : 0x1.2b708872320e1d92p+4L : inexact-ok
+= asinh downward ldbl-128 0x4p+24L : 0x1.2b708872320e1d91e4b03f1086a8p+4L : inexact-ok
+= asinh tonearest ldbl-128 0x4p+24L : 0x1.2b708872320e1d91e4b03f1086a9p+4L : inexact-ok
+= asinh towardzero ldbl-128 0x4p+24L : 0x1.2b708872320e1d91e4b03f1086a8p+4L : inexact-ok
+= asinh upward ldbl-128 0x4p+24L : 0x1.2b708872320e1d91e4b03f1086a9p+4L : inexact-ok
+= asinh downward ldbl-128ibm 0x4p+24L : 0x1.2b708872320e1d91e4b03f10868p+4L : inexact-ok
+= asinh tonearest ldbl-128ibm 0x4p+24L : 0x1.2b708872320e1d91e4b03f10868p+4L : inexact-ok
+= asinh towardzero ldbl-128ibm 0x4p+24L : 0x1.2b708872320e1d91e4b03f10868p+4L : inexact-ok
+= asinh upward ldbl-128ibm 0x4p+24L : 0x1.2b708872320e1d91e4b03f1087p+4L : inexact-ok
+asinh 0x1p27
+= asinh downward flt-32 0x8p+24f : 0x1.3687a8p+4f : inexact-ok
+= asinh tonearest flt-32 0x8p+24f : 0x1.3687aap+4f : inexact-ok
+= asinh towardzero flt-32 0x8p+24f : 0x1.3687a8p+4f : inexact-ok
+= asinh upward flt-32 0x8p+24f : 0x1.3687aap+4f : inexact-ok
+= asinh downward dbl-64 0x8p+24 : 0x1.3687a9f1af2b1p+4 : inexact-ok
+= asinh tonearest dbl-64 0x8p+24 : 0x1.3687a9f1af2b1p+4 : inexact-ok
+= asinh towardzero dbl-64 0x8p+24 : 0x1.3687a9f1af2b1p+4 : inexact-ok
+= asinh upward dbl-64 0x8p+24 : 0x1.3687a9f1af2b2p+4 : inexact-ok
+= asinh downward ldbl-96-intel 0x8p+24L : 0x1.3687a9f1af2b14fcp+4L : inexact-ok
+= asinh tonearest ldbl-96-intel 0x8p+24L : 0x1.3687a9f1af2b14fcp+4L : inexact-ok
+= asinh towardzero ldbl-96-intel 0x8p+24L : 0x1.3687a9f1af2b14fcp+4L : inexact-ok
+= asinh upward ldbl-96-intel 0x8p+24L : 0x1.3687a9f1af2b14fep+4L : inexact-ok
+= asinh downward ldbl-96-m68k 0x8p+24L : 0x1.3687a9f1af2b14fcp+4L : inexact-ok
+= asinh tonearest ldbl-96-m68k 0x8p+24L : 0x1.3687a9f1af2b14fcp+4L : inexact-ok
+= asinh towardzero ldbl-96-m68k 0x8p+24L : 0x1.3687a9f1af2b14fcp+4L : inexact-ok
+= asinh upward ldbl-96-m68k 0x8p+24L : 0x1.3687a9f1af2b14fep+4L : inexact-ok
+= asinh downward ldbl-128 0x8p+24L : 0x1.3687a9f1af2b14fca14e7a4a06e9p+4L : inexact-ok
+= asinh tonearest ldbl-128 0x8p+24L : 0x1.3687a9f1af2b14fca14e7a4a06e9p+4L : inexact-ok
+= asinh towardzero ldbl-128 0x8p+24L : 0x1.3687a9f1af2b14fca14e7a4a06e9p+4L : inexact-ok
+= asinh upward ldbl-128 0x8p+24L : 0x1.3687a9f1af2b14fca14e7a4a06eap+4L : inexact-ok
+= asinh downward ldbl-128ibm 0x8p+24L : 0x1.3687a9f1af2b14fca14e7a4a068p+4L : inexact-ok
+= asinh tonearest ldbl-128ibm 0x8p+24L : 0x1.3687a9f1af2b14fca14e7a4a07p+4L : inexact-ok
+= asinh towardzero ldbl-128ibm 0x8p+24L : 0x1.3687a9f1af2b14fca14e7a4a068p+4L : inexact-ok
+= asinh upward ldbl-128ibm 0x8p+24L : 0x1.3687a9f1af2b14fca14e7a4a07p+4L : inexact-ok
+asinh 0x1p28
+= asinh downward flt-32 0x1p+28f : 0x1.419ecap+4f : inexact-ok
+= asinh tonearest flt-32 0x1p+28f : 0x1.419eccp+4f : inexact-ok
+= asinh towardzero flt-32 0x1p+28f : 0x1.419ecap+4f : inexact-ok
+= asinh upward flt-32 0x1p+28f : 0x1.419eccp+4f : inexact-ok
+= asinh downward dbl-64 0x1p+28 : 0x1.419ecb712c48p+4 : inexact-ok
+= asinh tonearest dbl-64 0x1p+28 : 0x1.419ecb712c481p+4 : inexact-ok
+= asinh towardzero dbl-64 0x1p+28 : 0x1.419ecb712c48p+4 : inexact-ok
+= asinh upward dbl-64 0x1p+28 : 0x1.419ecb712c481p+4 : inexact-ok
+= asinh downward ldbl-96-intel 0x1p+28L : 0x1.419ecb712c480c8ap+4L : inexact-ok
+= asinh tonearest ldbl-96-intel 0x1p+28L : 0x1.419ecb712c480c8cp+4L : inexact-ok
+= asinh towardzero ldbl-96-intel 0x1p+28L : 0x1.419ecb712c480c8ap+4L : inexact-ok
+= asinh upward ldbl-96-intel 0x1p+28L : 0x1.419ecb712c480c8cp+4L : inexact-ok
+= asinh downward ldbl-96-m68k 0x1p+28L : 0x1.419ecb712c480c8ap+4L : inexact-ok
+= asinh tonearest ldbl-96-m68k 0x1p+28L : 0x1.419ecb712c480c8cp+4L : inexact-ok
+= asinh towardzero ldbl-96-m68k 0x1p+28L : 0x1.419ecb712c480c8ap+4L : inexact-ok
+= asinh upward ldbl-96-m68k 0x1p+28L : 0x1.419ecb712c480c8cp+4L : inexact-ok
+= asinh downward ldbl-128 0x1p+28L : 0x1.419ecb712c480c8b5decb5838728p+4L : inexact-ok
+= asinh tonearest ldbl-128 0x1p+28L : 0x1.419ecb712c480c8b5decb5838728p+4L : inexact-ok
+= asinh towardzero ldbl-128 0x1p+28L : 0x1.419ecb712c480c8b5decb5838728p+4L : inexact-ok
+= asinh upward ldbl-128 0x1p+28L : 0x1.419ecb712c480c8b5decb5838729p+4L : inexact-ok
+= asinh downward ldbl-128ibm 0x1p+28L : 0x1.419ecb712c480c8b5decb58387p+4L : inexact-ok
+= asinh tonearest ldbl-128ibm 0x1p+28L : 0x1.419ecb712c480c8b5decb58387p+4L : inexact-ok
+= asinh towardzero ldbl-128ibm 0x1p+28L : 0x1.419ecb712c480c8b5decb58387p+4L : inexact-ok
+= asinh upward ldbl-128ibm 0x1p+28L : 0x1.419ecb712c480c8b5decb583878p+4L : inexact-ok
+asinh 0x1p29
+= asinh downward flt-32 0x2p+28f : 0x1.4cb5ecp+4f : inexact-ok
+= asinh tonearest flt-32 0x2p+28f : 0x1.4cb5ecp+4f : inexact-ok
+= asinh towardzero flt-32 0x2p+28f : 0x1.4cb5ecp+4f : inexact-ok
+= asinh upward flt-32 0x2p+28f : 0x1.4cb5eep+4f : inexact-ok
+= asinh downward dbl-64 0x2p+28 : 0x1.4cb5ecf0a965p+4 : inexact-ok
+= asinh tonearest dbl-64 0x2p+28 : 0x1.4cb5ecf0a965p+4 : inexact-ok
+= asinh towardzero dbl-64 0x2p+28 : 0x1.4cb5ecf0a965p+4 : inexact-ok
+= asinh upward dbl-64 0x2p+28 : 0x1.4cb5ecf0a9651p+4 : inexact-ok
+= asinh downward ldbl-96-intel 0x2p+28L : 0x1.4cb5ecf0a9650422p+4L : inexact-ok
+= asinh tonearest ldbl-96-intel 0x2p+28L : 0x1.4cb5ecf0a9650424p+4L : inexact-ok
+= asinh towardzero ldbl-96-intel 0x2p+28L : 0x1.4cb5ecf0a9650422p+4L : inexact-ok
+= asinh upward ldbl-96-intel 0x2p+28L : 0x1.4cb5ecf0a9650424p+4L : inexact-ok
+= asinh downward ldbl-96-m68k 0x2p+28L : 0x1.4cb5ecf0a9650422p+4L : inexact-ok
+= asinh tonearest ldbl-96-m68k 0x2p+28L : 0x1.4cb5ecf0a9650424p+4L : inexact-ok
+= asinh towardzero ldbl-96-m68k 0x2p+28L : 0x1.4cb5ecf0a9650422p+4L : inexact-ok
+= asinh upward ldbl-96-m68k 0x2p+28L : 0x1.4cb5ecf0a9650424p+4L : inexact-ok
+= asinh downward ldbl-128 0x2p+28L : 0x1.4cb5ecf0a96504231a8af0bd0767p+4L : inexact-ok
+= asinh tonearest ldbl-128 0x2p+28L : 0x1.4cb5ecf0a96504231a8af0bd0768p+4L : inexact-ok
+= asinh towardzero ldbl-128 0x2p+28L : 0x1.4cb5ecf0a96504231a8af0bd0767p+4L : inexact-ok
+= asinh upward ldbl-128 0x2p+28L : 0x1.4cb5ecf0a96504231a8af0bd0768p+4L : inexact-ok
+= asinh downward ldbl-128ibm 0x2p+28L : 0x1.4cb5ecf0a96504231a8af0bd07p+4L : inexact-ok
+= asinh tonearest ldbl-128ibm 0x2p+28L : 0x1.4cb5ecf0a96504231a8af0bd078p+4L : inexact-ok
+= asinh towardzero ldbl-128ibm 0x2p+28L : 0x1.4cb5ecf0a96504231a8af0bd07p+4L : inexact-ok
+= asinh upward ldbl-128ibm 0x2p+28L : 0x1.4cb5ecf0a96504231a8af0bd078p+4L : inexact-ok
+asinh 0x1p30
+= asinh downward flt-32 0x4p+28f : 0x1.57cd0ep+4f : inexact-ok
+= asinh tonearest flt-32 0x4p+28f : 0x1.57cd0ep+4f : inexact-ok
+= asinh towardzero flt-32 0x4p+28f : 0x1.57cd0ep+4f : inexact-ok
+= asinh upward flt-32 0x4p+28f : 0x1.57cd1p+4f : inexact-ok
+= asinh downward dbl-64 0x4p+28 : 0x1.57cd0e702681fp+4 : inexact-ok
+= asinh tonearest dbl-64 0x4p+28 : 0x1.57cd0e702682p+4 : inexact-ok
+= asinh towardzero dbl-64 0x4p+28 : 0x1.57cd0e702681fp+4 : inexact-ok
+= asinh upward dbl-64 0x4p+28 : 0x1.57cd0e702682p+4 : inexact-ok
+= asinh downward ldbl-96-intel 0x4p+28L : 0x1.57cd0e702681fbbcp+4L : inexact-ok
+= asinh tonearest ldbl-96-intel 0x4p+28L : 0x1.57cd0e702681fbbep+4L : inexact-ok
+= asinh towardzero ldbl-96-intel 0x4p+28L : 0x1.57cd0e702681fbbcp+4L : inexact-ok
+= asinh upward ldbl-96-intel 0x4p+28L : 0x1.57cd0e702681fbbep+4L : inexact-ok
+= asinh downward ldbl-96-m68k 0x4p+28L : 0x1.57cd0e702681fbbcp+4L : inexact-ok
+= asinh tonearest ldbl-96-m68k 0x4p+28L : 0x1.57cd0e702681fbbep+4L : inexact-ok
+= asinh towardzero ldbl-96-m68k 0x4p+28L : 0x1.57cd0e702681fbbcp+4L : inexact-ok
+= asinh upward ldbl-96-m68k 0x4p+28L : 0x1.57cd0e702681fbbep+4L : inexact-ok
+= asinh downward ldbl-128 0x4p+28L : 0x1.57cd0e702681fbbd17292bf687a6p+4L : inexact-ok
+= asinh tonearest ldbl-128 0x4p+28L : 0x1.57cd0e702681fbbd17292bf687a7p+4L : inexact-ok
+= asinh towardzero ldbl-128 0x4p+28L : 0x1.57cd0e702681fbbd17292bf687a6p+4L : inexact-ok
+= asinh upward ldbl-128 0x4p+28L : 0x1.57cd0e702681fbbd17292bf687a7p+4L : inexact-ok
+= asinh downward ldbl-128ibm 0x4p+28L : 0x1.57cd0e702681fbbd17292bf6878p+4L : inexact-ok
+= asinh tonearest ldbl-128ibm 0x4p+28L : 0x1.57cd0e702681fbbd17292bf6878p+4L : inexact-ok
+= asinh towardzero ldbl-128ibm 0x4p+28L : 0x1.57cd0e702681fbbd17292bf6878p+4L : inexact-ok
+= asinh upward ldbl-128ibm 0x4p+28L : 0x1.57cd0e702681fbbd17292bf688p+4L : inexact-ok
+asinh 0x1p31
+= asinh downward flt-32 0x8p+28f : 0x1.62e42ep+4f : inexact-ok
+= asinh tonearest flt-32 0x8p+28f : 0x1.62e43p+4f : inexact-ok
+= asinh towardzero flt-32 0x8p+28f : 0x1.62e42ep+4f : inexact-ok
+= asinh upward flt-32 0x8p+28f : 0x1.62e43p+4f : inexact-ok
+= asinh downward dbl-64 0x8p+28 : 0x1.62e42fefa39efp+4 : inexact-ok
+= asinh tonearest dbl-64 0x8p+28 : 0x1.62e42fefa39efp+4 : inexact-ok
+= asinh towardzero dbl-64 0x8p+28 : 0x1.62e42fefa39efp+4 : inexact-ok
+= asinh upward dbl-64 0x8p+28 : 0x1.62e42fefa39fp+4 : inexact-ok
+= asinh downward ldbl-96-intel 0x8p+28L : 0x1.62e42fefa39ef356p+4L : inexact-ok
+= asinh tonearest ldbl-96-intel 0x8p+28L : 0x1.62e42fefa39ef358p+4L : inexact-ok
+= asinh towardzero ldbl-96-intel 0x8p+28L : 0x1.62e42fefa39ef356p+4L : inexact-ok
+= asinh upward ldbl-96-intel 0x8p+28L : 0x1.62e42fefa39ef358p+4L : inexact-ok
+= asinh downward ldbl-96-m68k 0x8p+28L : 0x1.62e42fefa39ef356p+4L : inexact-ok
+= asinh tonearest ldbl-96-m68k 0x8p+28L : 0x1.62e42fefa39ef358p+4L : inexact-ok
+= asinh towardzero ldbl-96-m68k 0x8p+28L : 0x1.62e42fefa39ef356p+4L : inexact-ok
+= asinh upward ldbl-96-m68k 0x8p+28L : 0x1.62e42fefa39ef358p+4L : inexact-ok
+= asinh downward ldbl-128 0x8p+28L : 0x1.62e42fefa39ef357a3c7673007e5p+4L : inexact-ok
+= asinh tonearest ldbl-128 0x8p+28L : 0x1.62e42fefa39ef357a3c7673007e6p+4L : inexact-ok
+= asinh towardzero ldbl-128 0x8p+28L : 0x1.62e42fefa39ef357a3c7673007e5p+4L : inexact-ok
+= asinh upward ldbl-128 0x8p+28L : 0x1.62e42fefa39ef357a3c7673007e6p+4L : inexact-ok
+= asinh downward ldbl-128ibm 0x8p+28L : 0x1.62e42fefa39ef357a3c76730078p+4L : inexact-ok
+= asinh tonearest ldbl-128ibm 0x8p+28L : 0x1.62e42fefa39ef357a3c7673008p+4L : inexact-ok
+= asinh towardzero ldbl-128ibm 0x8p+28L : 0x1.62e42fefa39ef357a3c76730078p+4L : inexact-ok
+= asinh upward ldbl-128ibm 0x8p+28L : 0x1.62e42fefa39ef357a3c7673008p+4L : inex