diff options
Diffstat (limited to 'math')
-rw-r--r-- | math/libm-test.inc | 398 |
1 files changed, 73 insertions, 325 deletions
diff --git a/math/libm-test.inc b/math/libm-test.inc index 13332aea1a..0fe0f69e63 100644 --- a/math/libm-test.inc +++ b/math/libm-test.inc @@ -1699,6 +1699,41 @@ struct test_fFF_11_data #define END_COMPLEX \ print_complex_max_error (this_func) +/* Run tests for a given function in all rounding modes. */ +#define ALL_RM_TEST(FUNC, EXACT, ARRAY, LOOP_MACRO, END_MACRO, ...) \ + do \ + { \ + do \ + { \ + START (FUNC, EXACT); \ + LOOP_MACRO (FUNC, ARRAY, , ## __VA_ARGS__); \ + END_MACRO; \ + } \ + while (0); \ + do \ + { \ + START (FUNC ## _downward, EXACT); \ + LOOP_MACRO (FUNC, ARRAY, FE_DOWNWARD, ## __VA_ARGS__); \ + END_MACRO; \ + } \ + while (0); \ + do \ + { \ + START (FUNC ## _towardzero, EXACT); \ + LOOP_MACRO (FUNC, ARRAY, FE_TOWARDZERO, ## __VA_ARGS__); \ + END_MACRO; \ + } \ + while (0); \ + do \ + { \ + START (FUNC ## _upward, EXACT); \ + LOOP_MACRO (FUNC, ARRAY, FE_UPWARD, ## __VA_ARGS__); \ + END_MACRO; \ + } \ + while (0); \ + } \ + while (0); + /* This is to prevent messages from the SVID libm emulation. */ int matherr (struct exception *x __attribute__ ((unused))) @@ -6082,9 +6117,7 @@ static const struct test_f_f_data ceil_test_data[] = static void ceil_test (void) { - START (ceil, 1); - RUN_TEST_LOOP_f_f (ceil, ceil_test_data, ); - END; + ALL_RM_TEST (ceil, 1, ceil_test_data, RUN_TEST_LOOP_f_f, END); } @@ -6158,9 +6191,7 @@ static const struct test_c_f_data cimag_test_data[] = static void cimag_test (void) { - START (cimag, 1); - RUN_TEST_LOOP_c_f (cimag, cimag_test_data, ); - END; + ALL_RM_TEST (cimag, 1, cimag_test_data, RUN_TEST_LOOP_c_f, END); } static const struct test_c_c_data clog_test_data[] = @@ -6302,9 +6333,7 @@ static const struct test_c_c_data conj_test_data[] = static void conj_test (void) { - START (conj, 1); - RUN_TEST_LOOP_c_c (conj, conj_test_data, ); - END_COMPLEX; + ALL_RM_TEST (conj, 1, conj_test_data, RUN_TEST_LOOP_c_c, END_COMPLEX); } @@ -6354,9 +6383,7 @@ static const struct test_ff_f_data copysign_test_data[] = static void copysign_test (void) { - START (copysign, 1); - RUN_TEST_LOOP_ff_f (copysign, copysign_test_data, ); - END; + ALL_RM_TEST (copysign, 1, copysign_test_data, RUN_TEST_LOOP_ff_f, END); } @@ -6585,9 +6612,7 @@ static const struct test_c_c_data cproj_test_data[] = static void cproj_test (void) { - START (cproj, 1); - RUN_TEST_LOOP_c_c (cproj, cproj_test_data, ); - END_COMPLEX; + ALL_RM_TEST (cproj, 1, cproj_test_data, RUN_TEST_LOOP_c_c, END_COMPLEX); } @@ -6605,9 +6630,7 @@ static const struct test_c_f_data creal_test_data[] = static void creal_test (void) { - START (creal, 1); - RUN_TEST_LOOP_c_f (creal, creal_test_data, ); - END; + ALL_RM_TEST (creal, 1, creal_test_data, RUN_TEST_LOOP_c_f, END); } static const struct test_c_c_data csin_test_data[] = @@ -7371,9 +7394,7 @@ static const struct test_f_f_data fabs_test_data[] = static void fabs_test (void) { - START (fabs, 1); - RUN_TEST_LOOP_f_f (fabs, fabs_test_data, ); - END; + ALL_RM_TEST (fabs, 1, fabs_test_data, RUN_TEST_LOOP_f_f, END); } @@ -7520,9 +7541,7 @@ static const struct test_f_f_data floor_test_data[] = static void floor_test (void) { - START (floor, 1); - RUN_TEST_LOOP_f_f (floor, floor_test_data, ); - END; + ALL_RM_TEST (floor, 1, floor_test_data, RUN_TEST_LOOP_f_f, END); } @@ -7647,9 +7666,7 @@ static const struct test_ff_f_data fmax_test_data[] = static void fmax_test (void) { - START (fmax, 1); - RUN_TEST_LOOP_ff_f (fmax, fmax_test_data, ); - END; + ALL_RM_TEST (fmax, 1, fmax_test_data, RUN_TEST_LOOP_ff_f, END); } @@ -7687,9 +7704,7 @@ static const struct test_ff_f_data fmin_test_data[] = static void fmin_test (void) { - START (fmin, 1); - RUN_TEST_LOOP_ff_f (fmin, fmin_test_data, ); - END; + ALL_RM_TEST (fmin, 1, fmin_test_data, RUN_TEST_LOOP_ff_f, END); } @@ -7741,9 +7756,7 @@ static const struct test_ff_f_data fmod_test_data[] = static void fmod_test (void) { - START (fmod, 1); - RUN_TEST_LOOP_ff_f (fmod, fmod_test_data, ); - END; + ALL_RM_TEST (fmod, 1, fmod_test_data, RUN_TEST_LOOP_ff_f, END); } @@ -7761,9 +7774,7 @@ static const struct test_f_i_data fpclassify_test_data[] = static void fpclassify_test (void) { - START (fpclassify, 1); - RUN_TEST_LOOP_f_i_tg (fpclassify, fpclassify_test_data, ); - END; + ALL_RM_TEST (fpclassify, 1, fpclassify_test_data, RUN_TEST_LOOP_f_i_tg, END); } @@ -7785,9 +7796,7 @@ frexp_test (void) { int x; - START (frexp, 1); - RUN_TEST_LOOP_fI_f1 (frexp, frexp_test_data, , x); - END; + ALL_RM_TEST (frexp, 1, frexp_test_data, RUN_TEST_LOOP_fI_f1, END, x); } static const struct test_ff_f_data hypot_test_data[] = @@ -7834,9 +7843,7 @@ static const struct test_f_i_data ilogb_test_data[] = static void ilogb_test (void) { - START (ilogb, 1); - RUN_TEST_LOOP_f_i (ilogb, ilogb_test_data, ); - END; + ALL_RM_TEST (ilogb, 1, ilogb_test_data, RUN_TEST_LOOP_f_i, END); } static const struct test_f_i_data isfinite_test_data[] = @@ -7853,18 +7860,14 @@ static const struct test_f_i_data isfinite_test_data[] = static void isfinite_test (void) { - START (isfinite, 1); - RUN_TEST_LOOP_f_b_tg (isfinite, isfinite_test_data, ); - END; + ALL_RM_TEST (isfinite, 1, isfinite_test_data, RUN_TEST_LOOP_f_b_tg, END); } static void finite_test (void) { - START (finite, 1); /* finite uses the same test data as isfinite. */ - RUN_TEST_LOOP_f_b (finite, isfinite_test_data, ); - END; + ALL_RM_TEST (finite, 1, isfinite_test_data, RUN_TEST_LOOP_f_b, END); } static const struct test_ff_i_data isgreater_test_data[] = @@ -7890,9 +7893,7 @@ static const struct test_ff_i_data isgreater_test_data[] = static void isgreater_test (void) { - START (isgreater, 1); - RUN_TEST_LOOP_ff_i_tg (isgreater, isgreater_test_data, ); - END; + ALL_RM_TEST (isgreater, 1, isgreater_test_data, RUN_TEST_LOOP_ff_i_tg, END); } static const struct test_ff_i_data isgreaterequal_test_data[] = @@ -7918,9 +7919,7 @@ static const struct test_ff_i_data isgreaterequal_test_data[] = static void isgreaterequal_test (void) { - START (isgreaterequal, 1); - RUN_TEST_LOOP_ff_i_tg (isgreaterequal, isgreaterequal_test_data, ); - END; + ALL_RM_TEST (isgreaterequal, 1, isgreaterequal_test_data, RUN_TEST_LOOP_ff_i_tg, END); } static const struct test_f_i_data isinf_test_data[] = @@ -7937,9 +7936,7 @@ static const struct test_f_i_data isinf_test_data[] = static void isinf_test (void) { - START (isinf, 1); - RUN_TEST_LOOP_f_b_tg (isinf, isinf_test_data, ); - END; + ALL_RM_TEST (isinf, 1, isinf_test_data, RUN_TEST_LOOP_f_b_tg, END); } static const struct test_ff_i_data isless_test_data[] = @@ -7965,9 +7962,7 @@ static const struct test_ff_i_data isless_test_data[] = static void isless_test (void) { - START (isless, 1); - RUN_TEST_LOOP_ff_i_tg (isless, isless_test_data, ); - END; + ALL_RM_TEST (isless, 1, isless_test_data, RUN_TEST_LOOP_ff_i_tg, END); } static const struct test_ff_i_data islessequal_test_data[] = @@ -7993,9 +7988,7 @@ static const struct test_ff_i_data islessequal_test_data[] = static void islessequal_test (void) { - START (islessequal, 1); - RUN_TEST_LOOP_ff_i_tg (islessequal, islessequal_test_data, ); - END; + ALL_RM_TEST (islessequal, 1, islessequal_test_data, RUN_TEST_LOOP_ff_i_tg, END); } static const struct test_ff_i_data islessgreater_test_data[] = @@ -8021,9 +8014,7 @@ static const struct test_ff_i_data islessgreater_test_data[] = static void islessgreater_test (void) { - START (islessgreater, 1); - RUN_TEST_LOOP_ff_i_tg (islessgreater, islessgreater_test_data, ); - END; + ALL_RM_TEST (islessgreater, 1, islessgreater_test_data, RUN_TEST_LOOP_ff_i_tg, END); } static const struct test_f_i_data isnan_test_data[] = @@ -8040,9 +8031,7 @@ static const struct test_f_i_data isnan_test_data[] = static void isnan_test (void) { - START (isnan, 1); - RUN_TEST_LOOP_f_b_tg (isnan, isnan_test_data, ); - END; + ALL_RM_TEST (isnan, 1, isnan_test_data, RUN_TEST_LOOP_f_b_tg, END); } static const struct test_f_i_data isnormal_test_data[] = @@ -8059,9 +8048,7 @@ static const struct test_f_i_data isnormal_test_data[] = static void isnormal_test (void) { - START (isnormal, 1); - RUN_TEST_LOOP_f_b_tg (isnormal, isnormal_test_data, ); - END; + ALL_RM_TEST (isnormal, 1, isnormal_test_data, RUN_TEST_LOOP_f_b_tg, END); } static const struct test_f_i_data issignaling_test_data[] = @@ -8078,9 +8065,7 @@ static const struct test_f_i_data issignaling_test_data[] = static void issignaling_test (void) { - START (issignaling, 1); - RUN_TEST_LOOP_f_b_tg (issignaling, issignaling_test_data, ); - END; + ALL_RM_TEST (issignaling, 1, issignaling_test_data, RUN_TEST_LOOP_f_b_tg, END); } static const struct test_ff_i_data isunordered_test_data[] = @@ -8106,9 +8091,7 @@ static const struct test_ff_i_data isunordered_test_data[] = static void isunordered_test (void) { - START (isunordered, 1); - RUN_TEST_LOOP_ff_i_tg (isunordered, isunordered_test_data, ); - END; + ALL_RM_TEST (isunordered, 1, isunordered_test_data, RUN_TEST_LOOP_ff_i_tg, END); } static const struct test_f_f_data j0_test_data[] = @@ -9237,31 +9220,7 @@ static const struct test_f_f_data logb_test_data[] = static void logb_test (void) { - START (logb, 1); - RUN_TEST_LOOP_f_f (logb, logb_test_data, ); - END; -} - -static const struct test_f_f_data logb_downward_test_data[] = - { - /* IEEE 754-2008 says (section 5.3.3) that "logB(1) is +0.". Libm - should not return -0 from logb in any rounding mode. PowerPC32 has - failed with this test for power4 logb (and logbl on all PowerPC - platforms) in the past due to instruction selection. GCC PR 52775 - provides the availability of the fcfid insn in 32-bit mode which - eliminates the use of fsub in this instance and prevents the negative - signed 0.0. */ - - /* BZ #887 */ - TEST_f_f (logb, 1.000e+0, plus_zero, NO_INEXACT_EXCEPTION), - }; - -static void -logb_test_downward (void) -{ - START (logb_downward, 1); - RUN_TEST_LOOP_f_f (logb, logb_downward_test_data, FE_DOWNWARD); - END; + ALL_RM_TEST (logb, 1, logb_test_data, RUN_TEST_LOOP_f_f, END); } static const struct test_f_l_data lround_test_data[] = @@ -9307,9 +9266,7 @@ static const struct test_f_l_data lround_test_data[] = static void lround_test (void) { - START (lround, 1); - RUN_TEST_LOOP_f_l (lround, lround_test_data, ); - END; + ALL_RM_TEST (lround, 1, lround_test_data, RUN_TEST_LOOP_f_l, END); } @@ -9484,9 +9441,7 @@ static const struct test_f_L_data llround_test_data[] = static void llround_test (void) { - START (llround, 1); - RUN_TEST_LOOP_f_L (llround, llround_test_data, ); - END; + ALL_RM_TEST (llround, 1, llround_test_data, RUN_TEST_LOOP_f_L, END); } static const struct test_fF_f1_data modf_test_data[] = @@ -9508,9 +9463,7 @@ modf_test (void) { FLOAT x; - START (modf, 1); - RUN_TEST_LOOP_fF_f1 (modf, modf_test_data, , x); - END; + ALL_RM_TEST (modf, 1, modf_test_data, RUN_TEST_LOOP_fF_f1, END, x); } @@ -9695,9 +9648,7 @@ static const struct test_ff_f_data_nexttoward nexttoward_test_data[] = static void nexttoward_test (void) { - START (nexttoward, 1); - RUN_TEST_LOOP_ff_f (nexttoward, nexttoward_test_data, ); - END; + ALL_RM_TEST (nexttoward, 1, nexttoward_test_data, RUN_TEST_LOOP_ff_f, END); } @@ -10086,199 +10037,16 @@ static const struct test_ff_f_data remainder_test_data[] = static void remainder_test (void) { - START (remainder, 1); - RUN_TEST_LOOP_ff_f (remainder, remainder_test_data, ); - END; + ALL_RM_TEST (remainder, 1, remainder_test_data, RUN_TEST_LOOP_ff_f, END); } static void drem_test (void) { - START (drem, 1); - /* drem uses the same test data as remainder. */ - RUN_TEST_LOOP_ff_f (drem, remainder_test_data, ); - END; -} - - -static const struct test_ff_f_data remainder_tonearest_test_data[] = - { - TEST_ff_f (remainder, 1, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, 1, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, plus_infty, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, plus_infty, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, plus_infty, 1, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, plus_infty, 2, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, minus_infty, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, minus_infty, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, minus_infty, 1, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, minus_infty, 2, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), - TEST_ff_f (remainder, 0, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), - TEST_ff_f (remainder, qnan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), - - TEST_ff_f (remainder, 7.0, plus_infty, 7.0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), - TEST_ff_f (remainder, 7.0, minus_infty, 7.0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), - - TEST_ff_f (remainder, 1.625, 1.0, -0.375, NO_INEXACT_EXCEPTION), - TEST_ff_f (remainder, -1.625, 1.0, 0.375, NO_INEXACT_EXCEPTION), - TEST_ff_f (remainder, 1.625, -1.0, -0.375, NO_INEXACT_EXCEPTION), - TEST_ff_f (remainder, -1.625, -1.0, 0.375, NO_INEXACT_EXCEPTION), - TEST_ff_f (remainder, 5.0, 2.0, 1.0, NO_INEXACT_EXCEPTION), - TEST_ff_f (remainder, 3.0, 2.0, -1.0, NO_INEXACT_EXCEPTION), - }; - -static void -remainder_test_tonearest (void) -{ - START (remainder_tonearest, 1); - RUN_TEST_LOOP_ff_f (remainder, remainder_tonearest_test_data, FE_TONEAREST); - END; -} - -static void -drem_test_tonearest (void) -{ - START (drem_tonearest, 1); - /* drem uses the same test data as remainder. */ - RUN_TEST_LOOP_ff_f (drem, remainder_tonearest_test_data, FE_TONEAREST); - END; -} - - -static const struct test_ff_f_data remainder_towardzero_test_data[] = - { - TEST_ff_f (remainder, 1, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, 1, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, plus_infty, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, plus_infty, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, plus_infty, 1, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, plus_infty, 2, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, minus_infty, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, minus_infty, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, minus_infty, 1, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, minus_infty, 2, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), - TEST_ff_f (remainder, 0, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), - TEST_ff_f (remainder, qnan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), - - TEST_ff_f (remainder, 7.0, plus_infty, 7.0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), - TEST_ff_f (remainder, 7.0, minus_infty, 7.0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), - - TEST_ff_f (remainder, 1.625, 1.0, -0.375, NO_INEXACT_EXCEPTION), - TEST_ff_f (remainder, -1.625, 1.0, 0.375, NO_INEXACT_EXCEPTION), - TEST_ff_f (remainder, 1.625, -1.0, -0.375, NO_INEXACT_EXCEPTION), - TEST_ff_f (remainder, -1.625, -1.0, 0.375, NO_INEXACT_EXCEPTION), - TEST_ff_f (remainder, 5.0, 2.0, 1.0, NO_INEXACT_EXCEPTION), - TEST_ff_f (remainder, 3.0, 2.0, -1.0, NO_INEXACT_EXCEPTION), - }; - -static void -remainder_test_towardzero (void) -{ - START (remainder_towardzero, 1); - RUN_TEST_LOOP_ff_f (remainder, remainder_towardzero_test_data, FE_TOWARDZERO); - END; -} - -static void -drem_test_towardzero (void) -{ - START (drem_towardzero, 1); - /* drem uses the same test data as remainder. */ - RUN_TEST_LOOP_ff_f (drem, remainder_towardzero_test_data, FE_TOWARDZERO); - END; -} - - -static const struct test_ff_f_data remainder_downward_test_data[] = - { - TEST_ff_f (remainder, 1, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, 1, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, plus_infty, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, plus_infty, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, plus_infty, 1, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, plus_infty, 2, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, minus_infty, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, minus_infty, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, minus_infty, 1, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, minus_infty, 2, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), - TEST_ff_f (remainder, 0, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), - TEST_ff_f (remainder, qnan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), - - TEST_ff_f (remainder, 7.0, plus_infty, 7.0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), - TEST_ff_f (remainder, 7.0, minus_infty, 7.0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), - - TEST_ff_f (remainder, 1.625, 1.0, -0.375, NO_INEXACT_EXCEPTION), - TEST_ff_f (remainder, -1.625, 1.0, 0.375, NO_INEXACT_EXCEPTION), - TEST_ff_f (remainder, 1.625, -1.0, -0.375, NO_INEXACT_EXCEPTION), - TEST_ff_f (remainder, -1.625, -1.0, 0.375, NO_INEXACT_EXCEPTION), - TEST_ff_f (remainder, 5.0, 2.0, 1.0, NO_INEXACT_EXCEPTION), - TEST_ff_f (remainder, 3.0, 2.0, -1.0, NO_INEXACT_EXCEPTION), - }; - -static void -remainder_test_downward (void) -{ - START (remainder_downward, 1); - RUN_TEST_LOOP_ff_f (remainder, remainder_downward_test_data, FE_DOWNWARD); - END; -} - -static void -drem_test_downward (void) -{ - START (drem_downward, 1); /* drem uses the same test data as remainder. */ - RUN_TEST_LOOP_ff_f (drem, remainder_downward_test_data, FE_DOWNWARD); - END; -} - - -static const struct test_ff_f_data remainder_upward_test_data[] = - { - TEST_ff_f (remainder, 1, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, 1, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, plus_infty, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, plus_infty, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, plus_infty, 1, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, plus_infty, 2, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, minus_infty, minus_zero, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, minus_infty, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, minus_infty, 1, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, minus_infty, 2, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION|ERRNO_EDOM), - TEST_ff_f (remainder, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), - TEST_ff_f (remainder, 0, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), - TEST_ff_f (remainder, qnan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), - - TEST_ff_f (remainder, 7.0, plus_infty, 7.0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), - TEST_ff_f (remainder, 7.0, minus_infty, 7.0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED), - - TEST_ff_f (remainder, 1.625, 1.0, -0.375, NO_INEXACT_EXCEPTION), - TEST_ff_f (remainder, -1.625, 1.0, 0.375, NO_INEXACT_EXCEPTION), - TEST_ff_f (remainder, 1.625, -1.0, -0.375, NO_INEXACT_EXCEPTION), - TEST_ff_f (remainder, -1.625, -1.0, 0.375, NO_INEXACT_EXCEPTION), - TEST_ff_f (remainder, 5.0, 2.0, 1.0, NO_INEXACT_EXCEPTION), - TEST_ff_f (remainder, 3.0, 2.0, -1.0, NO_INEXACT_EXCEPTION), - }; - -static void -remainder_test_upward (void) -{ - START (remainder_upward, 1); - RUN_TEST_LOOP_ff_f (remainder, remainder_upward_test_data, FE_UPWARD); - END; + ALL_RM_TEST (drem, 1, remainder_test_data, RUN_TEST_LOOP_ff_f, END); } -static void -drem_test_upward (void) -{ - START (drem_upward, 1); - /* drem uses the same test data as remainder. */ - RUN_TEST_LOOP_ff_f (drem, remainder_upward_test_data, FE_UPWARD); - END; -} static const struct test_ffI_f1_data remquo_test_data[] = { @@ -10300,12 +10068,9 @@ static const struct test_ffI_f1_data remquo_test_data[] = static void remquo_test (void) { - /* x is needed. */ int x; - START (remquo, 1); - RUN_TEST_LOOP_ffI_f1 (remquo, remquo_test_data, , x); - END; + ALL_RM_TEST (remquo, 1, remquo_test_data, RUN_TEST_LOOP_ffI_f1, END, x); } static const struct test_f_f_data rint_test_data[] = @@ -10859,9 +10624,7 @@ static const struct test_f_f_data round_test_data[] = static void round_test (void) { - START (round, 1); - RUN_TEST_LOOP_f_f (round, round_test_data, ); - END; + ALL_RM_TEST (round, 1, round_test_data, RUN_TEST_LOOP_f_f, END); } @@ -11034,9 +10797,7 @@ static const struct test_f_i_data signbit_test_data[] = static void signbit_test (void) { - START (signbit, 1); - RUN_TEST_LOOP_f_b_tg (signbit, signbit_test_data, ); - END; + ALL_RM_TEST (signbit, 1, signbit_test_data, RUN_TEST_LOOP_f_b_tg, END); } @@ -11536,9 +11297,7 @@ static const struct test_f_f_data trunc_test_data[] = static void trunc_test (void) { - START (trunc, 1); - RUN_TEST_LOOP_f_f (trunc, trunc_test_data, ); - END; + ALL_RM_TEST (trunc, 1, trunc_test_data, RUN_TEST_LOOP_f_f, END); } static const struct test_f_f_data y0_test_data[] = @@ -11672,9 +11431,7 @@ static const struct test_f_f_data significand_test_data[] = static void significand_test (void) { - START (significand, 1); - RUN_TEST_LOOP_f_f (significand, significand_test_data, ); - END; + ALL_RM_TEST (significand, 1, significand_test_data, RUN_TEST_LOOP_f_f, END); } @@ -11956,7 +11713,6 @@ main (int argc, char **argv) log1p_test (); log2_test (); logb_test (); - logb_test_downward (); modf_test (); pow10_test (); ilogb_test (); @@ -12013,16 +11769,8 @@ main (int argc, char **argv) /* Remainder functions: */ drem_test (); - drem_test_tonearest (); - drem_test_towardzero (); - drem_test_downward (); - drem_test_upward (); fmod_test (); remainder_test (); - remainder_test_tonearest (); - remainder_test_towardzero (); - remainder_test_downward (); - remainder_test_upward (); remquo_test (); /* Manipulation functions: */ |