From 137cef7d433407bd2ded8bcc5bea70e5858df47a Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Wed, 25 Feb 2015 11:13:41 +0000 Subject: 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. --- math/auto-libm-test-in | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) (limited to 'math/auto-libm-test-in') 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 -- cgit 1.4.1