]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Fix ldbl-128 cos range reduction near pi/2 (bug 15429).
authorJoseph Myers <joseph@codesourcery.com>
Thu, 9 May 2013 21:28:54 +0000 (21:28 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Thu, 9 May 2013 21:28:54 +0000 (21:28 +0000)
ChangeLog
NEWS
sysdeps/ieee754/ldbl-128/e_rem_pio2l.c

index b6eae595fc2d1b982fcf765de5cbbe5ada67ae9a..3ed5f445b2a5dd34fe72e9ea0378da7efc915e5b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2013-05-09  Joseph Myers  <joseph@codesourcery.com>
 
+       [BZ #15429]
+       * sysdeps/ieee754/ldbl-128/e_rem_pio2l.c (c): Use 113 bits for
+       high part of pi/2.
+       (__ieee754_rem_pio2l): Update comments.
+
        * math/libm-test.inc (M_SQRT_2_2): Remove macro.
        (csqrt_test): Use M_SQRT1_2l instead of M_SQRT_2_2.
 
diff --git a/NEWS b/NEWS
index 1a02e19f2b85ab6c1cccc5729bcd738e2b4f6113..70e7ecf669ffe70af11c01b0d1521f280d9f7ab9 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -16,7 +16,7 @@ Version 2.18
   15062, 15078, 15084, 15085, 15086, 15160, 15214, 15221, 15232, 15234,
   15283, 15285, 15287, 15304, 15305, 15307, 15309, 15327, 15330, 15335,
   15336, 15337, 15342, 15346, 15361, 15366, 15380, 15394, 15405, 15406,
-  15409, 15416, 15418, 15419, 15423, 15426.
+  15409, 15416, 15418, 15419, 15423, 15426, 15429.
 
 * CVE-2013-0242 Buffer overrun in regexp matcher has been fixed (Bugzilla
   #15078).
index 84846fdc3d30d6c406bce0e644f909022fc6f90a..ee856acd5f584b6bf5b689f223159542d58c6c73 100644 (file)
@@ -184,13 +184,13 @@ static const int32_t two_over_pi[] = {
 };
 
 static const long double c[] = {
-/* 93 bits of pi/2 */
+/* 113 bits of pi/2 */
 #define PI_2_1 c[0]
- 1.57079632679489661923132169155131424e+00L, /* 3fff921fb54442d18469898cc5100000 */
+ 0x1.921fb54442d18469898cc51701b8p+0L,
 
 /* pi/2 - PI_2_1 */
 #define PI_2_1t c[1]
- 8.84372056613570112025531863263659260e-29L, /* 3fa1c06e0e68948127044533e63a0106 */
+ 0x3.9a252049c1114cf98e804177d4c8p-116L,
 };
 
 int32_t __ieee754_rem_pio2l(long double x, long double *y)
@@ -213,7 +213,7 @@ int32_t __ieee754_rem_pio2l(long double x, long double *y)
     {
       if (hx > 0)
        { 
-         /* 113 + 93 bit PI is ok */
+         /* 113 + 113 bit PI is ok */
          z = x - PI_2_1;
          y[0] = z - PI_2_1t;
          y[1] = (z - y[0]) - PI_2_1t;
@@ -221,7 +221,7 @@ int32_t __ieee754_rem_pio2l(long double x, long double *y)
        }
       else
         {
-         /* 113 + 93 bit PI is ok */
+         /* 113 + 113 bit PI is ok */
          z = x + PI_2_1;
          y[0] = z + PI_2_1t;
          y[1] = (z - y[0]) + PI_2_1t;