Fix ldbl-128ibm cos range reduction near pi/2 (bug 15359).

This commit is contained in:
Joseph Myers 2013-05-09 21:30:08 +00:00
parent d0213cd0b6
commit ed41ffefc3
3 changed files with 12 additions and 7 deletions

View File

@ -1,5 +1,10 @@
2013-05-09 Joseph Myers <joseph@codesourcery.com>
[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.

4
NEWS
View File

@ -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).

View File

@ -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;