about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2013-05-15 10:43:19 +0000
committerJoseph Myers <joseph@codesourcery.com>2013-05-15 10:43:19 +0000
commitcbe8c4d3337fe97ea516e41759608b7c5661eefb (patch)
treed2472027ebad21a5dded1ff0cc65e36c17cb7e16
parent5575c0e5cd6933895bfca4d966c2466939a7525b (diff)
downloadglibc-cbe8c4d3337fe97ea516e41759608b7c5661eefb.tar.gz
glibc-cbe8c4d3337fe97ea516e41759608b7c5661eefb.tar.xz
glibc-cbe8c4d3337fe97ea516e41759608b7c5661eefb.zip
Test for errno setting in more domain error cases.
-rw-r--r--ChangeLog15
-rw-r--r--math/libm-test.inc106
2 files changed, 68 insertions, 53 deletions
diff --git a/ChangeLog b/ChangeLog
index 65bd57e7d4..e2a16c7697 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,20 @@
 2013-05-15  Joseph Myers  <joseph@codesourcery.com>
 
+	* math/libm-test.inc (acos_test_data): Use ERRNO_EDOM together
+	with INVALID_EXCEPTION.
+	(acosh_test_data): Likewise.
+	(asin_test_data): Likewise.
+	(atanh_test_data): Likewise.
+	(fmod_test_data): Likewise.
+	(log_test_data): Likewise.
+	(log10_test_data): Likewise.
+	(log2_test_data): Likewise.
+	(pow_test_data): Likewise.
+	(sqrt_test_data): Likewise.
+	(y0_test_data): Likewise.
+	(y1_test_data): Likewise.
+	(yn_test_data): Likewise.
+
 	* math/libm-test.inc (test_single_errno) [TEST_INLINE]: Disable
 	function contents.
 
