about summary refs log tree commit diff
diff options
context:
space:
mode:
authorCarlos O'Donell <carlos@redhat.com>2013-04-24 16:29:33 -0400
committerCarlos O'Donell <carlos@redhat.com>2013-04-24 16:29:33 -0400
commit418601aa84a2b5cfa21f27bcb81b5c1d0fdf9ccd (patch)
treedfe82ae34f369ea143ccc182636f6fcf6b69f934
parent5e2218006061c9225ab6e761dad849b4baab632e (diff)
downloadglibc-418601aa84a2b5cfa21f27bcb81b5c1d0fdf9ccd.tar.gz
glibc-418601aa84a2b5cfa21f27bcb81b5c1d0fdf9ccd.tar.xz
glibc-418601aa84a2b5cfa21f27bcb81b5c1d0fdf9ccd.zip
math: Use accurate answers for cos and sincos.
Use the most accurate hex literals possible for the answers to the
cos and sincos tests that vary according to the error in the rounding
of PI/2.

---

2013-04-24  Carlos O'Donell  <carlos@redhat.com>

	* math/libm-test.inc (cos_test): Use accurate hex constants.
	(sincost_test): Likewise.
-rw-r--r--ChangeLog5
-rw-r--r--math/libm-test.inc20
2 files changed, 15 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index f3efba4002..e6a9a40d52 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2013-04-24  Carlos O'Donell  <carlos@redhat.com>
+
+	* math/libm-test.inc (cos_test): Use accurate hex constants.
+	(sincost_test): Likewise.
+
 2013-04-24  Joseph Myers  <joseph@codesourcery.com>
 
 	* math/libm-test.inc (catan_test): Add more tests.
diff --git a/math/libm-test.inc b/math/libm-test.inc
index 00edede316..eb9fa710cd 100644
--- a/math/libm-test.inc
+++ b/math/libm-test.inc
@@ -5413,23 +5413,23 @@ cos_test (void)
      to each type.  */
 #ifdef TEST_FLOAT
   /* 32-bit float.  */
-  TEST_f_f (cos, M_PI_2l, -4.371139000186241438857289400265215e-8L);
+  TEST_f_f (cos, M_PI_2l, -0x1.777a5cp-25L);
 #endif
 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MANT_DIG == 53)
   /* 64-bit double or 64-bit long double.  */
-  TEST_f_f (cos, M_PI_2l, 6.123233995736765886130329661375001e-17L);
+  TEST_f_f (cos, M_PI_2l, 0x1.1a62633145c07p-54L);
 #endif
 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 64
   /* 96-bit long double.  */
-  TEST_f_f (cos, M_PI_2l, -2.50827880633416601177866354016537e-20L);
+  TEST_f_f (cos, M_PI_2l, -0xe.ce675d1fc8f8cbbp-69L);
 #endif
 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 106
   /* 128-bit IBM long double.  */
-  TEST_f_f (cos, M_PI_2l, 1.082856673921913968223746169860580e-32L);
+  TEST_f_f (cos, M_PI_2l, 0x1.c1cd129024e088a67cc74020bcp-107L);
 #endif
 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 113
   /* 128-bit long double.  */
-  TEST_f_f (cos, M_PI_2l, 4.335905065061890512398522013021675e-35L);
+  TEST_f_f (cos, M_PI_2l, 0x1.cd129024e088a67cc74020bbea64p-115L);
 #endif
 
   TEST_f_f (cos, 0.75L, 0.731688868873820886311838753000084544L);
@@ -12240,23 +12240,23 @@ sincos_test (void)
      to each type.  */
 #ifdef TEST_FLOAT
   /* 32-bit float.  */
-  TEST_extra (sincos, M_PI_2l, 1, -4.371139000186241438857289400265215e-8L);
+  TEST_extra (sincos, M_PI_2l, 1, -0x1.777a5cp-25L);
 #endif
 #if defined TEST_DOUBLE || (defined TEST_LDOUBLE && LDBL_MANT_DIG == 53)
   /* 64-bit double or 64-bit long double.  */
-  TEST_extra (sincos, M_PI_2l, 1, 6.123233995736765886130329661375001e-17L);
+  TEST_extra (sincos, M_PI_2l, 1, 0x1.1a62633145c07p-54L);
 #endif
 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 64
   /* 96-bit long double.  */
-  TEST_extra (sincos, M_PI_2l, 1, -2.50827880633416601177866354016537e-20L);
+  TEST_extra (sincos, M_PI_2l, 1, -0xe.ce675d1fc8f8cbbp-69L);
 #endif
 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 106
   /* 128-bit IBM long double.  */
-  TEST_extra (sincos, M_PI_2l, 1, 1.082856673921913968223746169860580e-32L);
+  TEST_extra (sincos, M_PI_2l, 1, 0x1.c1cd129024e088a67cc74020bcp-107L);
 #endif
 #if defined TEST_LDOUBLE && LDBL_MANT_DIG == 113
   /* 128-bit long double.  */
-  TEST_extra (sincos, M_PI_2l, 1, 4.335905065061890512398522013021675e-35L);
+  TEST_extra (sincos, M_PI_2l, 1, 0x1.cd129024e088a67cc74020bbea64p-115L);
 #endif
 
   TEST_extra (sincos, M_PI_6l, 0.5, 0.86602540378443864676372317075293616L);