Fix ldbl-128ibm atan2l for x near 1.

This commit is contained in:
Joseph Myers 2012-10-31 20:44:59 +00:00
parent 0eb6951257
commit 16a0e2ec87
4 changed files with 12 additions and 3 deletions

View File

@ -1,5 +1,10 @@
2012-10-31 Joseph Myers <joseph@codesourcery.com> 2012-10-31 Joseph Myers <joseph@codesourcery.com>
[BZ #14610]
* sysdeps/ieee754/ldbl-128ibm/e_atan2l.c (__ieee754_atan2l): Check
for low part of x being zero before using __atanl (y).
* math/libm-test.inc (atan2_test): Add another test.
* manual/install.texi (Configuring and compiling): Document * manual/install.texi (Configuring and compiling): Document
general use of test-wrapper and test-wrapper-env. general use of test-wrapper and test-wrapper-env.
* INSTALL: Regenerated. * INSTALL: Regenerated.

4
NEWS
View File

@ -16,8 +16,8 @@ Version 2.17
14303, 14307, 14328, 14331, 14336, 14337, 14347, 14349, 14376, 14417, 14303, 14307, 14328, 14331, 14336, 14337, 14347, 14349, 14376, 14417,
14459, 14476, 14477, 14505, 14510, 14516, 14518, 14519, 14530, 14532, 14459, 14476, 14477, 14505, 14510, 14516, 14518, 14519, 14530, 14532,
14538, 14543, 14544, 14545, 14557, 14562, 14568, 14576, 14579, 14583, 14538, 14543, 14544, 14545, 14557, 14562, 14568, 14576, 14579, 14583,
14587, 14595, 14602, 14621, 14638, 14645, 14648, 14652, 14660, 14661, 14587, 14595, 14602, 14610, 14621, 14638, 14645, 14648, 14652, 14660,
14683, 14694, 14716, 14743, 14767, 14783. 14661, 14683, 14694, 14716, 14743, 14767, 14783.
* Support for STT_GNU_IFUNC symbols added for s390 and s390x. * Support for STT_GNU_IFUNC symbols added for s390 and s390x.
Optimized versions of memcpy, memset, and memcmp added for System z10 and Optimized versions of memcpy, memset, and memcmp added for System z10 and

View File

@ -1297,6 +1297,9 @@ atan2_test (void)
TEST_ff_f (atan2, 1.390625L, 0.9296875L, 0.981498387184244311516296577615519772L); TEST_ff_f (atan2, 1.390625L, 0.9296875L, 0.981498387184244311516296577615519772L);
TEST_ff_f (atan2, -0.00756827042671106339L, -.001792735857538728036L, -1.80338464113663849327153994379639112L); TEST_ff_f (atan2, -0.00756827042671106339L, -.001792735857538728036L, -1.80338464113663849327153994379639112L);
#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 64
TEST_ff_f (atan2, 0x1.00000000000001p0L, 0x1.00000000000001p0L, M_PI_4l);
#endif
END (atan2); END (atan2);
} }

View File

@ -65,7 +65,8 @@ __ieee754_atan2l(long double y, long double x)
if(((ix)>0x7ff0000000000000LL)|| if(((ix)>0x7ff0000000000000LL)||
((iy)>0x7ff0000000000000LL)) /* x or y is NaN */ ((iy)>0x7ff0000000000000LL)) /* x or y is NaN */
return x+y; return x+y;
if(((hx-0x3ff0000000000000LL))==0) return __atanl(y); /* x=1.0L */ if(((hx-0x3ff0000000000000LL))==0
&& (lx&0x7fffffffffffffff)==0) return __atanl(y); /* x=1.0L */
m = ((hy>>63)&1)|((hx>>62)&2); /* 2*sign(x)+sign(y) */ m = ((hy>>63)&1)|((hx>>62)&2); /* 2*sign(x)+sign(y) */
/* when y = 0 */ /* when y = 0 */