about summary refs log tree commit diff
diff options
context:
space:
mode:
authorStefan Liebler <stli@linux.vnet.ibm.com>2014-04-16 12:52:52 +0200
committerAndreas Krebbel <krebbel@linux.vnet.ibm.com>2014-04-16 13:03:46 +0200
commit8ea587db2b0bb5cd3e527982f7a1499748a987c3 (patch)
tree5510f3fafaf3a170906e7edcdd06c42f7001745a
parent9860b0450275ad2b69cb9360fd01d5c122a65fc5 (diff)
downloadglibc-8ea587db2b0bb5cd3e527982f7a1499748a987c3.tar.gz
glibc-8ea587db2b0bb5cd3e527982f7a1499748a987c3.tar.xz
glibc-8ea587db2b0bb5cd3e527982f7a1499748a987c3.zip
[BZ #16824] Fix failing y1 due to too large ulps in downward/upward rounding mode.
-rw-r--r--ChangeLog6
-rw-r--r--NEWS2
-rw-r--r--sysdeps/ieee754/ldbl-128/e_j1l.c1
3 files changed, 8 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 4a71410659..a4eba04b7c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2014-04-16  Stefan Liebler  <stli@linux.vnet.ibm.com>
+
+	[BZ #16824]
+	* sysdeps/ieee754/ldbl-128/e_j1l.c (__ieee754_y1l):
+	Set round-to-nearest internally to reduce error accumulation.
+
 2014-04-16  Alan Modra  <amodra@gmail.com>
 
 	[BZ #16740]
diff --git a/NEWS b/NEWS
index 867a3d6199..6a6580997e 100644
--- a/NEWS
+++ b/NEWS
@@ -14,7 +14,7 @@ Version 2.20
   16610, 16611, 16613, 16619, 16623, 16632, 16634, 16639, 16642, 16648,
   16649, 16670, 16674, 16677, 16680, 16683, 16689, 16695, 16701, 16706,
   16707, 16712, 16713, 16714, 16731, 16739, 16740, 16743, 16758, 16759,
-  16760, 16770, 16786, 16789, 16799, 16800, 16815, 16831, 16838.
+  16760, 16770, 16786, 16789, 16799, 16800, 16815, 16824, 16831, 16838.
 
 * Running the testsuite no longer terminates as soon as a test fails.
   Instead, a file tests.sum (xtests.sum from "make xcheck") is generated,
diff --git a/sysdeps/ieee754/ldbl-128/e_j1l.c b/sysdeps/ieee754/ldbl-128/e_j1l.c
index 70a1c86fd2..1264c95d49 100644
--- a/sysdeps/ieee754/ldbl-128/e_j1l.c
+++ b/sysdeps/ieee754/ldbl-128/e_j1l.c
@@ -856,6 +856,7 @@ __ieee754_y1l (long double x)
   if (xx <= 2.0L)
     {
       /* 0 <= x <= 2 */
+      SET_RESTORE_ROUNDL (FE_TONEAREST);
       z = xx * xx;
       p = xx * neval (z, Y0_2N, NY0_2N) / deval (z, Y0_2D, NY0_2D);
       p = -TWOOPI / xx + p;