about summary refs log tree commit diff
path: root/math
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2012-07-06 11:17:41 +0000
committerJoseph Myers <joseph@codesourcery.com>2012-07-06 11:17:41 +0000
commitf17ac40d7cb8e8c462476b6ab703262f6b8f6da8 (patch)
treeb06be367df1701da97deb44092ddf8707d2e8db2 /math
parentfb21f89b75d0152aa42efb6b620843799a4cd76b (diff)
downloadglibc-f17ac40d7cb8e8c462476b6ab703262f6b8f6da8.tar.gz
glibc-f17ac40d7cb8e8c462476b6ab703262f6b8f6da8.tar.xz
glibc-f17ac40d7cb8e8c462476b6ab703262f6b8f6da8.zip
Fix expm1 spurious underflow exceptions (bug 6778).
Diffstat (limited to 'math')
-rw-r--r--math/libm-test.inc24
1 files changed, 22 insertions, 2 deletions
diff --git a/math/libm-test.inc b/math/libm-test.inc
index 6adbb61dbc..b87a40d8d9 100644
--- a/math/libm-test.inc
+++ b/math/libm-test.inc
@@ -4039,12 +4039,32 @@ expm1_test (void)
   TEST_f_f (expm1, 11356.25L, 9.05128237311923300051376115753226014206e+4931L);
 #endif
 
+  TEST_f_f (expm1, -10.0, -0.9999546000702375151484644084844394493898L);
+  TEST_f_f (expm1, -16.0, -0.9999998874648252807408854862248209398728L);
+  TEST_f_f (expm1, -17.0, -0.9999999586006228121483334034897228104472L);
+  TEST_f_f (expm1, -18.0, -0.9999999847700202552873715638633707664826L);
+  TEST_f_f (expm1, -36.0, -0.9999999999999997680477169756430611687736L);
+  TEST_f_f (expm1, -37.0, -0.9999999999999999146695237425593420572195L);
+  TEST_f_f (expm1, -38.0, -0.9999999999999999686086720795197037129104L);
+  TEST_f_f (expm1, -44.0, -0.9999999999999999999221886775886620348429L);
+  TEST_f_f (expm1, -45.0, -0.9999999999999999999713748141945060635553L);
+  TEST_f_f (expm1, -46.0, -0.9999999999999999999894693826424461876212L);
+  TEST_f_f (expm1, -73.0, -0.9999999999999999999999999999999802074012L);
+  TEST_f_f (expm1, -74.0, -0.9999999999999999999999999999999927187098L);
+  TEST_f_f (expm1, -75.0, -0.9999999999999999999999999999999973213630L);
+  TEST_f_f (expm1, -78.0, -0.9999999999999999999999999999999998666385L);
+  TEST_f_f (expm1, -79.0, -0.9999999999999999999999999999999999509391L);
+  TEST_f_f (expm1, -80.0, -0.9999999999999999999999999999999999819515L);
+  TEST_f_f (expm1, -100.0, -1.0);
+  TEST_f_f (expm1, -1000.0, -1.0);
+  TEST_f_f (expm1, -10000.0, -1.0);
+  TEST_f_f (expm1, -100000.0, -1.0);
+
   errno = 0;
   TEST_f_f (expm1, 100000.0, plus_infty, OVERFLOW_EXCEPTION);
   check_int ("errno for expm1(large) == ERANGE", errno, ERANGE, 0, 0, 0);
   TEST_f_f (expm1, max_value, plus_infty, OVERFLOW_EXCEPTION);
-  /* Bug 6778: spurious underflow exception.  */
-  TEST_f_f (expm1, -max_value, -1, UNDERFLOW_EXCEPTION_OK);
+  TEST_f_f (expm1, -max_value, -1);
 
   END (expm1);
 }