diff options
author | Ulrich Drepper <drepper@gmail.com> | 2011-10-29 14:08:56 -0400 |
---|---|---|
committer | Ulrich Drepper <drepper@gmail.com> | 2011-10-29 14:08:56 -0400 |
commit | cb95113e30aead7b97cd806278c0ff055ba721b6 (patch) | |
tree | fde7e269b8ace65f635aade43c31b355c4dd52aa | |
parent | 09e18697732f90357db0b3241e563a4db8ebfb03 (diff) | |
download | glibc-cb95113e30aead7b97cd806278c0ff055ba721b6.tar.gz glibc-cb95113e30aead7b97cd806278c0ff055ba721b6.tar.xz glibc-cb95113e30aead7b97cd806278c0ff055ba721b6.zip |
Fix accuracy problem in generic sin
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | NEWS | 8 | ||||
-rw-r--r-- | math/libm-test.inc | 1 | ||||
-rw-r--r-- | sysdeps/ieee754/dbl-64/s_sin.c | 2 |
4 files changed, 13 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog index 6cb54e65d4..4c5ff75bcf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2011-07-03 Andreas Jaeger <aj@suse.de> + + [BZ #10709] + * sysdeps/ieee754/dbl-64/s_sin.c (__sin): Fix incorrect rounding + of sin. Patch suggested by Paul Zimmermann <zimmerma+gcc@loria.fr>. + * math/libm-test.inc (sin_test): Add test case. + 2011-10-29 Ulrich Drepper <drepper@gmail.com> [BZ #13337] diff --git a/NEWS b/NEWS index e4b9f449d3..73ab2b9e87 100644 --- a/NEWS +++ b/NEWS @@ -9,10 +9,10 @@ Version 2.15 * The following bugs are resolved with this release: - 6779, 6783, 9696, 11589, 12403, 12847, 12868, 12852, 12874, 12885, 12892, - 12907, 12922, 12935, 13007, 13021, 13067, 13068, 13090, 13092, 13114, - 13118, 13123, 13134, 13138, 13150, 13179, 13192, 13268, 13291, 13335, - 13337, 13344 + 6779, 6783, 9696, 10709, 11589, 12403, 12847, 12868, 12852, 12874, 12885, + 12892, 12907, 12922, 12935, 13007, 13021, 13067, 13068, 13090, 13092, + 13114, 13118, 13123, 13134, 13138, 13150, 13179, 13192, 13268, 13291, + 13335, 13337, 13344 * New program pldd to list loaded object of a process Implemented by Ulrich Drepper. diff --git a/math/libm-test.inc b/math/libm-test.inc index 96da7cde6b..a451174f0e 100644 --- a/math/libm-test.inc +++ b/math/libm-test.inc @@ -5642,6 +5642,7 @@ sin_test (void) #ifdef TEST_DOUBLE TEST_f_f (sin, 0.80190127184058835, 0.71867942238767868); + TEST_f_f (sin, 2.522464e-1, 2.4957989804940911e-1); #endif END (sin); diff --git a/sysdeps/ieee754/dbl-64/s_sin.c b/sysdeps/ieee754/dbl-64/s_sin.c index 6f19f158f1..5183e55e8b 100644 --- a/sysdeps/ieee754/dbl-64/s_sin.c +++ b/sysdeps/ieee754/dbl-64/s_sin.c @@ -138,7 +138,7 @@ __sin(double x){ cor=(ssn+s*ccs-sn*c)+cs*s; res=sn+cor; cor=(sn-res)+cor; - return (res==res+1.025*cor)? res : slow1(x); + return (res==res+1.096*cor)? res : slow1(x); } /* else if (k < 0x3feb6000) */ /*----------------------- 0.855469 <|x|<2.426265 ----------------------*/ |