]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Fix ldbl-128 j0l spurious underflows (bug 19156).
authorJoseph Myers <joseph@codesourcery.com>
Wed, 21 Oct 2015 16:40:20 +0000 (16:40 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Wed, 21 Oct 2015 16:40:20 +0000 (16:40 +0000)
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.

ChangeLog
NEWS
sysdeps/ieee754/ldbl-128/e_j0l.c

index f2422edc07a5acdacf2a0102dbb5a701fd923eed..bc95bda32e3f6e36987b9ab3197ff306b841035f 100644 (file)
--- 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 1313ab25fff48dfde4e37ea8d744e6af5ddb5859..de3a233388e177aab57988bc8595dc95efb9ba09 100644 (file)
--- 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
index 1320de7044d701142f5d1e99bdfb787bccf10f96..c208916a790501451eab591a2eafb52208f9db23 100644 (file)
@@ -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);