From d0649b2d8efca33363e399f1ba07d77e85901cfc Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Mon, 10 Aug 2015 15:25:10 +0000 Subject: Fix ldbl-128ibm sinhl inaccuracy near 0 (bug 18789). ldbl-128ibm sinhl uses a too-big threshold to decide when to return the argument, resulting in large errors. This patch fixes it to use a more appropriate threshold. Tested for x86_64, x86 and powerpc. [BZ #18789] * sysdeps/ieee754/ldbl-128ibm/e_sinhl.c (__ieee754_sinhl): Use smaller threshold for returning the argument. * math/auto-libm-test-in: Add more tests of sinh. * math/auto-libm-test-out: Regenerated. * sysdeps/i386/fpu/libm-test-ulps: Update. --- sysdeps/ieee754/ldbl-128ibm/e_sinhl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'sysdeps/ieee754') diff --git a/sysdeps/ieee754/ldbl-128ibm/e_sinhl.c b/sysdeps/ieee754/ldbl-128ibm/e_sinhl.c index 08e5d86b41..00115df944 100644 --- a/sysdeps/ieee754/ldbl-128ibm/e_sinhl.c +++ b/sysdeps/ieee754/ldbl-128ibm/e_sinhl.c @@ -53,7 +53,7 @@ __ieee754_sinhl(long double x) if (jx<0) h = -h; /* |x| in [0,40], return sign(x)*0.5*(E+E/(E+1))) */ if (ix < 0x4044000000000000LL) { /* |x|<40 */ - if (ix<0x3e20000000000000LL) { /* |x|<2**-29 */ + if (ix<0x3c90000000000000LL) { /* |x|<2**-54 */ if (fabsl (x) < LDBL_MIN) { long double force_underflow = x * x; -- cgit 1.4.1