aboutsummaryrefslogtreecommitdiff
path: root/sysdeps
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2015-10-21 16:40:20 +0000
committerJoseph Myers <joseph@codesourcery.com>2015-10-21 16:40:20 +0000
commit0a90a8f2b9af6dd226558df5d3825e0e9ccd4ce3 (patch)
tree3089be81a979063289fe998a6f14681fa00ecd5a /sysdeps
parent1245e51596059a9844cff0938b10009c3b156115 (diff)
downloadglibc-0a90a8f2b9af6dd226558df5d3825e0e9ccd4ce3.tar
glibc-0a90a8f2b9af6dd226558df5d3825e0e9ccd4ce3.tar.gz
glibc-0a90a8f2b9af6dd226558df5d3825e0e9ccd4ce3.tar.bz2
glibc-0a90a8f2b9af6dd226558df5d3825e0e9ccd4ce3.zip
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.
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/ieee754/ldbl-128/e_j0l.c2
1 files changed, 2 insertions, 0 deletions
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);