From 0a90a8f2b9af6dd226558df5d3825e0e9ccd4ce3 Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Wed, 21 Oct 2015 16:40:20 +0000 Subject: Fix ldbl-128 j0l spurious underflows (bug 19156). My recent addition of more tests for j0 showed up that the ldbl-128 implementation of j0l produces spurious underflow exceptions for arguments close to 0 (when the result is very close to 1). This patch fixes this by just returning the argument in that case. Tested for mips64 (where it fixes the recently-added tests that were previously failing). [BZ #19156] * sysdeps/ieee754/ldbl-128/e_j0l.c (__ieee754_j0l): Return 1 for arguments very close to 0. --- sysdeps/ieee754/ldbl-128/e_j0l.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'sysdeps/ieee754/ldbl-128/e_j0l.c') diff --git a/sysdeps/ieee754/ldbl-128/e_j0l.c b/sysdeps/ieee754/ldbl-128/e_j0l.c index 1320de7044..c208916a79 100644 --- a/sysdeps/ieee754/ldbl-128/e_j0l.c +++ b/sysdeps/ieee754/ldbl-128/e_j0l.c @@ -693,6 +693,8 @@ __ieee754_j0l (long double x) xx = fabsl (x); if (xx <= 2.0L) { + if (xx < 0x1p-57L) + return 1.0L; /* 0 <= x <= 2 */ z = xx * xx; p = z * z * neval (z, J0_2N, NJ0_2N) / deval (z, J0_2D, NJ0_2D); -- cgit 1.4.1