From: Joseph Myers Date: Thu, 9 May 2013 21:30:08 +0000 (+0000) Subject: Fix ldbl-128ibm cos range reduction near pi/2 (bug 15359). X-Git-Tag: glibc-2.18~302 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ed41ffefc3f947f14d565ea8d239ff2d31f6a7fe;p=thirdparty%2Fglibc.git Fix ldbl-128ibm cos range reduction near pi/2 (bug 15359). --- diff --git a/ChangeLog b/ChangeLog index 3ed5f445b2a..619ce644f50 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2013-05-09 Joseph Myers + [BZ #15359] + * sysdeps/ieee754/ldbl-128ibm/e_rem_pio2l.c (c): Use 106 bits for + high part of pi/2. + (__ieee754_rem_pio2l): Update comments. + [BZ #15429] * sysdeps/ieee754/ldbl-128/e_rem_pio2l.c (c): Use 113 bits for high part of pi/2. diff --git a/NEWS b/NEWS index 70e7ecf669f..74124949a8d 100644 --- a/NEWS +++ b/NEWS @@ -15,8 +15,8 @@ Version 2.18 14994, 14996, 15003, 15006, 15007, 15020, 15023, 15036, 15054, 15055, 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, 15429. + 15336, 15337, 15342, 15346, 15359, 15361, 15366, 15380, 15394, 15405, + 15406, 15409, 15416, 15418, 15419, 15423, 15426, 15429. * CVE-2013-0242 Buffer overrun in regexp matcher has been fixed (Bugzilla #15078). diff --git a/sysdeps/ieee754/ldbl-128ibm/e_rem_pio2l.c b/sysdeps/ieee754/ldbl-128ibm/e_rem_pio2l.c index 692ae249301..6a72d6a8534 100644 --- a/sysdeps/ieee754/ldbl-128ibm/e_rem_pio2l.c +++ b/sysdeps/ieee754/ldbl-128ibm/e_rem_pio2l.c @@ -185,13 +185,13 @@ static const int32_t two_over_pi[] = { }; static const long double c[] = { -/* 93 bits of pi/2 */ +/* 106 bits of pi/2 */ #define PI_2_1 c[0] - 1.57079632679489661923132169155131424e+00L, /* 3fff921fb54442d18469898cc5100000 */ + 0x1.921fb54442d18469898cc517018p+0L, /* pi/2 - PI_2_1 */ #define PI_2_1t c[1] - 8.84372056613570112025531863263659260e-29L, /* 3fa1c06e0e68948127044533e63a0106 */ + 0x3.839a252049c1114cf98e804178p-108L, }; int32_t __ieee754_rem_pio2l(long double x, long double *y) @@ -216,7 +216,7 @@ int32_t __ieee754_rem_pio2l(long double x, long double *y) { if (hx > 0) { - /* 113 + 93 bit PI is ok */ + /* 106 + 106 bit PI is ok */ z = x - PI_2_1; y[0] = z - PI_2_1t; y[1] = (z - y[0]) - PI_2_1t; @@ -224,7 +224,7 @@ int32_t __ieee754_rem_pio2l(long double x, long double *y) } else { - /* 113 + 93 bit PI is ok */ + /* 106 + 106 bit PI is ok */ z = x + PI_2_1; y[0] = z + PI_2_1t; y[1] = (z - y[0]) + PI_2_1t;