diff options
author | Joseph Myers <joseph@codesourcery.com> | 2012-10-31 20:44:59 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2012-10-31 20:44:59 +0000 |
commit | 16a0e2ec87f104961b88173fe8c96f9348850b0d (patch) | |
tree | afcb3c9f59e4f7b556a3fb05f6aebf75bf4bd858 | |
parent | 0eb69512575e1e2ccfec4c4489fa3fb6201d38d1 (diff) | |
download | glibc-16a0e2ec87f104961b88173fe8c96f9348850b0d.tar glibc-16a0e2ec87f104961b88173fe8c96f9348850b0d.tar.gz glibc-16a0e2ec87f104961b88173fe8c96f9348850b0d.tar.bz2 glibc-16a0e2ec87f104961b88173fe8c96f9348850b0d.zip |
Fix ldbl-128ibm atan2l for x near 1.
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | math/libm-test.inc | 3 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128ibm/e_atan2l.c | 3 |
4 files changed, 12 insertions, 3 deletions
@@ -1,5 +1,10 @@ 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 general use of test-wrapper and test-wrapper-env. * INSTALL: Regenerated. @@ -16,8 +16,8 @@ Version 2.17 14303, 14307, 14328, 14331, 14336, 14337, 14347, 14349, 14376, 14417, 14459, 14476, 14477, 14505, 14510, 14516, 14518, 14519, 14530, 14532, 14538, 14543, 14544, 14545, 14557, 14562, 14568, 14576, 14579, 14583, - 14587, 14595, 14602, 14621, 14638, 14645, 14648, 14652, 14660, 14661, - 14683, 14694, 14716, 14743, 14767, 14783. + 14587, 14595, 14602, 14610, 14621, 14638, 14645, 14648, 14652, 14660, + 14661, 14683, 14694, 14716, 14743, 14767, 14783. * Support for STT_GNU_IFUNC symbols added for s390 and s390x. Optimized versions of memcpy, memset, and memcmp added for System z10 and diff --git a/math/libm-test.inc b/math/libm-test.inc index 91019a1219..9c773927cb 100644 --- a/math/libm-test.inc +++ b/math/libm-test.inc @@ -1297,6 +1297,9 @@ atan2_test (void) TEST_ff_f (atan2, 1.390625L, 0.9296875L, 0.981498387184244311516296577615519772L); 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); } diff --git a/sysdeps/ieee754/ldbl-128ibm/e_atan2l.c b/sysdeps/ieee754/ldbl-128ibm/e_atan2l.c index fe5c8bd8dc..3e0535561c 100644 --- a/sysdeps/ieee754/ldbl-128ibm/e_atan2l.c +++ b/sysdeps/ieee754/ldbl-128ibm/e_atan2l.c @@ -65,7 +65,8 @@ __ieee754_atan2l(long double y, long double x) if(((ix)>0x7ff0000000000000LL)|| ((iy)>0x7ff0000000000000LL)) /* x or y is NaN */ 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) */ /* when y = 0 */ |