aboutsummaryrefslogtreecommitdiff
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
parent1245e51596059a9844cff0938b10009c3b156115 (diff)
downloadglibc-0a90a8f2b9af6dd226558df5d3825e0e9ccd4ce3.zip
glibc-0a90a8f2b9af6dd226558df5d3825e0e9ccd4ce3.tar.gz
glibc-0a90a8f2b9af6dd226558df5d3825e0e9ccd4ce3.tar.bz2
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.
-rw-r--r--ChangeLog6
-rw-r--r--NEWS2
-rw-r--r--sysdeps/ieee754/ldbl-128/e_j0l.c2
3 files changed, 9 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index f2422ed..bc95bda 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2015-10-21 Joseph Myers <joseph@codesourcery.com>
+
+ [BZ #19156]
+ * sysdeps/ieee754/ldbl-128/e_j0l.c (__ieee754_j0l): Return 1 for
+ arguments very close to 0.
+
2015-10-21 Chris Metcalf <cmetcalf@ezchip.com>
* sysdeps/unix/sysv/linux/tile/sysdep.h (PSEUDO_END)
diff --git a/NEWS b/NEWS
index 1313ab2..de3a233 100644
--- a/NEWS
+++ b/NEWS
@@ -20,7 +20,7 @@ Version 2.23
18952, 18953, 18956, 18961, 18966, 18967, 18969, 18970, 18977, 18980,
18981, 18982, 18985, 19003, 19007, 19012, 19016, 19018, 19032, 19046,
19049, 19050, 19059, 19071, 19074, 19076, 19077, 19078, 19079, 19085,
- 19086, 19088, 19094, 19095, 19124, 19125, 19129, 19134, 19137.
+ 19086, 19088, 19094, 19095, 19124, 19125, 19129, 19134, 19137, 19156.
* There is now a --disable-timezone-tools configure option for disabling the
building and installing of the timezone related utilities (zic, zdump, and
diff --git a/sysdeps/ieee754/ldbl-128/e_j0l.c b/sysdeps/ieee754/ldbl-128/e_j0l.c
index 1320de7..c208916 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);