diff --git a/math/libm-test.inc b/math/libm-test.inc
index cd03ae6662..acd6374751 100644
--- a/math/libm-test.inc
+++ b/math/libm-test.inc
@@ -1281,15 +1281,15 @@ matherr (struct exception *x __attribute__ ((unused)))
 static const struct test_f_f_data acos_test_data[] =
   {
     START_DATA (acos),
-    TEST_f_f (acos, plus_infty, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (acos, minus_infty, qnan_value, INVALID_EXCEPTION),
+    TEST_f_f (acos, plus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (acos, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
     TEST_f_f (acos, qnan_value, qnan_value),
 
     /* |x| > 1: */
-    TEST_f_f (acos, 1.125L, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (acos, -1.125L, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (acos, max_value, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (acos, -max_value, qnan_value, INVALID_EXCEPTION),
+    TEST_f_f (acos, 1.125L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (acos, -1.125L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (acos, max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (acos, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
 
     TEST_f_f (acos, 0, M_PI_2l),
     TEST_f_f (acos, minus_zero, M_PI_2l),
@@ -1441,12 +1441,12 @@ static const struct test_f_f_data acosh_test_data[] =
   {
     START_DATA (acosh),
     TEST_f_f (acosh, plus_infty, plus_infty),
-    TEST_f_f (acosh, minus_infty, qnan_value, INVALID_EXCEPTION),
+    TEST_f_f (acosh, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
     TEST_f_f (acosh, qnan_value, qnan_value),
 
     /* x < 1:  */
-    TEST_f_f (acosh, -1.125L, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (acosh, -max_value, qnan_value, INVALID_EXCEPTION),
+    TEST_f_f (acosh, -1.125L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (acosh, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
 
     TEST_f_f (acosh, 1, 0),
     TEST_f_f (acosh, 7, 2.63391579384963341725009269461593689L),
@@ -1470,15 +1470,15 @@ acosh_test (void)
 static const struct test_f_f_data asin_test_data[] =
   {
     START_DATA (asin),
-    TEST_f_f (asin, plus_infty, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (asin, minus_infty, qnan_value, INVALID_EXCEPTION),
+    TEST_f_f (asin, plus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (asin, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
     TEST_f_f (asin, qnan_value, qnan_value),
 
     /* asin x == qNaN plus invalid exception for |x| > 1.  */
-    TEST_f_f (asin, 1.125L, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (asin, -1.125L, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (asin, max_value, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (asin, -max_value, qnan_value, INVALID_EXCEPTION),
+    TEST_f_f (asin, 1.125L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (asin, -1.125L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (asin, max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (asin, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
 
     TEST_f_f (asin, 0, 0),
     TEST_f_f (asin, minus_zero, minus_zero),
@@ -1706,10 +1706,10 @@ static const struct test_f_f_data atanh_test_data[] =
     TEST_f_f (atanh, qnan_value, qnan_value),
 
     /* atanh (x) == qNaN plus invalid exception if |x| > 1.  */
-    TEST_f_f (atanh, 1.125L, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (atanh, -1.125L, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (atanh, max_value, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (atanh, -max_value, qnan_value, INVALID_EXCEPTION),
+    TEST_f_f (atanh, 1.125L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (atanh, -1.125L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (atanh, max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (atanh, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
 
     TEST_f_f (atanh, 0.75L, 0.972955074527656652552676371721589865L),
     END_DATA (atanh)
@@ -9565,7 +9565,7 @@ static const struct test_ff_f_data fmod_test_data[] =
     /* fmod (x, +0) == qNaN plus invalid exception.  */
     TEST_ff_f (fmod, 3, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
     /* fmod (x, -0) == qNaN plus invalid exception.  */
-    TEST_ff_f (fmod, 3, minus_zero, qnan_value, INVALID_EXCEPTION),
+    TEST_ff_f (fmod, 3, minus_zero, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
 
     /* fmod (x, +inf) == x for x not infinite.  */
     TEST_ff_f (fmod, 3.0, plus_infty, 3.0),
@@ -11181,9 +11181,9 @@ static const struct test_f_f_data log_test_data[] =
 
     TEST_f_f (log, 1, 0),
 
-    TEST_f_f (log, -1, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (log, -max_value, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (log, minus_infty, qnan_value, INVALID_EXCEPTION),
+    TEST_f_f (log, -1, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (log, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (log, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
     TEST_f_f (log, plus_infty, plus_infty),
     TEST_f_f (log, qnan_value, qnan_value),
 
@@ -11218,9 +11218,9 @@ static const struct test_f_f_data log10_test_data[] =
     TEST_f_f (log10, 1, 0),
 
     /* log10 (x) == qNaN plus invalid exception if x < 0.  */
-    TEST_f_f (log10, -1, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (log10, -max_value, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (log10, minus_infty, qnan_value, INVALID_EXCEPTION),
+    TEST_f_f (log10, -1, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (log10, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (log10, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
 
     TEST_f_f (log10, plus_infty, plus_infty),
     TEST_f_f (log10, qnan_value, qnan_value),
@@ -11293,9 +11293,9 @@ static const struct test_f_f_data log2_test_data[] =
 
     TEST_f_f (log2, 1, 0),
 
-    TEST_f_f (log2, -1, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (log2, -max_value, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (log2, minus_infty, qnan_value, INVALID_EXCEPTION),
+    TEST_f_f (log2, -1, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (log2, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (log2, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
 
     TEST_f_f (log2, plus_infty, plus_infty),
     TEST_f_f (log2, qnan_value, qnan_value),
@@ -11961,14 +11961,14 @@ static const struct test_ff_f_data pow_test_data[] =
     TEST_ff_f (pow, 0x1p-72L, 0, 1),
     TEST_ff_f (pow, 0x1p-72L, minus_zero, 1),
 
-    TEST_ff_f (pow, -0.1L, 1.1L, qnan_value, INVALID_EXCEPTION),
-    TEST_ff_f (pow, -0.1L, -1.1L, qnan_value, INVALID_EXCEPTION),
-    TEST_ff_f (pow, -10.1L, 1.1L, qnan_value, INVALID_EXCEPTION),
-    TEST_ff_f (pow, -10.1L, -1.1L, qnan_value, INVALID_EXCEPTION),
-    TEST_ff_f (pow, -1.01L, min_subnorm_value, qnan_value, INVALID_EXCEPTION),
-    TEST_ff_f (pow, -1.01L, -min_subnorm_value, qnan_value, INVALID_EXCEPTION),
-    TEST_ff_f (pow, -1.0L, min_subnorm_value, qnan_value, INVALID_EXCEPTION),
-    TEST_ff_f (pow, -1.0L, -min_subnorm_value, qnan_value, INVALID_EXCEPTION),
+    TEST_ff_f (pow, -0.1L, 1.1L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_ff_f (pow, -0.1L, -1.1L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_ff_f (pow, -10.1L, 1.1L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_ff_f (pow, -10.1L, -1.1L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_ff_f (pow, -1.01L, min_subnorm_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_ff_f (pow, -1.01L, -min_subnorm_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_ff_f (pow, -1.0L, min_subnorm_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_ff_f (pow, -1.0L, -min_subnorm_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
 
     TEST_ff_f (pow, 0, -1, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
     TEST_ff_f (pow, 0, -11, plus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
@@ -12317,9 +12317,9 @@ static const struct test_ff_f_data pow_test_data[] =
 #endif
     TEST_ff_f (pow, -2.0, max_value, plus_infty, OVERFLOW_EXCEPTION),
 
-    TEST_ff_f (pow, -max_value, 0.5, qnan_value, INVALID_EXCEPTION),
-    TEST_ff_f (pow, -max_value, 1.5, qnan_value, INVALID_EXCEPTION),
-    TEST_ff_f (pow, -max_value, 1000.5, qnan_value, INVALID_EXCEPTION),
+    TEST_ff_f (pow, -max_value, 0.5, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_ff_f (pow, -max_value, 1.5, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_ff_f (pow, -max_value, 1000.5, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
     TEST_ff_f (pow, -max_value, -2, plus_zero, UNDERFLOW_EXCEPTION),
     TEST_ff_f (pow, -max_value, -3, minus_zero, UNDERFLOW_EXCEPTION),
     TEST_ff_f (pow, -max_value, 2, plus_infty, OVERFLOW_EXCEPTION),
@@ -12418,9 +12418,9 @@ static const struct test_ff_f_data pow_test_data[] =
 #endif
     TEST_ff_f (pow, -0.5, max_value, plus_zero, UNDERFLOW_EXCEPTION),
 
-    TEST_ff_f (pow, -min_value, 0.5, qnan_value, INVALID_EXCEPTION),
-    TEST_ff_f (pow, -min_value, 1.5, qnan_value, INVALID_EXCEPTION),
-    TEST_ff_f (pow, -min_value, 1000.5, qnan_value, INVALID_EXCEPTION),
+    TEST_ff_f (pow, -min_value, 0.5, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_ff_f (pow, -min_value, 1.5, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_ff_f (pow, -min_value, 1000.5, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
     TEST_ff_f (pow, -min_value, -2, plus_infty, OVERFLOW_EXCEPTION),
     TEST_ff_f (pow, -min_value, -3, minus_infty, OVERFLOW_EXCEPTION),
     /* Allow inexact results to be considered to underflow.  */
@@ -13865,9 +13865,9 @@ static const struct test_f_f_data sqrt_test_data[] =
     TEST_f_f (sqrt, minus_zero, minus_zero),
 
     /* sqrt (x) == qNaN plus invalid exception for x < 0.  */
-    TEST_f_f (sqrt, -1, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (sqrt, -max_value, qnan_value, INVALID_EXCEPTION),
-    TEST_f_f (sqrt, minus_infty, qnan_value, INVALID_EXCEPTION),
+    TEST_f_f (sqrt, -1, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (sqrt, -max_value, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (sqrt, minus_infty, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
 
     TEST_f_f (sqrt, 2209, 47),
     TEST_f_f (sqrt, 4, 2),
@@ -14791,8 +14791,8 @@ static const struct test_f_f_data y0_test_data[] =
   {
     START_DATA (y0),
     /* y0 is the Bessel function of the second kind of order 0 */
-    TEST_f_f (y0, -1.0, minus_infty, INVALID_EXCEPTION),
-    TEST_f_f (y0, -max_value, minus_infty, INVALID_EXCEPTION),
+    TEST_f_f (y0, -1.0, minus_infty, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (y0, -max_value, minus_infty, INVALID_EXCEPTION|ERRNO_EDOM),
     TEST_f_f (y0, 0.0, minus_infty),
     TEST_f_f (y0, qnan_value, qnan_value),
     TEST_f_f (y0, plus_infty, 0),
@@ -14855,8 +14855,8 @@ static const struct test_f_f_data y1_test_data[] =
   {
     START_DATA (y1),
     /* y1 is the Bessel function of the second kind of order 1 */
-    TEST_f_f (y1, -1.0, minus_infty, INVALID_EXCEPTION),
-    TEST_f_f (y1, -max_value, minus_infty, INVALID_EXCEPTION),
+    TEST_f_f (y1, -1.0, minus_infty, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_f_f (y1, -max_value, minus_infty, INVALID_EXCEPTION|ERRNO_EDOM),
     TEST_f_f (y1, 0.0, minus_infty),
     TEST_f_f (y1, plus_infty, 0),
     TEST_f_f (y1, qnan_value, qnan_value),
@@ -14920,8 +14920,8 @@ static const struct test_if_f_data yn_test_data[] =
     START_DATA (yn),
     /* yn is the Bessel function of the second kind of order n */
     /* yn (0, x) == y0 (x)  */
-    TEST_if_f (yn, 0, -1.0, minus_infty, INVALID_EXCEPTION),
-    TEST_if_f (yn, 0, -max_value, minus_infty, INVALID_EXCEPTION),
+    TEST_if_f (yn, 0, -1.0, minus_infty, INVALID_EXCEPTION|ERRNO_EDOM),
+    TEST_if_f (yn, 0, -max_value, minus_infty, INVALID_EXCEPTION|ERRNO_EDOM),
     TEST_if_f (yn, 0, 0.0, minus_infty),
     TEST_if_f (yn, 0, qnan_value, qnan_value),
     TEST_if_f (yn, 0, plus_infty, 0),
@@ -14935,7 +14935,7 @@ static const struct test_if_f_data yn_test_data[] =
     TEST_if_f (yn, 0, 10.0, 0.0556711672835993914244598774101900481L),
 
     /* yn (1, x) == y1 (x)  */
-    TEST_if_f (yn, 1, -1.0, minus_infty, INVALID_EXCEPTION),
+    TEST_if_f (yn, 1, -1.0, minus_infty, INVALID_EXCEPTION|ERRNO_EDOM),
     TEST_if_f (yn, 1, 0.0, minus_infty),
     TEST_if_f (yn, 1, plus_infty, 0),
     TEST_if_f (yn, 1, qnan_value, qnan_value),