aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2013-05-17 14:45:50 +0000
committerJoseph Myers <joseph@codesourcery.com>2013-05-17 14:45:50 +0000
commit8269107fe654ac2bb286c97ff874407ffc920d1f (patch)
tree21846ea8672ed9c99af5406292e5ef31898a032e
parent48a18de1e1e7dfeab6d034765caaf732b53cfcb7 (diff)
downloadglibc-8269107fe654ac2bb286c97ff874407ffc920d1f.tar.xz
glibc-8269107fe654ac2bb286c97ff874407ffc920d1f.zip
Test more cases of "inexact" exceptions in libm-test.inc.
-rw-r--r--ChangeLog73
-rw-r--r--math/libm-test.inc2251
2 files changed, 1205 insertions, 1119 deletions
diff --git a/ChangeLog b/ChangeLog
index 58b87d4bc3..6bf5860b6e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,76 @@
+2013-05-17 Joseph Myers <joseph@codesourcery.com>
+
+ * math/libm-test.inc (ceil_test_data): Test for "inexact"
+ exceptions.
+ (cimag_test_data): Likewise.
+ (conj_test_data): Likewise.
+ (copysign_test_data): Likewise.
+ (cproj_test_data): Likewise.
+ (creal_test_data): Likewise.
+ (fabs_test_data): Likewise.
+ (fdim_test_data): Likewise.
+ (finite_test_data): Likewise.
+ (floor_test_data): Likewise.
+ (fmax_test_data): Likewise.
+ (fmin_test_data): Likewise.
+ (fmod_test_data): Likewise.
+ (fpclassify_test_data): Likewise.
+ (frexp_test_data): Likewise.
+ (ilogb_test_data): Likewise.
+ (isfinite_test_data): Likewise.
+ (isgreater_test_data): Likewise.
+ (isgreaterequal_test_data): Likewise.
+ (isinf_test_data): Likewise.
+ (isless_test_data): Likewise.
+ (islessequal_test_data): Likewise.
+ (islessgreater_test_data): Likewise.
+ (isnan_test_data): Likewise.
+ (isnormal_test_data): Likewise.
+ (issignaling_test_data): Likewise.
+ (isunordered_test_data): Likewise.
+ (ldexp_test_data): Likewise.
+ (lrint_test_data): Likewise.
+ (lrint_test_data) [TEST_FLOAT]: Disable one test.
+ (lrint_test_data) [!TEST_LDOUBLE]: Likewise.
+ (lrint_tonearest_test_data): Test for "inexact" exceptions.
+ (lrint_tonearest_test_data) [TEST_FLOAT]: Disable one test.
+ (lrint_tonearest_test_data) [!TEST_LDOUBLE]: Likewise.
+ (lrint_tonearest_test_data) [TEST_LDOUBLE]: Use "L" suffix on that
+ test input.
+ (lrint_towardzero_test_data): Test for "inexact" exceptions.
+ (lrint_towardzero_test_data) [TEST_FLOAT]: Disable one test.
+ (lrint_towardzero_test_data) [!TEST_LDOUBLE]: Likewise.
+ (lrint_towardzero_test_data) [TEST_LDOUBLE]: Use "L" suffix on
+ that test input.
+ (lrint_downward_test_data): Test for "inexact" exceptions.
+ (lrint_downward_test_data) [TEST_FLOAT]: Disable one test.
+ (lrint_downward_test_data) [!TEST_LDOUBLE]: Likewise.
+ (lrint_downward_test_data) [TEST_LDOUBLE]: Use "L" suffix on that
+ test input.
+ (lrint_upward_test_data): Test for "inexact" exceptions.
+ (lrint_upward_test_data) [TEST_LDOUBLE]: Use "L" suffix on one
+ test input.
+ (llrint_test_data): Test for "inexact" exceptions.
+ (llrint_test_data) [TEST_FLOAT]: Disable one test.
+ (llrint_tonearest_test_data): Test for "inexact" exceptions.
+ (llrint_tonearest_test_data) [TEST_FLOAT]: Disable one test.
+ (llrint_towardzero_test_data): Test for "inexact" exceptions.
+ (llrint_towardzero_test_data) [TEST_FLOAT]: Disable one test.
+ (llrint_downward_test_data): Test for "inexact" exceptions.
+ (llrint_downward_test_data) [TEST_FLOAT]: Disable one test.
+ (llrint_upward_test_data): Test for "inexact" exceptions.
+ (logb_test_data): Likewise.
+ (logb_downward_test_data): Likewise.
+ (nextafter_test_data): Likewise.
+ (nexttoward_test_data): Likewise.
+ (remainder_test_data): Likewise.
+ (remquo_test_data): Likewise.
+ (scalbn_test_data): Likewise.
+ (scalbln_test_data): Likewise.
+ (signbit_test_data): Likewise.
+ (sqrt_test_data): Likewise.
+ (significand_test_data): Likewise.
+
2013-05-17 Siddhesh Poyarekar <siddhesh@redhat.com>
[BZ #15424]
diff --git a/math/libm-test.inc b/math/libm-test.inc
index 379aa2c6c2..f5fabd327c 100644
--- a/math/libm-test.inc
+++ b/math/libm-test.inc
@@ -5953,12 +5953,13 @@ ccosh_test (void)
static const struct test_f_f_data ceil_test_data[] =
{
START_DATA (ceil),
- TEST_f_f (ceil, 0.0, 0.0),
- TEST_f_f (ceil, minus_zero, minus_zero),
- TEST_f_f (ceil, plus_infty, plus_infty),
- TEST_f_f (ceil, minus_infty, minus_infty),
- TEST_f_f (ceil, qnan_value, qnan_value),
+ TEST_f_f (ceil, 0.0, 0.0, NO_INEXACT_EXCEPTION),
+ TEST_f_f (ceil, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
+ TEST_f_f (ceil, plus_infty, plus_infty, NO_INEXACT_EXCEPTION),
+ TEST_f_f (ceil, minus_infty, minus_infty, NO_INEXACT_EXCEPTION),
+ TEST_f_f (ceil, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
+ /* Bug 15479: spurious "inexact" exception may occur. */
TEST_f_f (ceil, M_PIl, 4.0),
TEST_f_f (ceil, -M_PIl, -3.0),
TEST_f_f (ceil, 0.1, 1.0),
@@ -6162,13 +6163,13 @@ cexp_test (void)
static const struct test_c_f_data cimag_test_data[] =
{
START_DATA (cimag);
- TEST_c_f (cimag, 1.0, 0.0, 0.0),
- TEST_c_f (cimag, 1.0, minus_zero, minus_zero),
- TEST_c_f (cimag, 1.0, qnan_value, qnan_value),
- TEST_c_f (cimag, qnan_value, qnan_value, qnan_value),
- TEST_c_f (cimag, 1.0, plus_infty, plus_infty),
- TEST_c_f (cimag, 1.0, minus_infty, minus_infty),
- TEST_c_f (cimag, 2.0, 3.0, 3.0),
+ TEST_c_f (cimag, 1.0, 0.0, 0.0, NO_INEXACT_EXCEPTION),
+ TEST_c_f (cimag, 1.0, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
+ TEST_c_f (cimag, 1.0, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
+ TEST_c_f (cimag, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
+ TEST_c_f (cimag, 1.0, plus_infty, plus_infty, NO_INEXACT_EXCEPTION),
+ TEST_c_f (cimag, 1.0, minus_infty, minus_infty, NO_INEXACT_EXCEPTION),
+ TEST_c_f (cimag, 2.0, 3.0, 3.0, NO_INEXACT_EXCEPTION),
END_DATA (cimag);
};
@@ -6622,13 +6623,13 @@ clog10_test (void)
static const struct test_c_c_data conj_test_data[] =
{
START_DATA (conj),
- TEST_c_c (conj, 0.0, 0.0, 0.0, minus_zero),
- TEST_c_c (conj, 0.0, minus_zero, 0.0, 0.0),
- TEST_c_c (conj, qnan_value, qnan_value, qnan_value, qnan_value),
- TEST_c_c (conj, plus_infty, minus_infty, plus_infty, plus_infty),
- TEST_c_c (conj, plus_infty, plus_infty, plus_infty, minus_infty),
- TEST_c_c (conj, 1.0, 2.0, 1.0, -2.0),
- TEST_c_c (conj, 3.0, -4.0, 3.0, 4.0),
+ TEST_c_c (conj, 0.0, 0.0, 0.0, minus_zero, NO_INEXACT_EXCEPTION),
+ TEST_c_c (conj, 0.0, minus_zero, 0.0, 0.0, NO_INEXACT_EXCEPTION),
+ TEST_c_c (conj, qnan_value, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
+ TEST_c_c (conj, plus_infty, minus_infty, plus_infty, plus_infty, NO_INEXACT_EXCEPTION),
+ TEST_c_c (conj, plus_infty, plus_infty, plus_infty, minus_infty, NO_INEXACT_EXCEPTION),
+ TEST_c_c (conj, 1.0, 2.0, 1.0, -2.0, NO_INEXACT_EXCEPTION),
+ TEST_c_c (conj, 3.0, -4.0, 3.0, 4.0, NO_INEXACT_EXCEPTION),
END_DATA (conj)
};
@@ -6644,26 +6645,26 @@ conj_test (void)
static const struct test_ff_f_data copysign_test_data[] =
{
START_DATA (copysign),
- TEST_ff_f (copysign, 0, 4, 0),
- TEST_ff_f (copysign, 0, -4, minus_zero),
- TEST_ff_f (copysign, minus_zero, 4, 0),
- TEST_ff_f (copysign, minus_zero, -4, minus_zero),
+ TEST_ff_f (copysign, 0, 4, 0, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (copysign, 0, -4, minus_zero, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (copysign, minus_zero, 4, 0, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (copysign, minus_zero, -4, minus_zero, NO_INEXACT_EXCEPTION),
- TEST_ff_f (copysign, plus_infty, 0, plus_infty),
- TEST_ff_f (copysign, plus_infty, minus_zero, minus_infty),
- TEST_ff_f (copysign, minus_infty, 0, plus_infty),
- TEST_ff_f (copysign, minus_infty, minus_zero, minus_infty),
+ TEST_ff_f (copysign, plus_infty, 0, plus_infty, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (copysign, plus_infty, minus_zero, minus_infty, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (copysign, minus_infty, 0, plus_infty, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (copysign, minus_infty, minus_zero, minus_infty, NO_INEXACT_EXCEPTION),
- TEST_ff_f (copysign, 0, plus_infty, 0),
- TEST_ff_f (copysign, 0, minus_zero, minus_zero),
- TEST_ff_f (copysign, minus_zero, plus_infty, 0),
- TEST_ff_f (copysign, minus_zero, minus_zero, minus_zero),
+ TEST_ff_f (copysign, 0, plus_infty, 0, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (copysign, 0, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (copysign, minus_zero, plus_infty, 0, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (copysign, minus_zero, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
/* XXX More correctly we would have to check the sign of the NaN. */
- TEST_ff_f (copysign, qnan_value, 0, qnan_value),
- TEST_ff_f (copysign, qnan_value, minus_zero, qnan_value),
- TEST_ff_f (copysign, -qnan_value, 0, qnan_value),
- TEST_ff_f (copysign, -qnan_value, minus_zero, qnan_value),
+ TEST_ff_f (copysign, qnan_value, 0, qnan_value, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (copysign, qnan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (copysign, -qnan_value, 0, qnan_value, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (copysign, -qnan_value, minus_zero, qnan_value, NO_INEXACT_EXCEPTION),
END_DATA (copysign)
};
@@ -6983,20 +6984,20 @@ cpow_test (void)
static const struct test_c_c_data cproj_test_data[] =
{
START_DATA (cproj),
- TEST_c_c (cproj, 0.0, 0.0, 0.0, 0.0),
- TEST_c_c (cproj, minus_zero, minus_zero, minus_zero, minus_zero),
- TEST_c_c (cproj, 0.0, minus_zero, 0.0, minus_zero),
- TEST_c_c (cproj, minus_zero, 0.0, minus_zero, 0.0),
+ TEST_c_c (cproj, 0.0, 0.0, 0.0, 0.0, NO_INEXACT_EXCEPTION),
+ TEST_c_c (cproj, minus_zero, minus_zero, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
+ TEST_c_c (cproj, 0.0, minus_zero, 0.0, minus_zero, NO_INEXACT_EXCEPTION),
+ TEST_c_c (cproj, minus_zero, 0.0, minus_zero, 0.0, NO_INEXACT_EXCEPTION),
- TEST_c_c (cproj, qnan_value, qnan_value, qnan_value, qnan_value),
+ TEST_c_c (cproj, qnan_value, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
- TEST_c_c (cproj, plus_infty, plus_infty, plus_infty, 0.0),
- TEST_c_c (cproj, plus_infty, minus_infty, plus_infty, minus_zero),
- TEST_c_c (cproj, minus_infty, plus_infty, plus_infty, 0.0),
- TEST_c_c (cproj, minus_infty, minus_infty, plus_infty, minus_zero),
+ TEST_c_c (cproj, plus_infty, plus_infty, plus_infty, 0.0, NO_INEXACT_EXCEPTION),
+ TEST_c_c (cproj, plus_infty, minus_infty, plus_infty, minus_zero, NO_INEXACT_EXCEPTION),
+ TEST_c_c (cproj, minus_infty, plus_infty, plus_infty, 0.0, NO_INEXACT_EXCEPTION),
+ TEST_c_c (cproj, minus_infty, minus_infty, plus_infty, minus_zero, NO_INEXACT_EXCEPTION),
- TEST_c_c (cproj, 1.0, 0.0, 1.0, 0.0),
- TEST_c_c (cproj, 2.0, 3.0, 2.0, 3.0),
+ TEST_c_c (cproj, 1.0, 0.0, 1.0, 0.0, NO_INEXACT_EXCEPTION),
+ TEST_c_c (cproj, 2.0, 3.0, 2.0, 3.0, NO_INEXACT_EXCEPTION),
END_DATA (cproj)
};
@@ -7012,13 +7013,13 @@ cproj_test (void)
static const struct test_c_f_data creal_test_data[] =
{
START_DATA (creal);
- TEST_c_f (creal, 0.0, 1.0, 0.0),
- TEST_c_f (creal, minus_zero, 1.0, minus_zero),
- TEST_c_f (creal, qnan_value, 1.0, qnan_value),
- TEST_c_f (creal, qnan_value, qnan_value, qnan_value),
- TEST_c_f (creal, plus_infty, 1.0, plus_infty),
- TEST_c_f (creal, minus_infty, 1.0, minus_infty),
- TEST_c_f (creal, 2.0, 3.0, 2.0),
+ TEST_c_f (creal, 0.0, 1.0, 0.0, NO_INEXACT_EXCEPTION),
+ TEST_c_f (creal, minus_zero, 1.0, minus_zero, NO_INEXACT_EXCEPTION),
+ TEST_c_f (creal, qnan_value, 1.0, qnan_value, NO_INEXACT_EXCEPTION),
+ TEST_c_f (creal, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
+ TEST_c_f (creal, plus_infty, 1.0, plus_infty, NO_INEXACT_EXCEPTION),
+ TEST_c_f (creal, minus_infty, 1.0, minus_infty, NO_INEXACT_EXCEPTION),
+ TEST_c_f (creal, 2.0, 3.0, 2.0, NO_INEXACT_EXCEPTION),
END_DATA (creal);
};
@@ -8047,15 +8048,15 @@ expm1_test (void)
static const struct test_f_f_data fabs_test_data[] =
{
START_DATA (fabs),
- TEST_f_f (fabs, 0, 0),
- TEST_f_f (fabs, minus_zero, 0),
+ TEST_f_f (fabs, 0, 0, NO_INEXACT_EXCEPTION),
+ TEST_f_f (fabs, minus_zero, 0, NO_INEXACT_EXCEPTION),
- TEST_f_f (fabs, plus_infty, plus_infty),
- TEST_f_f (fabs, minus_infty, plus_infty),
- TEST_f_f (fabs, qnan_value, qnan_value),
+ TEST_f_f (fabs, plus_infty, plus_infty, NO_INEXACT_EXCEPTION),
+ TEST_f_f (fabs, minus_infty, plus_infty, NO_INEXACT_EXCEPTION),
+ TEST_f_f (fabs, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
- TEST_f_f (fabs, 38.0, 38.0),
- TEST_f_f (fabs, -M_El, M_El),
+ TEST_f_f (fabs, 38.0, 38.0, NO_INEXACT_EXCEPTION),
+ TEST_f_f (fabs, -M_El, M_El, NO_INEXACT_EXCEPTION),
END_DATA (fabs)
};
@@ -8071,33 +8072,33 @@ fabs_test (void)
static const struct test_ff_f_data fdim_test_data[] =
{
START_DATA (fdim),
- TEST_ff_f (fdim, 0, 0, 0),
- TEST_ff_f (fdim, 9, 0, 9),
- TEST_ff_f (fdim, 0, 9, 0),
- TEST_ff_f (fdim, -9, 0, 0),
- TEST_ff_f (fdim, 0, -9, 9),
-
- TEST_ff_f (fdim, plus_infty, 9, plus_infty),
- TEST_ff_f (fdim, plus_infty, -9, plus_infty),
- TEST_ff_f (fdim, minus_infty, 9, 0),
- TEST_ff_f (fdim, minus_infty, -9, 0),
- TEST_ff_f (fdim, 9, minus_infty, plus_infty),
- TEST_ff_f (fdim, -9, minus_infty, plus_infty),
- TEST_ff_f (fdim, 9, plus_infty, 0),
- TEST_ff_f (fdim, -9, plus_infty, 0),
-
- TEST_ff_f (fdim, 0, qnan_value, qnan_value),
- TEST_ff_f (fdim, 9, qnan_value, qnan_value),
- TEST_ff_f (fdim, -9, qnan_value, qnan_value),
- TEST_ff_f (fdim, qnan_value, 9, qnan_value),
- TEST_ff_f (fdim, qnan_value, -9, qnan_value),
- TEST_ff_f (fdim, plus_infty, qnan_value, qnan_value),
- TEST_ff_f (fdim, minus_infty, qnan_value, qnan_value),
- TEST_ff_f (fdim, qnan_value, plus_infty, qnan_value),
- TEST_ff_f (fdim, qnan_value, minus_infty, qnan_value),
- TEST_ff_f (fdim, qnan_value, qnan_value, qnan_value),
-
- TEST_ff_f (fdim, plus_infty, plus_infty, 0),
+ TEST_ff_f (fdim, 0, 0, 0, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fdim, 9, 0, 9, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fdim, 0, 9, 0, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fdim, -9, 0, 0, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fdim, 0, -9, 9, NO_INEXACT_EXCEPTION),
+
+ TEST_ff_f (fdim, plus_infty, 9, plus_infty, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fdim, plus_infty, -9, plus_infty, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fdim, minus_infty, 9, 0, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fdim, minus_infty, -9, 0, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fdim, 9, minus_infty, plus_infty, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fdim, -9, minus_infty, plus_infty, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fdim, 9, plus_infty, 0, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fdim, -9, plus_infty, 0, NO_INEXACT_EXCEPTION),
+
+ TEST_ff_f (fdim, 0, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fdim, 9, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fdim, -9, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fdim, qnan_value, 9, qnan_value, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fdim, qnan_value, -9, qnan_value, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fdim, plus_infty, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fdim, minus_infty, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fdim, qnan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fdim, qnan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fdim, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
+
+ TEST_ff_f (fdim, plus_infty, plus_infty, 0, NO_INEXACT_EXCEPTION),
END_DATA (fdim)
};
@@ -8113,13 +8114,13 @@ fdim_test (void)
static const struct test_f_i_data finite_test_data[] =
{
START_DATA (finite),
- TEST_f_b (finite, 0, 1),
- TEST_f_b (finite, minus_zero, 1),
- TEST_f_b (finite, 10, 1),
- TEST_f_b (finite, min_subnorm_value, 1),
- TEST_f_b (finite, plus_infty, 0),
- TEST_f_b (finite, minus_infty, 0),
- TEST_f_b (finite, qnan_value, 0),
+ TEST_f_b (finite, 0, 1, NO_INEXACT_EXCEPTION),
+ TEST_f_b (finite, minus_zero, 1, NO_INEXACT_EXCEPTION),
+ TEST_f_b (finite, 10, 1, NO_INEXACT_EXCEPTION),
+ TEST_f_b (finite, min_subnorm_value, 1, NO_INEXACT_EXCEPTION),
+ TEST_f_b (finite, plus_infty, 0, NO_INEXACT_EXCEPTION),
+ TEST_f_b (finite, minus_infty, 0, NO_INEXACT_EXCEPTION),
+ TEST_f_b (finite, qnan_value, 0, NO_INEXACT_EXCEPTION),
END_DATA (finite)
};
@@ -8135,12 +8136,13 @@ finite_test (void)
static const struct test_f_f_data floor_test_data[] =
{
START_DATA (floor),
- TEST_f_f (floor, 0.0, 0.0),
- TEST_f_f (floor, minus_zero, minus_zero),
- TEST_f_f (floor, plus_infty, plus_infty),
- TEST_f_f (floor, minus_infty, minus_infty),
- TEST_f_f (floor, qnan_value, qnan_value),
+ TEST_f_f (floor, 0.0, 0.0, NO_INEXACT_EXCEPTION),
+ TEST_f_f (floor, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
+ TEST_f_f (floor, plus_infty, plus_infty, NO_INEXACT_EXCEPTION),
+ TEST_f_f (floor, minus_infty, minus_infty, NO_INEXACT_EXCEPTION),
+ TEST_f_f (floor, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
+ /* Bug 15479: spurious "inexact" exception may occur. */
TEST_f_f (floor, M_PIl, 3.0),
TEST_f_f (floor, -M_PIl, -4.0),
@@ -9186,34 +9188,34 @@ fma_test_upward (void)
static const struct test_ff_f_data fmax_test_data[] =
{
START_DATA (fmax),
- TEST_ff_f (fmax, 0, 0, 0),
- TEST_ff_f (fmax, minus_zero, minus_zero, minus_zero),
- TEST_ff_f (fmax, 9, 0, 9),
- TEST_ff_f (fmax, 0, 9, 9),
- TEST_ff_f (fmax, -9, 0, 0),
- TEST_ff_f (fmax, 0, -9, 0),
-
- TEST_ff_f (fmax, plus_infty, 9, plus_infty),
- TEST_ff_f (fmax, 0, plus_infty, plus_infty),
- TEST_ff_f (fmax, -9, plus_infty, plus_infty),
- TEST_ff_f (fmax, plus_infty, -9, plus_infty),
-
- TEST_ff_f (fmax, minus_infty, 9, 9),
- TEST_ff_f (fmax, minus_infty, -9, -9),
- TEST_ff_f (fmax, 9, minus_infty, 9),
- TEST_ff_f (fmax, -9, minus_infty, -9),
-
- TEST_ff_f (fmax, 0, qnan_value, 0),
- TEST_ff_f (fmax, 9, qnan_value, 9),
- TEST_ff_f (fmax, -9, qnan_value, -9),
- TEST_ff_f (fmax, qnan_value, 0, 0),
- TEST_ff_f (fmax, qnan_value, 9, 9),
- TEST_ff_f (fmax, qnan_value, -9, -9),
- TEST_ff_f (fmax, plus_infty, qnan_value, plus_infty),
- TEST_ff_f (fmax, minus_infty, qnan_value, minus_infty),
- TEST_ff_f (fmax, qnan_value, plus_infty, plus_infty),
- TEST_ff_f (fmax, qnan_value, minus_infty, minus_infty),
- TEST_ff_f (fmax, qnan_value, qnan_value, qnan_value),
+ TEST_ff_f (fmax, 0, 0, 0, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmax, minus_zero, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmax, 9, 0, 9, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmax, 0, 9, 9, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmax, -9, 0, 0, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmax, 0, -9, 0, NO_INEXACT_EXCEPTION),
+
+ TEST_ff_f (fmax, plus_infty, 9, plus_infty, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmax, 0, plus_infty, plus_infty, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmax, -9, plus_infty, plus_infty, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmax, plus_infty, -9, plus_infty, NO_INEXACT_EXCEPTION),
+
+ TEST_ff_f (fmax, minus_infty, 9, 9, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmax, minus_infty, -9, -9, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmax, 9, minus_infty, 9, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmax, -9, minus_infty, -9, NO_INEXACT_EXCEPTION),
+
+ TEST_ff_f (fmax, 0, qnan_value, 0, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmax, 9, qnan_value, 9, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmax, -9, qnan_value, -9, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmax, qnan_value, 0, 0, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmax, qnan_value, 9, 9, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmax, qnan_value, -9, -9, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmax, plus_infty, qnan_value, plus_infty, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmax, minus_infty, qnan_value, minus_infty, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmax, qnan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmax, qnan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmax, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
END_DATA (fmax)
};
@@ -9229,33 +9231,33 @@ fmax_test (void)
static const struct test_ff_f_data fmin_test_data[] =
{
START_DATA (fmin),
- TEST_ff_f (fmin, 0, 0, 0),
- TEST_ff_f (fmin, minus_zero, minus_zero, minus_zero),
- TEST_ff_f (fmin, 9, 0, 0),
- TEST_ff_f (fmin, 0, 9, 0),
- TEST_ff_f (fmin, -9, 0, -9),
- TEST_ff_f (fmin, 0, -9, -9),
-
- TEST_ff_f (fmin, plus_infty, 9, 9),
- TEST_ff_f (fmin, 9, plus_infty, 9),
- TEST_ff_f (fmin, plus_infty, -9, -9),
- TEST_ff_f (fmin, -9, plus_infty, -9),
- TEST_ff_f (fmin, minus_infty, 9, minus_infty),
- TEST_ff_f (fmin, minus_infty, -9, minus_infty),
- TEST_ff_f (fmin, 9, minus_infty, minus_infty),
- TEST_ff_f (fmin, -9, minus_infty, minus_infty),
-
- TEST_ff_f (fmin, 0, qnan_value, 0),
- TEST_ff_f (fmin, 9, qnan_value, 9),
- TEST_ff_f (fmin, -9, qnan_value, -9),
- TEST_ff_f (fmin, qnan_value, 0, 0),
- TEST_ff_f (fmin, qnan_value, 9, 9),
- TEST_ff_f (fmin, qnan_value, -9, -9),
- TEST_ff_f (fmin, plus_infty, qnan_value, plus_infty),
- TEST_ff_f (fmin, minus_infty, qnan_value, minus_infty),
- TEST_ff_f (fmin, qnan_value, plus_infty, plus_infty),
- TEST_ff_f (fmin, qnan_value, minus_infty, minus_infty),
- TEST_ff_f (fmin, qnan_value, qnan_value, qnan_value),
+ TEST_ff_f (fmin, 0, 0, 0, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmin, minus_zero, minus_zero, minus_zero, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmin, 9, 0, 0, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmin, 0, 9, 0, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmin, -9, 0, -9, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmin, 0, -9, -9, NO_INEXACT_EXCEPTION),
+
+ TEST_ff_f (fmin, plus_infty, 9, 9, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmin, 9, plus_infty, 9, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmin, plus_infty, -9, -9, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmin, -9, plus_infty, -9, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmin, minus_infty, 9, minus_infty, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmin, minus_infty, -9, minus_infty, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmin, 9, minus_infty, minus_infty, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmin, -9, minus_infty, minus_infty, NO_INEXACT_EXCEPTION),
+
+ TEST_ff_f (fmin, 0, qnan_value, 0, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmin, 9, qnan_value, 9, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmin, -9, qnan_value, -9, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmin, qnan_value, 0, 0, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmin, qnan_value, 9, 9, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmin, qnan_value, -9, -9, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmin, plus_infty, qnan_value, plus_infty, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmin, minus_infty, qnan_value, minus_infty, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmin, qnan_value, plus_infty, plus_infty, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmin, qnan_value, minus_infty, minus_infty, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmin, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
END_DATA (fmin)
};
@@ -9272,38 +9274,38 @@ static const struct test_ff_f_data fmod_test_data[] =
{
START_DATA (fmod),
/* fmod (+0, y) == +0 for y != 0. */
- TEST_ff_f (fmod, 0, 3, 0),
+ TEST_ff_f (fmod, 0, 3, 0, NO_INEXACT_EXCEPTION),
/* fmod (-0, y) == -0 for y != 0. */
- TEST_ff_f (fmod, minus_zero, 3, minus_zero),
+ TEST_ff_f (fmod, minus_zero, 3, minus_zero, NO_INEXACT_EXCEPTION),
/* fmod (+inf, y) == qNaN plus invalid exception. */
- TEST_ff_f (fmod, plus_infty, 3, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_ff_f (fmod, plus_infty, 3, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
/* fmod (-inf, y) == qNaN plus invalid exception. */
- TEST_ff_f (fmod, minus_infty, 3, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_ff_f (fmod, minus_infty, 3, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
/* fmod (x, +0) == qNaN plus invalid exception. */
- TEST_ff_f (fmod, 3, 0, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_ff_f (fmod, 3, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
/* fmod (x, -0) == qNaN plus invalid exception. */
- TEST_ff_f (fmod, 3, minus_zero, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
+ TEST_ff_f (fmod, 3, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM),
/* fmod (x, +inf) == x for x not infinite. */
- TEST_ff_f (fmod, 3.0, plus_infty, 3.0),
+ TEST_ff_f (fmod, 3.0, plus_infty, 3.0, NO_INEXACT_EXCEPTION),
/* fmod (x, -inf) == x for x not infinite. */
- TEST_ff_f (fmod, 3.0, minus_infty, 3.0),
+ TEST_ff_f (fmod, 3.0, minus_infty, 3.0, NO_INEXACT_EXCEPTION),
- TEST_ff_f (fmod, qnan_value, qnan_value, qnan_value),
+ TEST_ff_f (fmod, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION),
- TEST_ff_f (fmod, 6.5, 2.25L, 2.0L),
- TEST_ff_f (fmod, -6.5, 2.25L, -2.0L),
- TEST_ff_f (fmod, 6.5, -2.25L, 2.0L),
- TEST_ff_f (fmod, -6.5, -2.25L, -2.0L),
+ TEST_ff_f (fmod, 6.5, 2.25L, 2.0L, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmod, -6.5, 2.25L, -2.0L, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmod, 6.5, -2.25L, 2.0L, NO_INEXACT_EXCEPTION),
+ TEST_ff_f (fmod, -6.5, -2.25L, -2.0L, NO_INEXACT_EXCEPTION),
- TEST_ff_f (fmod, 0x0.fffffep-126L, 0x1p-149L, plus_zero),
+ TEST_ff_f (fmod, 0x0.fffffep-126L, 0x1p-149L, plus_zero, NO_INEXACT_EXCEPTION),
#ifndef TEST_FLOAT
- TEST_ff_f (fmod, 0x0.fffffffffffffp-1022L, 0x1p-1074L, plus_zero),
+ TEST_ff_f (fmod, 0x0.fffffffffffffp-1022L, 0x1p-1074L, plus_zero, NO_INEXACT_EXCEPTION),
#endif
#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
- TEST_ff_f (fmod, 0x0.fffffffffffffffep-16382L, 0x1p-16445L, plus_zero),
+ TEST_ff_f (fmod, 0x0.fffffffffffffffep-16382L, 0x1p-16445L, plus_zero, NO_INEXACT_EXCEPTION),
#endif
END_DATA (fmod)
};
@@ -9320,13 +9322,13 @@ fmod_test (void)
static const struct test_f_i_data fpclassify_test_data[] =
{
START_DATA (fpclassify),
- TEST_f_i (fpclassify, qnan_value, FP_NAN),
- TEST_f_i (fpclassify, plus_infty, FP_INFINITE),
- TEST_f_i (fpclassify, minus_infty, FP_INFINITE),
- TEST_f_i (fpclassify, plus_zero, FP_ZERO),
- TEST_f_i (fpclassify, minus_zero, FP_ZERO),
- TEST_f_i (fpclassify, 1000, FP_NORMAL),
- TEST_f_i (fpclassify, min_subnorm_value, FP_SUBNORMAL),
+ TEST_f_i (fpclassify, qnan_value, FP_NAN, NO_INEXACT_EXCEPTION),
+ TEST_f_i (fpclassify, plus_infty, FP_INFINITE, NO_INEXACT_EXCEPTION),
+ TEST_f_i (fpclassify, minus_infty, FP_INFINITE, NO_INEXACT_EXCEPTION),
+ TEST_f_i (fpclassify, plus_zero, FP_ZERO, NO_INEXACT_EXCEPTION),
+ TEST_f_i (fpclassify, minus_zero, FP_ZERO, NO_INEXACT_EXCEPTION),
+ T