diff options
-rw-r--r-- | ChangeLog | 17 | ||||
-rw-r--r-- | math/libm-test.inc | 1549 |
2 files changed, 797 insertions, 769 deletions
diff --git a/ChangeLog b/ChangeLog index 8a846bc78e..ea8fc81a89 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,20 @@ +2013-05-16 Joseph Myers <joseph@codesourcery.com> + + * math/libm-test.inc (struct test_f_L_data): New type. + (RUN_TEST_LOOP_f_L): New macro. + (llrint_test_data): New variable. + (llrint_test): Run tests with RUN_TEST_LOOP_f_L. + (llrint_tonearest_test_data): New variable. + (llrint_test_tonearest): Run tests with RUN_TEST_LOOP_f_L. + (llrint_towardzero_test_data): New variable. + (llrint_test_towardzero): Run tests with RUN_TEST_LOOP_f_L. + (llrint_downward_test_data): New variable. + (llrint_test_downward): Run tests with RUN_TEST_LOOP_f_L. + (llrint_upward_test_data): New variable. + (llrint_test_upward): Run tests with RUN_TEST_LOOP_f_L. + (llround_test_data): New variable. + (llround_test): Run tests with RUN_TEST_LOOP_f_L. + 2013-05-13 Peter Collingbourne <pcc@google.com> * math/atest-exp2.c (get_log2): Remove const attribute. diff --git a/math/libm-test.inc b/math/libm-test.inc index 0843482d8d..10378de7aa 100644 --- a/math/libm-test.inc +++ b/math/libm-test.inc @@ -1009,6 +1009,14 @@ struct test_f_l_data long int max_ulp; int exceptions; }; +struct test_f_L_data +{ + const char *test_name; + FLOAT arg; + long long int expected; + long long int max_ulp; + int exceptions; +}; /* Set the rounding mode, or restore the saved value. */ #define IF_ROUND_INIT_ /* Empty. */ @@ -1281,6 +1289,13 @@ struct test_f_l_data MAX_ULP, EXCEPTIONS) \ check_longlong (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED, \ MAX_ULP, EXCEPTIONS) +#define RUN_TEST_LOOP_f_L(FUNC_NAME, ARRAY, ROUNDING_MODE) \ + IF_ROUND_INIT_ ## ROUNDING_MODE \ + for (size_t i = 0; i < sizeof (ARRAY) / sizeof (ARRAY)[0]; i++) \ + RUN_TEST_f_L ((ARRAY)[i].test_name, FUNC_NAME, (ARRAY)[i].arg, \ + (ARRAY)[i].expected, (ARRAY)[i].max_ulp, \ + (ARRAY)[i].exceptions); \ + ROUND_RESTORE_ ## ROUNDING_MODE #define RUN_TEST_sincos(ARG, TEST_NAME_SIN, SIN_RES_VAR, EXPECTED_SIN, \ MAX_ULP_SIN, TEST_NAME_COS, COS_RES_VAR, \ EXPECTED_COS, MAX_ULP_COS, EXCEPTIONS) \ @@ -10546,682 +10561,674 @@ lrint_test_upward (void) } +static const struct test_f_L_data llrint_test_data[] = + { + START_DATA (llrint), + /* XXX this test is incomplete. We need to have a way to specifiy + the rounding method and test the critical cases. So far, only + unproblematic numbers are tested. */ + /* TODO: missing +/-Inf as well as qNaN tests. */ + TEST_f_L (llrint, 0.0, 0), + TEST_f_L (llrint, minus_zero, 0), + TEST_f_L (llrint, 0.2L, 0), + TEST_f_L (llrint, -0.2L, 0), + + TEST_f_L (llrint, 1.4L, 1), + TEST_f_L (llrint, -1.4L, -1), + + TEST_f_L (llrint, 8388600.3L, 8388600), + TEST_f_L (llrint, -8388600.3L, -8388600), + + TEST_f_L (llrint, 1071930.0008, 1071930), + + /* Test boundary conditions. */ + /* 0x1FFFFF */ + TEST_f_L (llrint, 2097151.0,2097151LL), + /* 0x800000 */ + TEST_f_L (llrint, 8388608.0, 8388608LL), + /* 0x1000000 */ + TEST_f_L (llrint, 16777216.0, 16777216LL), + /* 0x20000000000 */ + TEST_f_L (llrint, 2199023255552.0, 2199023255552LL), + /* 0x40000000000 */ + TEST_f_L (llrint, 4398046511104.0, 4398046511104LL), + /* 0x1000000000000 */ + TEST_f_L (llrint, 281474976710656.0, 281474976710656LL), + /* 0x10000000000000 */ + TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL), + /* 0x10000080000000 */ + TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL), + /* 0x20000000000000 */ + TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL), + /* 0x80000000000000 */ + TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL), + /* 0x100000000000000 */ + TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL), +#ifdef TEST_LDOUBLE + /* The input can only be represented in long double. */ + TEST_f_L (llrint, 4503599627370495.5L, 4503599627370496LL), + TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL), + TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL), + TEST_f_L (llrint, 4503599627370496.75L, 4503599627370497LL), + TEST_f_L (llrint, 4503599627370497.5L, 4503599627370498LL), + + TEST_f_L (llrint, -4503599627370495.5L, -4503599627370496LL), + TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL), + TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL), + TEST_f_L (llrint, -4503599627370496.75L, -4503599627370497LL), + TEST_f_L (llrint, -4503599627370497.5L, -4503599627370498LL), + +# if LDBL_MANT_DIG > 100 + TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL), + TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL), + TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL), + TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370495LL), + TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370496LL), + TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370497LL), + + TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL), + TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL), + TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL), + TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370495LL), + TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370496LL), + TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370497LL), +#endif + + TEST_f_L (llrint, 9007199254740991.5L, 9007199254740992LL), + TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL), + TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL), + TEST_f_L (llrint, 9007199254740992.75L, 9007199254740993LL), + TEST_f_L (llrint, 9007199254740993.5L, 9007199254740994LL), + + TEST_f_L (llrint, -9007199254740991.5L, -9007199254740992LL), + TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL), + TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL), + TEST_f_L (llrint, -9007199254740992.75L, -9007199254740993LL), + TEST_f_L (llrint, -9007199254740993.5L, -9007199254740994LL), + +# if LDBL_MANT_DIG > 100 + TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL), + TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL), + TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL), + TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740992LL), + TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740993LL), + TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740994LL), + + TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL), + TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL), + TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL), + TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740992LL), + TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740993LL), + TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740994LL), +#endif + + TEST_f_L (llrint, 72057594037927935.5L, 72057594037927936LL), + TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL), + TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL), + TEST_f_L (llrint, 72057594037927936.75L, 72057594037927937LL), + TEST_f_L (llrint, 72057594037927937.5L, 72057594037927938LL), + + TEST_f_L (llrint, -72057594037927935.5L, -72057594037927936LL), + TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL), + TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL), + TEST_f_L (llrint, -72057594037927936.75L, -72057594037927937LL), + TEST_f_L (llrint, -72057594037927937.5L, -72057594037927938LL), + +# if LDBL_MANT_DIG > 100 + TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775806LL), + TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775806LL), + TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL), + TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL), + TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL), + TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL), + TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L), + TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL), + TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775807LL), + TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775807LL), + TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL), + TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL), +# endif +#endif + END_DATA (llrint) + }; + static void llrint_test (void) { - /* XXX this test is incomplete. We need to have a way to specifiy - the rounding method and test the critical cases. So far, only - unproblematic numbers are tested. */ - /* TODO: missing +/-Inf as well as qNaN tests. */ - START (llrint); + RUN_TEST_LOOP_f_L (llrint, llrint_test_data, ); + END (llrint); +} - TEST_f_L (llrint, 0.0, 0); - TEST_f_L (llrint, minus_zero, 0); - TEST_f_L (llrint, 0.2L, 0); - TEST_f_L (llrint, -0.2L, 0); - - TEST_f_L (llrint, 1.4L, 1); - TEST_f_L (llrint, -1.4L, -1); - - TEST_f_L (llrint, 8388600.3L, 8388600); - TEST_f_L (llrint, -8388600.3L, -8388600); - - TEST_f_L (llrint, 1071930.0008, 1071930); - - /* Test boundary conditions. */ - /* 0x1FFFFF */ - TEST_f_L (llrint, 2097151.0,2097151LL); - /* 0x800000 */ - TEST_f_L (llrint, 8388608.0, 8388608LL); - /* 0x1000000 */ - TEST_f_L (llrint, 16777216.0, 16777216LL); - /* 0x20000000000 */ - TEST_f_L (llrint, 2199023255552.0, 2199023255552LL); - /* 0x40000000000 */ - TEST_f_L (llrint, 4398046511104.0, 4398046511104LL); - /* 0x1000000000000 */ - TEST_f_L (llrint, 281474976710656.0, 281474976710656LL); - /* 0x10000000000000 */ - TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL); - /* 0x10000080000000 */ - TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL); - /* 0x20000000000000 */ - TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL); - /* 0x80000000000000 */ - TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL); - /* 0x100000000000000 */ - TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL); +static const struct test_f_L_data llrint_tonearest_test_data[] = + { + START_DATA (llrint_tonearest), + TEST_f_L (llrint, 0.0, 0), + TEST_f_L (llrint, minus_zero, 0), + TEST_f_L (llrint, 0.2L, 0), + TEST_f_L (llrint, -0.2L, 0), + + TEST_f_L (llrint, 1.4L, 1), + TEST_f_L (llrint, -1.4L, -1), + + TEST_f_L (llrint, 8388600.3L, 8388600), + TEST_f_L (llrint, -8388600.3L, -8388600), + + TEST_f_L (llrint, 1071930.0008, 1071930), + + /* Test boundary conditions. */ + /* 0x1FFFFF */ + TEST_f_L (llrint, 2097151.0,2097151LL), + /* 0x800000 */ + TEST_f_L (llrint, 8388608.0, 8388608LL), + /* 0x1000000 */ + TEST_f_L (llrint, 16777216.0, 16777216LL), + /* 0x20000000000 */ + TEST_f_L (llrint, 2199023255552.0, 2199023255552LL), + /* 0x40000000000 */ + TEST_f_L (llrint, 4398046511104.0, 4398046511104LL), + /* 0x1000000000000 */ + TEST_f_L (llrint, 281474976710656.0, 281474976710656LL), + /* 0x10000000000000 */ + TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL), + /* 0x10000080000000 */ + TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL), + /* 0x20000000000000 */ + TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL), + /* 0x80000000000000 */ + TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL), + /* 0x100000000000000 */ + TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL), #ifdef TEST_LDOUBLE - /* The input can only be represented in long double. */ - TEST_f_L (llrint, 4503599627370495.5L, 4503599627370496LL); - TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL); - TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL); - TEST_f_L (llrint, 4503599627370496.75L, 4503599627370497LL); - TEST_f_L (llrint, 4503599627370497.5L, 4503599627370498LL); - - TEST_f_L (llrint, -4503599627370495.5L, -4503599627370496LL); - TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL); - TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL); - TEST_f_L (llrint, -4503599627370496.75L, -4503599627370497LL); - TEST_f_L (llrint, -4503599627370497.5L, -4503599627370498LL); + /* The input can only be represented in long double. */ + TEST_f_L (llrint, 4503599627370495.5L, 4503599627370496LL), + TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL), + TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL), + TEST_f_L (llrint, 4503599627370496.75L, 4503599627370497LL), + TEST_f_L (llrint, 4503599627370497.5L, 4503599627370498LL), + + TEST_f_L (llrint, -4503599627370495.5L, -4503599627370496LL), + TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL), + TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL), + TEST_f_L (llrint, -4503599627370496.75L, -4503599627370497LL), + TEST_f_L (llrint, -4503599627370497.5L, -4503599627370498LL), # if LDBL_MANT_DIG > 100 - TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL); - TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL); - TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL); - TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370495LL); - TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370496LL); - TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370497LL); - - TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL); - TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL); - TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL); - TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370495LL); - TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370496LL); - TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370497LL); -#endif - - TEST_f_L (llrint, 9007199254740991.5L, 9007199254740992LL); - TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL); - TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL); - TEST_f_L (llrint, 9007199254740992.75L, 9007199254740993LL); - TEST_f_L (llrint, 9007199254740993.5L, 9007199254740994LL); - - TEST_f_L (llrint, -9007199254740991.5L, -9007199254740992LL); - TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL); - TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL); - TEST_f_L (llrint, -9007199254740992.75L, -9007199254740993LL); - TEST_f_L (llrint, -9007199254740993.5L, -9007199254740994LL); + TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL), + TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL), + TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL), + TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370495LL), + TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370496LL), + TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370497LL), + + TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL), + TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL), + TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL), + TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370495LL), + TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370496LL), + TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370497LL), +#endif + + TEST_f_L (llrint, 9007199254740991.5L, 9007199254740992LL), + TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL), + TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL), + TEST_f_L (llrint, 9007199254740992.75L, 9007199254740993LL), + TEST_f_L (llrint, 9007199254740993.5L, 9007199254740994LL), + + TEST_f_L (llrint, -9007199254740991.5L, -9007199254740992LL), + TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL), + TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL), + TEST_f_L (llrint, -9007199254740992.75L, -9007199254740993LL), + TEST_f_L (llrint, -9007199254740993.5L, -9007199254740994LL), # if LDBL_MANT_DIG > 100 - TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL); - TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL); - TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL); - TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740992LL); - TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740993LL); - TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740994LL); - - TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL); - TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL); - TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL); - TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740992LL); - TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740993LL); - TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740994LL); -#endif - - TEST_f_L (llrint, 72057594037927935.5L, 72057594037927936LL); - TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL); - TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL); - TEST_f_L (llrint, 72057594037927936.75L, 72057594037927937LL); - TEST_f_L (llrint, 72057594037927937.5L, 72057594037927938LL); - - TEST_f_L (llrint, -72057594037927935.5L, -72057594037927936LL); - TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL); - TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL); - TEST_f_L (llrint, -72057594037927936.75L, -72057594037927937LL); - TEST_f_L (llrint, -72057594037927937.5L, -72057594037927938LL); + TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL), + TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL), + TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL), + TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740992LL), + TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740993LL), + TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740994LL), + + TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL), + TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL), + TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL), + TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740992LL), + TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740993LL), + TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740994LL), +#endif + + TEST_f_L (llrint, 72057594037927935.5L, 72057594037927936LL), + TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL), + TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL), + TEST_f_L (llrint, 72057594037927936.75L, 72057594037927937LL), + TEST_f_L (llrint, 72057594037927937.5L, 72057594037927938LL), + + TEST_f_L (llrint, -72057594037927935.5L, -72057594037927936LL), + TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL), + TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL), + TEST_f_L (llrint, -72057594037927936.75L, -72057594037927937LL), + TEST_f_L (llrint, -72057594037927937.5L, -72057594037927938LL), # if LDBL_MANT_DIG > 100 - TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775806LL); - TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775806LL); - TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL); - TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL); - TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL); - TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL); - TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L); - TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL); - TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775807LL); - TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775807LL); - TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL); - TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL); + TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775806LL), + TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775806LL), + TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL), + TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL), + TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL), + TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL), + TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L), + TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL), + TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775807LL), + TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775807LL), + TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL), + TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL), # endif #endif - - END (llrint); -} + END_DATA (llrint_tonearest) + }; static void llrint_test_tonearest (void) { - int save_round_mode; START (llrint_tonearest); + RUN_TEST_LOOP_f_L (llrint, llrint_tonearest_test_data, FE_TONEAREST); + END (llrint_tonearest); +} - save_round_mode = fegetround (); - - if (!fesetround (FE_TONEAREST)) - { - TEST_f_L (llrint, 0.0, 0); - TEST_f_L (llrint, minus_zero, 0); - TEST_f_L (llrint, 0.2L, 0); - TEST_f_L (llrint, -0.2L, 0); - - TEST_f_L (llrint, 1.4L, 1); - TEST_f_L (llrint, -1.4L, -1); - - TEST_f_L (llrint, 8388600.3L, 8388600); - TEST_f_L (llrint, -8388600.3L, -8388600); - - TEST_f_L (llrint, 1071930.0008, 1071930); - - /* Test boundary conditions. */ - /* 0x1FFFFF */ - TEST_f_L (llrint, 2097151.0,2097151LL); - /* 0x800000 */ - TEST_f_L (llrint, 8388608.0, 8388608LL); - /* 0x1000000 */ - TEST_f_L (llrint, 16777216.0, 16777216LL); - /* 0x20000000000 */ - TEST_f_L (llrint, 2199023255552.0, 2199023255552LL); - /* 0x40000000000 */ - TEST_f_L (llrint, 4398046511104.0, 4398046511104LL); - /* 0x1000000000000 */ - TEST_f_L (llrint, 281474976710656.0, 281474976710656LL); - /* 0x10000000000000 */ - TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL); - /* 0x10000080000000 */ - TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL); - /* 0x20000000000000 */ - TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL); - /* 0x80000000000000 */ - TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL); - /* 0x100000000000000 */ - TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL); +static const struct test_f_L_data llrint_towardzero_test_data[] = + { + START_DATA (llrint_towardzero), + TEST_f_L (llrint, 0.0, 0), + TEST_f_L (llrint, minus_zero, 0), + TEST_f_L (llrint, 0.2L, 0), + TEST_f_L (llrint, -0.2L, 0), + + TEST_f_L (llrint, 1.4L, 1), + TEST_f_L (llrint, -1.4L, -1), + + TEST_f_L (llrint, 8388600.3L, 8388600), + TEST_f_L (llrint, -8388600.3L, -8388600), + + TEST_f_L (llrint, 1071930.0008, 1071930), + + /* Test boundary conditions. */ + /* 0x1FFFFF */ + TEST_f_L (llrint, 2097151.0,2097151LL), + /* 0x800000 */ + TEST_f_L (llrint, 8388608.0, 8388608LL), + /* 0x1000000 */ + TEST_f_L (llrint, 16777216.0, 16777216LL), + /* 0x20000000000 */ + TEST_f_L (llrint, 2199023255552.0, 2199023255552LL), + /* 0x40000000000 */ + TEST_f_L (llrint, 4398046511104.0, 4398046511104LL), + /* 0x1000000000000 */ + TEST_f_L (llrint, 281474976710656.0, 281474976710656LL), + /* 0x10000000000000 */ + TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL), + /* 0x10000080000000 */ + TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL), + /* 0x20000000000000 */ + TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL), + /* 0x80000000000000 */ + TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL), + /* 0x100000000000000 */ + TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL), #ifdef TEST_LDOUBLE - /* The input can only be represented in long double. */ - TEST_f_L (llrint, 4503599627370495.5L, 4503599627370496LL); - TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL); - TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL); - TEST_f_L (llrint, 4503599627370496.75L, 4503599627370497LL); - TEST_f_L (llrint, 4503599627370497.5L, 4503599627370498LL); - - TEST_f_L (llrint, -4503599627370495.5L, -4503599627370496LL); - TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL); - TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL); - TEST_f_L (llrint, -4503599627370496.75L, -4503599627370497LL); - TEST_f_L (llrint, -4503599627370497.5L, -4503599627370498LL); + /* The input can only be represented in long double. */ + TEST_f_L (llrint, 4503599627370495.5L, 4503599627370495LL), + TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL), + TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL), + TEST_f_L (llrint, 4503599627370496.75L, 4503599627370496LL), + TEST_f_L (llrint, 4503599627370497.5L, 4503599627370497LL), + + TEST_f_L (llrint, -4503599627370495.5L, -4503599627370495LL), + TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL), + TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL), + TEST_f_L (llrint, -4503599627370496.75L, -4503599627370496LL), + TEST_f_L (llrint, -4503599627370497.5L, -4503599627370497LL), # if LDBL_MANT_DIG > 100 - TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL); - TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL); - TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL); - TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370495LL); - TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370496LL); - TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370497LL); - - TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL); - TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL); - TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL); - TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370495LL); - TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370496LL); - TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370497LL); -#endif - - TEST_f_L (llrint, 9007199254740991.5L, 9007199254740992LL); - TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL); - TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL); - TEST_f_L (llrint, 9007199254740992.75L, 9007199254740993LL); - TEST_f_L (llrint, 9007199254740993.5L, 9007199254740994LL); - - TEST_f_L (llrint, -9007199254740991.5L, -9007199254740992LL); - TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL); - TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL); - TEST_f_L (llrint, -9007199254740992.75L, -9007199254740993LL); - TEST_f_L (llrint, -9007199254740993.5L, -9007199254740994LL); + TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL), + TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL), + TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL), + TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370494LL), + TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370495LL), + TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370496LL), + + TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL), + TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL), + TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL), + TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370494LL), + TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370495LL), + TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370496LL), +#endif + + TEST_f_L (llrint, 9007199254740991.5L, 9007199254740991LL), + TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL), + TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL), + TEST_f_L (llrint, 9007199254740992.75L, 9007199254740992LL), + TEST_f_L (llrint, 9007199254740993.5L, 9007199254740993LL), + + TEST_f_L (llrint, -9007199254740991.5L, -9007199254740991LL), + TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL), + TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL), + TEST_f_L (llrint, -9007199254740992.75L, -9007199254740992LL), + TEST_f_L (llrint, -9007199254740993.5L, -9007199254740993LL), # if LDBL_MANT_DIG > 100 - TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL); - TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL); - TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL); - TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740992LL); - TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740993LL); - TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740994LL); - - TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL); - TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL); - TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL); - TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740992LL); - TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740993LL); - TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740994LL); -#endif - - TEST_f_L (llrint, 72057594037927935.5L, 72057594037927936LL); - TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL); - TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL); - TEST_f_L (llrint, 72057594037927936.75L, 72057594037927937LL); - TEST_f_L (llrint, 72057594037927937.5L, 72057594037927938LL); - - TEST_f_L (llrint, -72057594037927935.5L, -72057594037927936LL); - TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL); - TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL); - TEST_f_L (llrint, -72057594037927936.75L, -72057594037927937LL); - TEST_f_L (llrint, -72057594037927937.5L, -72057594037927938LL); + TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL), + TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL), + TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL), + TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740991LL), + TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740992LL), + TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740993LL), + + TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL), + TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL), + TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL), + TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740991LL), + TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740992LL), + TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740993LL), +#endif + + TEST_f_L (llrint, 72057594037927935.5L, 72057594037927935LL), + TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL), + TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL), + TEST_f_L (llrint, 72057594037927936.75L, 72057594037927936LL), + TEST_f_L (llrint, 72057594037927937.5L, 72057594037927937LL), + + TEST_f_L (llrint, -72057594037927935.5L, -72057594037927935LL), + TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL), + TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL), + TEST_f_L (llrint, -72057594037927936.75L, -72057594037927936LL), + TEST_f_L (llrint, -72057594037927937.5L, -72057594037927937LL), # if LDBL_MANT_DIG > 100 - TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775806LL); - TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775806LL); - TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL); - TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL); - TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL); - TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL); - TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L); - TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL); - TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775807LL); - TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775807LL); - TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL); - TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL); + TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775805LL), + TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775805LL), + TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL), + TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL), + TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL), + TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL), + TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L), + TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL), + TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775806LL), + TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775806LL), + TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL), + TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL), # endif #endif - } - - fesetround (save_round_mode); - - END (llrint_tonearest); -} + END_DATA (llrint_towardzero) + }; static void llrint_test_towardzero (void) { - int save_round_mode; START (llrint_towardzero); + RUN_TEST_LOOP_f_L (llrint, llrint_towardzero_test_data, FE_TOWARDZERO); + END (llrint_towardzero); +} - save_round_mode = fegetround (); - - if (!fesetround (FE_TOWARDZERO)) - { - TEST_f_L (llrint, 0.0, 0); - TEST_f_L (llrint, minus_zero, 0); - TEST_f_L (llrint, 0.2L, 0); - TEST_f_L (llrint, -0.2L, 0); - - TEST_f_L (llrint, 1.4L, 1); - TEST_f_L (llrint, -1.4L, -1); - - TEST_f_L (llrint, 8388600.3L, 8388600); - TEST_f_L (llrint, -8388600.3L, -8388600); - - TEST_f_L (llrint, 1071930.0008, 1071930); - - /* Test boundary conditions. */ - /* 0x1FFFFF */ - TEST_f_L (llrint, 2097151.0,2097151LL); - /* 0x800000 */ - TEST_f_L (llrint, 8388608.0, 8388608LL); - /* 0x1000000 */ - TEST_f_L (llrint, 16777216.0, 16777216LL); - /* 0x20000000000 */ - TEST_f_L (llrint, 2199023255552.0, 2199023255552LL); - /* 0x40000000000 */ - TEST_f_L (llrint, 4398046511104.0, 4398046511104LL); - /* 0x1000000000000 */ - TEST_f_L (llrint, 281474976710656.0, 281474976710656LL); - /* 0x10000000000000 */ - TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL); - /* 0x10000080000000 */ - TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL); - /* 0x20000000000000 */ - TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL); - /* 0x80000000000000 */ - TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL); - /* 0x100000000000000 */ - TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL); +static const struct test_f_L_data llrint_downward_test_data[] = + { + START_DATA (llrint_downward), + TEST_f_L (llrint, 0.0, 0), + TEST_f_L (llrint, minus_zero, 0), + TEST_f_L (llrint, 0.2L, 0), + TEST_f_L (llrint, -0.2L, -1), + + TEST_f_L (llrint, 1.4L, 1), + TEST_f_L (llrint, -1.4L, -2), + + TEST_f_L (llrint, 8388600.3L, 8388600), + TEST_f_L (llrint, -8388600.3L, -8388601), + + TEST_f_L (llrint, 1071930.0008, 1071930), + + /* Test boundary conditions. */ + /* 0x1FFFFF */ + TEST_f_L (llrint, 2097151.0,2097151LL), + /* 0x800000 */ + TEST_f_L (llrint, 8388608.0, 8388608LL), + /* 0x1000000 */ + TEST_f_L (llrint, 16777216.0, 16777216LL), + /* 0x20000000000 */ + TEST_f_L (llrint, 2199023255552.0, 2199023255552LL), + /* 0x40000000000 */ + TEST_f_L (llrint, 4398046511104.0, 4398046511104LL), + /* 0x1000000000000 */ + TEST_f_L (llrint, 281474976710656.0, 281474976710656LL), + /* 0x10000000000000 */ + TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL), + /* 0x10000080000000 */ + TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL), + /* 0x20000000000000 */ + TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL), + /* 0x80000000000000 */ + TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL), + /* 0x100000000000000 */ + TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL), #ifdef TEST_LDOUBLE - /* The input can only be represented in long double. */ - TEST_f_L (llrint, 4503599627370495.5L, 4503599627370495LL); - TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL); - TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL); - TEST_f_L (llrint, 4503599627370496.75L, 4503599627370496LL); - TEST_f_L (llrint, 4503599627370497.5L, 4503599627370497LL); - - TEST_f_L (llrint, -4503599627370495.5L, -4503599627370495LL); - TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL); - TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL); - TEST_f_L (llrint, -4503599627370496.75L, -4503599627370496LL); - TEST_f_L (llrint, -4503599627370497.5L, -4503599627370497LL); + /* The input can only be represented in long double. */ + TEST_f_L (llrint, 4503599627370495.5L, 4503599627370495LL), + TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL), + TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL), + TEST_f_L (llrint, 4503599627370496.75L, 4503599627370496LL), + TEST_f_L (llrint, 4503599627370497.5L, 4503599627370497LL), + + TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL), + TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL), + TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL), + TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370494LL), + TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370495LL), + TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370496LL), + + TEST_f_L (llrint, -4503599627370495.5L, -4503599627370496LL), + TEST_f_L (llrint, -4503599627370496.25L, -4503599627370497LL), + TEST_f_L (llrint, -4503599627370496.5L, -4503599627370497LL), + TEST_f_L (llrint, -4503599627370496.75L, -4503599627370497LL), + TEST_f_L (llrint, -4503599627370497.5L, -4503599627370498LL), + + TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370496LL), + TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370497LL), + TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370498LL), + TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370495LL), + TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370496LL), + TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370497LL), + + TEST_f_L (llrint, 9007199254740991.5L, 9007199254740991LL), + TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL), + TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL), + TEST_f_L (llrint, 9007199254740992.75L, 9007199254740992LL), + TEST_f_L (llrint, 9007199254740993.5L, 9007199254740993LL), + + TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL), + TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL), + TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL), + TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740991LL), + TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740992LL), + TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740993LL), + + TEST_f_L (llrint, -9007199254740991.5L, -9007199254740992LL), + TEST_f_L (llrint, -9007199254740992.25L, -9007199254740993LL), + TEST_f_L (llrint, -9007199254740992.5L, -9007199254740993LL), + TEST_f_L (llrint, -9007199254740992.75L, -9007199254740993LL), + TEST_f_L (llrint, -9007199254740993.5L, -9007199254740994LL), + + TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740992LL), + TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740993LL), + TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740994LL), + TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740992LL), + TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740993LL), + TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740994LL), + + TEST_f_L (llrint, 72057594037927935.5L, 72057594037927935LL), + TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL), + TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL), + TEST_f_L (llrint, 72057594037927936.75L, 72057594037927936LL), + TEST_f_L (llrint, 72057594037927937.5L, 72057594037927937LL), + + TEST_f_L (llrint, -72057594037927935.5L, -72057594037927936LL), + TEST_f_L (llrint, -72057594037927936.25L, -72057594037927937LL), + TEST_f_L (llrint, -72057594037927936.5L, -72057594037927937LL), + TEST_f_L (llrint, -72057594037927936.75L, -72057594037927937LL), + TEST_f_L (llrint, -72057594037927937.5L, -72057594037927938LL), # if LDBL_MANT_DIG > 100 - TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL); - TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL); - TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL); - TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370494LL); - TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370495LL); - TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370496LL); - - TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL); - TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL); - TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL); - TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370494LL); - TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370495LL); - TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370496LL); -#endif - - TEST_f_L (llrint, 9007199254740991.5L, 9007199254740991LL); - TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL); - TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL); - TEST_f_L (llrint, 9007199254740992.75L, 9007199254740992LL); - TEST_f_L (llrint, 9007199254740993.5L, 9007199254740993LL); - - TEST_f_L (llrint, -9007199254740991.5L, -9007199254740991LL); - TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL); - TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL); - TEST_f_L (llrint, -9007199254740992.75L, -9007199254740992LL); - TEST_f_L (llrint, -9007199254740993.5L, -9007199254740993LL); - -# if LDBL_MANT_DIG > 100 - TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL); - TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL); - TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL); - TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740991LL); - TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740992LL); - TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740993LL); - - TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL); - TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL); - TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL); - TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740991LL); - TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740992LL); - TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740993LL); -#endif - - TEST_f_L (llrint, 72057594037927935.5L, 72057594037927935LL); - TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL); - TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL); - TEST_f_L (llrint, 72057594037927936.75L, 72057594037927936LL); - TEST_f_L (llrint, 72057594037927937.5L, 72057594037927937LL); - - TEST_f_L (llrint, -72057594037927935.5L, -72057594037927935LL); - TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL); - TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL); - TEST_f_L (llrint, -72057594037927936.75L, -72057594037927936LL); - TEST_f_L (llrint, -72057594037927937.5L, -72057594037927937LL); - -# if LDBL_MANT_DIG > 100 - TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775805LL); - TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775805LL); - TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL); - TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL); - TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL); - TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL); - TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L); - TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL); - TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775806LL); - TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775806LL); - TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL); - TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL); + TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775805LL), + TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775806LL), + TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL), + TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL), + TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL), + TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775807LL), + TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L), + TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775807LL), + TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775806LL), + TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775807LL), + TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL), + TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL), # endif #endif - } - - fesetround (save_round_mode); - - END (llrint_towardzero); -} + END_DATA (llrint_downward) + }; static void llrint_test_downward (void) { - int save_round_mode; START (llrint_downward); + RUN_TEST_LOOP_f_L (llrint, llrint_downward_test_data, FE_DOWNWARD); + END (llrint_downward); +} - save_round_mode = fegetround (); - - if (!fesetround (FE_DOWNWARD)) - { - TEST_f_L (llrint, 0.0, 0); - TEST_f_L (llrint, minus_zero, 0); - TEST_f_L (llrint, 0.2L, 0); - TEST_f_L (llrint, -0.2L, -1); - - TEST_f_L (llrint, 1.4L, 1); - TEST_f_L (llrint, -1.4L, -2); - - TEST_f_L (llrint, 8388600.3L, 8388600); - TEST_f_L (llrint, -8388600.3L, -8388601); - - TEST_f_L (llrint, 1071930.0008, 1071930); - - /* Test boundary conditions. */ - /* 0x1FFFFF */ - TEST_f_L (llrint, 2097151.0,2097151LL); - /* 0x800000 */ - TEST_f_L (llrint, 8388608.0, 8388608LL); - /* 0x1000000 */ - TEST_f_L (llrint, 16777216.0, 16777216LL); - /* 0x20000000000 */ - TEST_f_L (llrint, 2199023255552.0, 2199023255552LL); - /* 0x40000000000 */ - TEST_f_L (llrint, 4398046511104.0, 4398046511104LL); - /* 0x1000000000000 */ - TEST_f_L (llrint, 281474976710656.0, 281474976710656LL); - /* 0x10000000000000 */ - TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL); - /* 0x10000080000000 */ - TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL); - /* 0x20000000000000 */ - TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL); - /* 0x80000000000000 */ - TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL); - /* 0x100000000000000 */ - TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL); +static const struct test_f_L_data llrint_upward_test_data[] = + { + START_DATA (llrint_upward), + TEST_f_L (llrint, 0.0, 0), + TEST_f_L (llrint, minus_zero, 0), + TEST_f_L (llrint, 0.2L, 1), + TEST_f_L (llrint, -0.2L, 0), + + TEST_f_L (llrint, 1.4L, 2), + TEST_f_L (llrint, -1.4L, -1), + + TEST_f_L (llrint, 8388600.3L, 8388601), + TEST_f_L (llrint, -8388600.3L, -8388600), +#ifndef TEST_FLOAT + TEST_f_L (llrint, 1071930.0008, 1071931), +#endif + /* Test boundary conditions. */ + /* 0x1FFFFF */ + TEST_f_L (llrint, 2097151.0,2097151LL), + /* 0x800000 */ + TEST_f_L (llrint, 8388608.0, 8388608LL), + /* 0x1000000 */ + TEST_f_L (llrint, 16777216.0, 16777216LL), + /* 0x20000000000 */ + TEST_f_L (llrint, 2199023255552.0, 2199023255552LL), + /* 0x40000000000 */ + TEST_f_L (llrint, 4398046511104.0, 4398046511104LL), + /* 0x1000000000000 */ + TEST_f_L (llrint, 281474976710656.0, 281474976710656LL), + /* 0x10000000000000 */ + TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL), + /* 0x10000080000000 */ + TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL), + /* 0x20000000000000 */ + TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL), + /* 0x80000000000000 */ + TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL), + /* 0x100000000000000 */ + TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL), #ifdef TEST_LDOUBLE - /* The input can only be represented in long double. */ - TEST_f_L (llrint, 4503599627370495.5L, 4503599627370495LL); - TEST_f_L (llrint, 4503599627370496.25L, 4503599627370496LL); - TEST_f_L (llrint, 4503599627370496.5L, 4503599627370496LL); - TEST_f_L (llrint, 4503599627370496.75L, 4503599627370496LL); - TEST_f_L (llrint, 4503599627370497.5L, 4503599627370497LL); - - TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370495LL); - TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370496LL); - TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370497LL); - TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370494LL); - TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370495LL); - TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370496LL); - - TEST_f_L (llrint, -4503599627370495.5L, -4503599627370496LL); - TEST_f_L (llrint, -4503599627370496.25L, -4503599627370497LL); - TEST_f_L (llrint, -4503599627370496.5L, -4503599627370497LL); - TEST_f_L (llrint, -4503599627370496.75L, -4503599627370497LL); - TEST_f_L (llrint, -4503599627370497.5L, -4503599627370498LL); - - TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370496LL); - TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370497LL); - TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370498LL); - TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370495LL); - TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370496LL); - TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370497LL); - - TEST_f_L (llrint, 9007199254740991.5L, 9007199254740991LL); - TEST_f_L (llrint, 9007199254740992.25L, 9007199254740992LL); - TEST_f_L (llrint, 9007199254740992.5L, 9007199254740992LL); - TEST_f_L (llrint, 9007199254740992.75L, 9007199254740992LL); - TEST_f_L (llrint, 9007199254740993.5L, 9007199254740993LL); - - TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740991LL); - TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740992LL); - TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740993LL); - TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740991LL); - TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740992LL); - TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740993LL); - - TEST_f_L (llrint, -9007199254740991.5L, -9007199254740992LL); - TEST_f_L (llrint, -9007199254740992.25L, -9007199254740993LL); - TEST_f_L (llrint, -9007199254740992.5L, -9007199254740993LL); - TEST_f_L (llrint, -9007199254740992.75L, -9007199254740993LL); - TEST_f_L (llrint, -9007199254740993.5L, -9007199254740994LL); - - TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740992LL); - TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740993LL); - TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740994LL); - TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740992LL); - TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740993LL); - TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740994LL); - - TEST_f_L (llrint, 72057594037927935.5L, 72057594037927935LL); - TEST_f_L (llrint, 72057594037927936.25L, 72057594037927936LL); - TEST_f_L (llrint, 72057594037927936.5L, 72057594037927936LL); - TEST_f_L (llrint, 72057594037927936.75L, 72057594037927936LL); - TEST_f_L (llrint, 72057594037927937.5L, 72057594037927937LL); - - TEST_f_L (llrint, -72057594037927935.5L, -72057594037927936LL); - TEST_f_L (llrint, -72057594037927936.25L, -72057594037927937LL); - TEST_f_L (llrint, -72057594037927936.5L, -72057594037927937LL); - TEST_f_L (llrint, -72057594037927936.75L, -72057594037927937LL); - TEST_f_L (llrint, -72057594037927937.5L, -72057594037927938LL); + /* The input can only be represented in long double. */ + TEST_f_L (llrint, 4503599627370495.5L, 4503599627370496LL), + TEST_f_L (llrint, 4503599627370496.25L, 4503599627370497LL), + TEST_f_L (llrint, 4503599627370496.5L, 4503599627370497LL), + TEST_f_L (llrint, 4503599627370496.75L, 4503599627370497LL), + TEST_f_L (llrint, 4503599627370497.5L, 4503599627370498LL), + + TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370496LL), + TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370497LL), + TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370498LL), + TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370495LL), + TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370496LL), + TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370497LL), + + TEST_f_L (llrint, -4503599627370495.5L, -4503599627370495LL), + TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL), + TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL), + TEST_f_L (llrint, -4503599627370496.75L, -4503599627370496LL), + TEST_f_L (llrint, -4503599627370497.5L, -4503599627370497LL), + + TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL), + TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL), + TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL), + TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370494LL), + TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370495LL), + TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370496LL), + + TEST_f_L (llrint, 9007199254740991.5L, 9007199254740992LL), + TEST_f_L (llrint, 9007199254740992.25L, 9007199254740993LL), + TEST_f_L (llrint, 9007199254740992.5L, 9007199254740993LL), + TEST_f_L (llrint, 9007199254740992.75L, 9007199254740993LL), + TEST_f_L (llrint, 9007199254740993.5L, 9007199254740994LL), + + TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740992LL), + TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740993LL), + TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740994LL), + TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740992LL), + TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740993LL), + TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740994LL), + + TEST_f_L (llrint, -9007199254740991.5L, -9007199254740991LL), + TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL), + TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL), + TEST_f_L (llrint, -9007199254740992.75L, -9007199254740992LL), + TEST_f_L (llrint, -9007199254740993.5L, -9007199254740993LL), + + TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL), + TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL), + TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL), + TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740991LL), + TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740992LL), + TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740993LL), + + TEST_f_L (llrint, 72057594037927935.5L, 72057594037927936LL), + TEST_f_L (llrint, 72057594037927936.25L, 72057594037927937LL), + TEST_f_L (llrint, 72057594037927936.5L, 72057594037927937LL), + TEST_f_L (llrint, 72057594037927936.75L, 72057594037927937LL), + TEST_f_L (llrint, 72057594037927937.5L, 72057594037927938LL), + + TEST_f_L (llrint, -72057594037927935.5L, -72057594037927935LL), + TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL), + TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL), + TEST_f_L (llrint, -72057594037927936.75L, -72057594037927936LL), + TEST_f_L (llrint, -72057594037927937.5L, -72057594037927937LL), # if LDBL_MANT_DIG > 100 - TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775805LL); - TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775806LL); - TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL); - TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL); - TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775806LL); - TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775807LL); - TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775806L); - TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775807LL); - TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775806LL); - TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775807LL); - TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL); - TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL); + TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775806LL), + TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775805LL), + TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL), + TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL), + TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775807LL), + TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL), + TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775807L), + TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL), + TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775807LL), + TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775806LL), + TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL), + TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL), # endif #endif - } - - fesetround (save_round_mode); - - END (llrint_downward); -} + END_DATA (llrint_upward) + }; static void llrint_test_upward (void) { - int save_round_mode; START (llrint_upward); - - save_round_mode = fegetround (); - - if (!fesetround (FE_UPWARD)) - { - TEST_f_L (llrint, 0.0, 0); - TEST_f_L (llrint, minus_zero, 0); - TEST_f_L (llrint, 0.2L, 1); - TEST_f_L (llrint, -0.2L, 0); - - TEST_f_L (llrint, 1.4L, 2); - TEST_f_L (llrint, -1.4L, -1); - - TEST_f_L (llrint, 8388600.3L, 8388601); - TEST_f_L (llrint, -8388600.3L, -8388600); -#ifndef TEST_FLOAT - TEST_f_L (llrint, 1071930.0008, 1071931); -#endif - /* Test boundary conditions. */ - /* 0x1FFFFF */ - TEST_f_L (llrint, 2097151.0,2097151LL); - /* 0x800000 */ - TEST_f_L (llrint, 8388608.0, 8388608LL); - /* 0x1000000 */ - TEST_f_L (llrint, 16777216.0, 16777216LL); - /* 0x20000000000 */ - TEST_f_L (llrint, 2199023255552.0, 2199023255552LL); - /* 0x40000000000 */ - TEST_f_L (llrint, 4398046511104.0, 4398046511104LL); - /* 0x1000000000000 */ - TEST_f_L (llrint, 281474976710656.0, 281474976710656LL); - /* 0x10000000000000 */ - TEST_f_L (llrint, 4503599627370496.0, 4503599627370496LL); - /* 0x10000080000000 */ - TEST_f_L (llrint, 4503601774854144.0, 4503601774854144LL); - /* 0x20000000000000 */ - TEST_f_L (llrint, 9007199254740992.0, 9007199254740992LL); - /* 0x80000000000000 */ - TEST_f_L (llrint, 36028797018963968.0, 36028797018963968LL); - /* 0x100000000000000 */ - TEST_f_L (llrint, 72057594037927936.0, 72057594037927936LL); -#ifdef TEST_LDOUBLE - /* The input can only be represented in long double. */ - TEST_f_L (llrint, 4503599627370495.5L, 4503599627370496LL); - TEST_f_L (llrint, 4503599627370496.25L, 4503599627370497LL); - TEST_f_L (llrint, 4503599627370496.5L, 4503599627370497LL); - TEST_f_L (llrint, 4503599627370496.75L, 4503599627370497LL); - TEST_f_L (llrint, 4503599627370497.5L, 4503599627370498LL); - - TEST_f_L (llrint, 4503599627370495.4999999999999L, 4503599627370496LL); - TEST_f_L (llrint, 4503599627370496.4999999999999L, 4503599627370497LL); - TEST_f_L (llrint, 4503599627370497.4999999999999L, 4503599627370498LL); - TEST_f_L (llrint, 4503599627370494.5000000000001L, 4503599627370495LL); - TEST_f_L (llrint, 4503599627370495.5000000000001L, 4503599627370496LL); - TEST_f_L (llrint, 4503599627370496.5000000000001L, 4503599627370497LL); - - TEST_f_L (llrint, -4503599627370495.5L, -4503599627370495LL); - TEST_f_L (llrint, -4503599627370496.25L, -4503599627370496LL); - TEST_f_L (llrint, -4503599627370496.5L, -4503599627370496LL); - TEST_f_L (llrint, -4503599627370496.75L, -4503599627370496LL); - TEST_f_L (llrint, -4503599627370497.5L, -4503599627370497LL); - - TEST_f_L (llrint, -4503599627370495.4999999999999L, -4503599627370495LL); - TEST_f_L (llrint, -4503599627370496.4999999999999L, -4503599627370496LL); - TEST_f_L (llrint, -4503599627370497.4999999999999L, -4503599627370497LL); - TEST_f_L (llrint, -4503599627370494.5000000000001L, -4503599627370494LL); - TEST_f_L (llrint, -4503599627370495.5000000000001L, -4503599627370495LL); - TEST_f_L (llrint, -4503599627370496.5000000000001L, -4503599627370496LL); - - TEST_f_L (llrint, 9007199254740991.5L, 9007199254740992LL); - TEST_f_L (llrint, 9007199254740992.25L, 9007199254740993LL); - TEST_f_L (llrint, 9007199254740992.5L, 9007199254740993LL); - TEST_f_L (llrint, 9007199254740992.75L, 9007199254740993LL); - TEST_f_L (llrint, 9007199254740993.5L, 9007199254740994LL); - - TEST_f_L (llrint, 9007199254740991.4999999999999L, 9007199254740992LL); - TEST_f_L (llrint, 9007199254740992.4999999999999L, 9007199254740993LL); - TEST_f_L (llrint, 9007199254740993.4999999999999L, 9007199254740994LL); - TEST_f_L (llrint, 9007199254740991.5000000000001L, 9007199254740992LL); - TEST_f_L (llrint, 9007199254740992.5000000000001L, 9007199254740993LL); - TEST_f_L (llrint, 9007199254740993.5000000000001L, 9007199254740994LL); - - TEST_f_L (llrint, -9007199254740991.5L, -9007199254740991LL); - TEST_f_L (llrint, -9007199254740992.25L, -9007199254740992LL); - TEST_f_L (llrint, -9007199254740992.5L, -9007199254740992LL); - TEST_f_L (llrint, -9007199254740992.75L, -9007199254740992LL); - TEST_f_L (llrint, -9007199254740993.5L, -9007199254740993LL); - - TEST_f_L (llrint, -9007199254740991.4999999999999L, -9007199254740991LL); - TEST_f_L (llrint, -9007199254740992.4999999999999L, -9007199254740992LL); - TEST_f_L (llrint, -9007199254740993.4999999999999L, -9007199254740993LL); - TEST_f_L (llrint, -9007199254740991.5000000000001L, -9007199254740991LL); - TEST_f_L (llrint, -9007199254740992.5000000000001L, -9007199254740992LL); - TEST_f_L (llrint, -9007199254740993.5000000000001L, -9007199254740993LL); - - TEST_f_L (llrint, 72057594037927935.5L, 72057594037927936LL); - TEST_f_L (llrint, 72057594037927936.25L, 72057594037927937LL); - TEST_f_L (llrint, 72057594037927936.5L, 72057594037927937LL); - TEST_f_L (llrint, 72057594037927936.75L, 72057594037927937LL); - TEST_f_L (llrint, 72057594037927937.5L, 72057594037927938LL); - - TEST_f_L (llrint, -72057594037927935.5L, -72057594037927935LL); - TEST_f_L (llrint, -72057594037927936.25L, -72057594037927936LL); - TEST_f_L (llrint, -72057594037927936.5L, -72057594037927936LL); - TEST_f_L (llrint, -72057594037927936.75L, -72057594037927936LL); - TEST_f_L (llrint, -72057594037927937.5L, -72057594037927937LL); - -# if LDBL_MANT_DIG > 100 - TEST_f_L (llrint, 9223372036854775805.5L, 9223372036854775806LL); - TEST_f_L (llrint, -9223372036854775805.5L, -9223372036854775805LL); - TEST_f_L (llrint, 9223372036854775806.0L, 9223372036854775806LL); - TEST_f_L (llrint, -9223372036854775806.0L, -9223372036854775806LL); - TEST_f_L (llrint, 9223372036854775806.25L, 9223372036854775807LL); - TEST_f_L (llrint, -9223372036854775806.25L, -9223372036854775806LL); - TEST_f_L (llrint, 9223372036854775806.5L, 9223372036854775807L); - TEST_f_L (llrint, -9223372036854775806.5L, -9223372036854775806LL); - TEST_f_L (llrint, 9223372036854775806.75L, 9223372036854775807LL); - TEST_f_L (llrint, -9223372036854775806.75L, -9223372036854775806LL); - TEST_f_L (llrint, 9223372036854775807.0L, 9223372036854775807LL); - TEST_f_L (llrint, -9223372036854775807.0L, -9223372036854775807LL); -# endif -#endif - } - - fesetround (save_round_mode); - + RUN_TEST_LOOP_f_L (llrint, llrint_upward_test_data, FE_UPWARD); END (llrint_upward); } @@ -11498,175 +11505,179 @@ lround_test (void) } -static void -llround_test (void) -{ - /* TODO: missing +/-Inf as well as qNaN tests. */ - - START (llround); +static const struct test_f_L_data llround_test_data[] = + { + START_DATA (llround), + /* TODO: missing +/-Inf as well as qNaN tests. */ + TEST_f_L (llround, 0, 0), + TEST_f_L (llround, minus_zero, 0), + TEST_f_L (llround, 0.2L, 0.0), + TEST_f_L (llround, -0.2L, 0), + TEST_f_L (llround, 0.5, 1), + TEST_f_L (llround, -0.5, -1), + TEST_f_L (llround, 0.8L, 1), + TEST_f_L (llround, -0.8L, -1), + TEST_f_L (llround, 1.5, 2), + TEST_f_L (llround, -1.5, -2), + TEST_f_L (llround, 22514.5, 22515), + TEST_f_L (llround, -22514.5, -22515), + TEST_f_L (llround, 1071930.0008, 1071930), +#ifndef TEST_FLOAT + TEST_f_L (llround, 2097152.5, 2097153), + TEST_f_L (llround, -2097152.5, -2097153), + TEST_f_L (llround, 34359738368.5, 34359738369ll), + TEST_f_L (llround, -34359738368.5, -34359738369ll), + TEST_f_L (llround, -3.65309740835E17, -365309740835000000LL), +#endif + + /* Test boundary conditions. */ + /* 0x1FFFFF */ + TEST_f_L (llround, 2097151.0, 2097151LL), + /* 0x800000 */ + TEST_f_L (llround, 8388608.0, 8388608LL), + /* 0x1000000 */ + TEST_f_L (llround, 16777216.0, 16777216LL), + /* 0x20000000000 */ + TEST_f_L (llround, 2199023255552.0, 2199023255552LL), + /* 0x40000000000 */ + TEST_f_L (llround, 4398046511104.0, 4398046511104LL), + /* 0x1000000000000 */ + TEST_f_L (llround, 281474976710656.0, 281474976710656LL), + /* 0x10000000000000 */ + TEST_f_L (llround, 4503599627370496.0, 4503599627370496LL), + /* 0x10000080000000 */ + TEST_f_L (llround, 4503601774854144.0, 4503601774854144LL), + /* 0x20000000000000 */ + TEST_f_L (llround, 9007199254740992.0, 9007199254740992LL), + /* 0x80000000000000 */ + TEST_f_L (llround, 36028797018963968.0, 36028797018963968LL), + /* 0x100000000000000 */ + TEST_f_L (llround, 72057594037927936.0, 72057594037927936LL), + +#ifndef TEST_FLOAT + /* 0x100000000 */ + TEST_f_L (llround, 4294967295.5, 4294967296LL), + /* 0x200000000 */ + TEST_f_L (llround, 8589934591.5, 8589934592LL), - TEST_f_L (llround, 0, 0); - TEST_f_L (llround, minus_zero, 0); - TEST_f_L (llround, 0.2L, 0.0); - TEST_f_L (llround, -0.2L, 0); - TEST_f_L (llround, 0.5, 1); - TEST_f_L (llround, -0.5, -1); - TEST_f_L (llround, 0.8L, 1); - TEST_f_L (llround, -0.8L, -1); - TEST_f_L (llround, 1.5, 2); - TEST_f_L (llround, -1.5, -2); - TEST_f_L (llround, 22514.5, 22515); - TEST_f_L (llround, -22514.5, -22515); - TEST_f_L (llround, 1071930.0008, 1071930); -#ifndef TEST_FLOAT - TEST_f_L (llround, 2097152.5, 2097153); - TEST_f_L (llround, -2097152.5, -2097153); - TEST_f_L (llround, 34359738368.5, 34359738369ll); - TEST_f_L (llround, -34359738368.5, -34359738369ll); - TEST_f_L (llround, -3.65309740835E17, -365309740835000000LL); -#endif - - /* Test boundary conditions. */ - /* 0x1FFFFF */ - TEST_f_L (llround, 2097151.0, 2097151LL); - /* 0x800000 */ - TEST_f_L (llround, 8388608.0, 8388608LL); - /* 0x1000000 */ - TEST_f_L (llround, 16777216.0, 16777216LL); - /* 0x20000000000 */ - TEST_f_L (llround, 2199023255552.0, 2199023255552LL); - /* 0x40000000000 */ - TEST_f_L (llround, 4398046511104.0, 4398046511104LL); - /* 0x1000000000000 */ - TEST_f_L (llround, 281474976710656.0, 281474976710656LL); - /* 0x10000000000000 */ - TEST_f_L (llround, 4503599627370496.0, 4503599627370496LL); - /* 0x10000080000000 */ - TEST_f_L (llround, 4503601774854144.0, 4503601774854144LL); - /* 0x20000000000000 */ - TEST_f_L (llround, 9007199254740992.0, 9007199254740992LL); - /* 0x80000000000000 */ - TEST_f_L (llround, 36028797018963968.0, 36028797018963968LL); - /* 0x100000000000000 */ - TEST_f_L (llround, 72057594037927936.0, 72057594037927936LL); - -#ifndef TEST_FLOAT - /* 0x100000000 */ - TEST_f_L (llround, 4294967295.5, 4294967296LL); - /* 0x200000000 */ - TEST_f_L (llround, 8589934591.5, 8589934592LL); - - /* nextafter(0.5,-1) */ - TEST_f_L (llround, 0x1.fffffffffffffp-2, 0); - /* nextafter(-0.5,1) */ - TEST_f_L (llround, -0x1.fffffffffffffp-2, 0); - /* On PowerPC an exponent of '52' is the largest incrementally - * representable sequence of whole-numbers in the 'double' range. We test - * lround to make sure that a guard bit set during the lround operation - * hasn't forced an erroneous shift giving us an incorrect result. The odd - * numbers between +-(2^52+1 and 2^53-1) are affected since they have the - * rightmost bit set. */ - /* +-(2^52+1) */ - TEST_f_L (llround, 0x1.0000000000001p+52,4503599627370497LL); - TEST_f_L (llround, -0x1.0000000000001p+52,-4503599627370497LL); - /* +-(2^53-1): Input is the last (positive and negative) incrementally - * representable whole-number in the 'double' range that might round - * erroneously. */ - TEST_f_L (llround, 0x1.fffffffffffffp+52, 9007199254740991LL); - TEST_f_L (llround, -0x1.fffffffffffffp+52, -9007199254740991LL); + /* nextafter(0.5,-1) */ + TEST_f_L (llround, 0x1.fffffffffffffp-2, 0), + /* nextafter(-0.5,1) */ + TEST_f_L (llround, -0x1.fffffffffffffp-2, 0), + /* On PowerPC an exponent of '52' is the largest incrementally + * representable sequence of whole-numbers in the 'double' range. We test + * lround to make sure that a guard bit set during the lround operation + * hasn't forced an erroneous shift giving us an incorrect result. The odd + * numbers between +-(2^52+1 and 2^53-1) are affected since they have the + * rightmost bit set. */ + /* +-(2^52+1) */ + TEST_f_L (llround, 0x1.0000000000001p+52,4503599627370497LL), + TEST_f_L (llround, -0x1.0000000000001p+52,-4503599627370497LL), + /* +-(2^53-1): Input is the last (positive and negative) incrementally + * representable whole-number in the 'double' range that might round + * erroneously. */ + TEST_f_L (llround, 0x1.fffffffffffffp+52, 9007199254740991LL), + TEST_f_L (llround, -0x1.fffffffffffffp+52, -9007199254740991LL), #else - /* nextafter(0.5,-1) */ - TEST_f_L (llround, 0x1.fffffep-2, 0); - /* nextafter(-0.5,1) */ - TEST_f_L (llround, -0x1.fffffep-2, 0); - /* As above, on PowerPC an exponent of '23' is the largest incrementally - * representable sequence of whole-numbers in the 'float' range. - * Likewise, numbers between +-(2^23+1 and 2^24-1) are affected. */ - TEST_f_L (llround, 0x1.000002p+23,8388609); - TEST_f_L (llround, -0x1.000002p+23,-8388609); - TEST_f_L (llround, 0x1.fffffep+23, 16777215); - TEST_f_L (llround, -0x1.fffffep+23, -16777215); + /* nextafter(0.5,-1) */ + TEST_f_L (llround, 0x1.fffffep-2, 0), + /* nextafter(-0.5,1) */ + TEST_f_L (llround, -0x1.fffffep-2, 0), + /* As above, on PowerPC an exponent of '23' is the largest incrementally + * representable sequence of whole-numbers in the 'float' range. + * Likewise, numbers between +-(2^23+1 and 2^24-1) are affected. */ + TEST_f_L (llround, 0x1.000002p+23,8388609), + TEST_f_L (llround, -0x1.000002p+23,-8388609), + TEST_f_L (llround, 0x1.fffffep+23, 16777215), + TEST_f_L (llround, -0x1.fffffep+23, -16777215), #endif #ifdef TEST_LDOUBLE - /* The input can only be represented in long double. */ - TEST_f_L (llround, 4503599627370495.5L, 4503599627370496LL); - TEST_f_L (llround, 4503599627370496.25L, 4503599627370496LL); - TEST_f_L (llround, 4503599627370496.5L, 4503599627370497LL); - TEST_f_L (llround, 4503599627370496.75L, 4503599627370497LL); - TEST_f_L (llround, 4503599627370497.5L, 4503599627370498LL); + /* The input can only be represented in long double. */ + TEST_f_L (llround, 4503599627370495.5L, 4503599627370496LL), + TEST_f_L (llround, 4503599627370496.25L, 4503599627370496LL), + TEST_f_L (llround, 4503599627370496.5L, 4503599627370497LL), + TEST_f_L (llround, 4503599627370496.75L, 4503599627370497LL), + TEST_f_L (llround, 4503599627370497.5L, 4503599627370498LL), # if LDBL_MANT_DIG > 100 - TEST_f_L (llround, 4503599627370495.4999999999999L, 4503599627370495LL); - TEST_f_L (llround, 4503599627370496.4999999999999L, 4503599627370496LL); - TEST_f_L (llround, 4503599627370497.4999999999999L, 4503599627370497LL); - TEST_f_L (llround, 4503599627370494.5000000000001L, 4503599627370495LL); - TEST_f_L (llround, 4503599627370495.5000000000001L, 4503599627370496LL); - TEST_f_L (llround, 4503599627370496.5000000000001L, 4503599627370497LL); - - TEST_f_L (llround, -4503599627370495.4999999999999L, -4503599627370495LL); - TEST_f_L (llround, -4503599627370496.4999999999999L, -4503599627370496LL); - TEST_f_L (llround, -4503599627370497.4999999999999L, -4503599627370497LL); - TEST_f_L (llround, -4503599627370494.5000000000001L, -4503599627370495LL); - TEST_f_L (llround, -4503599627370495.5000000000001L, -4503599627370496LL); - TEST_f_L (llround, -4503599627370496.5000000000001L, -4503599627370497LL); + TEST_f_L (llround, 4503599627370495.4999999999999L, 4503599627370495LL), + TEST_f_L (llround, 4503599627370496.4999999999999L, 4503599627370496LL), + TEST_f_L (llround, 4503599627370497.4999999999999L, 4503599627370497LL), + TEST_f_L (llround, 4503599627370494.5000000000001L, 4503599627370495LL), + TEST_f_L (llround, 4503599627370495.5000000000001L, 4503599627370496LL), + TEST_f_L (llround, 4503599627370496.5000000000001L, 4503599627370497LL), + + TEST_f_L (llround, -4503599627370495.4999999999999L, -4503599627370495LL), + TEST_f_L (llround, -4503599627370496.4999999999999L, -4503599627370496LL), + TEST_f_L (llround, -4503599627370497.4999999999999L, -4503599627370497LL), + TEST_f_L (llround, -4503599627370494.5000000000001L, -4503599627370495LL), + TEST_f_L (llround, -4503599627370495.5000000000001L, -4503599627370496LL), + TEST_f_L (llround, -4503599627370496.5000000000001L, -4503599627370497LL), # endif - TEST_f_L (llround, -4503599627370495.5L, -4503599627370496LL); - TEST_f_L (llround, -4503599627370496.25L, -4503599627370496LL); - TEST_f_L (llround, -4503599627370496.5L, -4503599627370497LL); - TEST_f_L (llround, -4503599627370496.75L, -4503599627370497LL); - TEST_f_L (llround, -4503599627370497.5L, -4503599627370498LL); + TEST_f_L (llround, -4503599627370495.5L, -4503599627370496LL), + TEST_f_L (llround, -4503599627370496.25L, -4503599627370496LL), + TEST_f_L (llround, -4503599627370496.5L, -4503599627370497LL), + TEST_f_L (llround, -4503599627370496.75L, -4503599627370497LL), + TEST_f_L (llround, -4503599627370497.5L, -4503599627370498LL), - TEST_f_L (llround, 9007199254740991.5L, 9007199254740992LL); - TEST_f_L (llround, 9007199254740992.25L, 9007199254740992LL); - TEST_f_L (llround, 9007199254740992.5L, 9007199254740993LL); - TEST_f_L (llround, 9007199254740992.75L, 9007199254740993LL); - TEST_f_L (llround, 9007199254740993.5L, 9007199254740994LL); + TEST_f_L (llround, 9007199254740991.5L, 9007199254740992LL), + TEST_f_L (llround, 9007199254740992.25L, 9007199254740992LL), + TEST_f_L (llround, 9007199254740992.5L, 9007199254740993LL), + TEST_f_L (llround, 9007199254740992.75L, 9007199254740993LL), + TEST_f_L (llround, 9007199254740993.5L, 9007199254740994LL), # if LDBL_MANT_DIG > 100 - TEST_f_L (llround, 9007199254740991.4999999999999L, 9007199254740991LL); - TEST_f_L (llround, 9007199254740992.4999999999999L, 9007199254740992LL); - TEST_f_L (llround, 9007199254740993.4999999999999L, 9007199254740993LL); - TEST_f_L (llround, 9007199254740991.5000000000001L, 9007199254740992LL); - TEST_f_L (llround, 9007199254740992.5000000000001L, 9007199254740993LL); - TEST_f_L (llround, 9007199254740993.5000000000001L, 9007199254740994LL); - - TEST_f_L (llround, -9007199254740991.4999999999999L, -9007199254740991LL); - TEST_f_L (llround, -9007199254740992.4999999999999L, -9007199254740992LL); - TEST_f_L (llround, -9007199254740993.4999999999999L, -9007199254740993LL); - TEST_f_L (llround, -9007199254740991.5000000000001L, -9007199254740992LL); - TEST_f_L (llround, -9007199254740992.5000000000001L, -9007199254740993LL); - TEST_f_L (llround, -9007199254740993.5000000000001L, -9007199254740994LL); + TEST_f_L (llround, 9007199254740991.4999999999999L, 9007199254740991LL), + TEST_f_L (llround, 9007199254740992.4999999999999L, 9007199254740992LL), + TEST_f_L (llround, 9007199254740993.4999999999999L, 9007199254740993LL), + TEST_f_L (llround, 9007199254740991.5000000000001L, 9007199254740992LL), + TEST_f_L (llround, 9007199254740992.5000000000001L, 9007199254740993LL), + TEST_f_L (llround, 9007199254740993.5000000000001L, 9007199254740994LL), + + TEST_f_L (llround, -9007199254740991.4999999999999L, -9007199254740991LL), + TEST_f_L (llround, -9007199254740992.4999999999999L, -9007199254740992LL), + TEST_f_L (llround, -9007199254740993.4999999999999L, -9007199254740993LL), + TEST_f_L (llround, -9007199254740991.5000000000001L, -9007199254740992LL), + TEST_f_L (llround, -9007199254740992.5000000000001L, -9007199254740993LL), + TEST_f_L (llround, -9007199254740993.5000000000001L, -9007199254740994LL), # endif - TEST_f_L (llround, -9007199254740991.5L, -9007199254740992LL); - TEST_f_L (llround, -9007199254740992.25L, -9007199254740992LL); - TEST_f_L (llround, -9007199254740992.5L, -9007199254740993LL); - TEST_f_L (llround, -9007199254740992.75L, -9007199254740993LL); - TEST_f_L (llround, -9007199254740993.5L, -9007199254740994LL); + TEST_f_L (llround, -9007199254740991.5L, -9007199254740992LL), + TEST_f_L (llround, -9007199254740992.25L, -9007199254740992LL), + TEST_f_L (llround, -9007199254740992.5L, -9007199254740993LL), + TEST_f_L (llround, -9007199254740992.75L, -9007199254740993LL), + TEST_f_L (llround, -9007199254740993.5L, -9007199254740994LL), - TEST_f_L (llround, 72057594037927935.5L, 72057594037927936LL); - TEST_f_L (llround, 72057594037927936.25L, 72057594037927936LL); - TEST_f_L (llround, 72057594037927936.5L, 72057594037927937LL); - TEST_f_L (llround, 72057594037927936.75L, 72057594037927937LL); - TEST_f_L (llround, 72057594037927937.5L, 72057594037927938LL); + TEST_f_L (llround, 72057594037927935.5L, 72057594037927936LL), + TEST_f_L (llround, 72057594037927936.25L, 72057594037927936LL), + TEST_f_L (llround, 72057594037927936.5L, 72057594037927937LL), + TEST_f_L (llround, 72057594037927936.75L, 72057594037927937LL), + TEST_f_L (llround, 72057594037927937.5L, 72057594037927938LL), - TEST_f_L (llround, -72057594037927935.5L, -72057594037927936LL); - TEST_f_L (llround, -72057594037927936.25L, -72057594037927936LL); - TEST_f_L (llround, -72057594037927936.5L, -72057594037927937LL); - TEST_f_L (llround, -72057594037927936.75L, -72057594037927937LL); - TEST_f_L (llround, -72057594037927937.5L, -72057594037927938LL); + TEST_f_L (llround, -72057594037927935.5L, -72057594037927936LL), + TEST_f_L (llround, -72057594037927936.25L, -72057594037927936LL), + TEST_f_L (llround, -72057594037927936.5L, -72057594037927937LL), + TEST_f_L (llround, -72057594037927936.75L, -72057594037927937LL), + TEST_f_L (llround, -72057594037927937.5L, -72057594037927938LL), - TEST_f_L (llround, 9223372036854775806.25L, 9223372036854775806LL); - TEST_f_L (llround, -9223372036854775806.25L, -9223372036854775806LL); - TEST_f_L (llround, 9223372036854775806.5L, 9223372036854775807LL); - TEST_f_L (llround, -9223372036854775806.5L, -9223372036854775807LL); - TEST_f_L (llround, 9223372036854775807.0L, 9223372036854775807LL); - TEST_f_L (llround, -9223372036854775807.0L, -9223372036854775807LL); + TEST_f_L (llround, 9223372036854775806.25L, 9223372036854775806LL), + TEST_f_L (llround, -9223372036854775806.25L, -9223372036854775806LL), + TEST_f_L (llround, 9223372036854775806.5L, 9223372036854775807LL), + TEST_f_L (llround, -9223372036854775806.5L, -9223372036854775807LL), + TEST_f_L (llround, 9223372036854775807.0L, 9223372036854775807LL), + TEST_f_L (llround, -9223372036854775807.0L, -9223372036854775807LL), #endif + END_DATA (llround) + }; +static void +llround_test (void) +{ + START (llround); + RUN_TEST_LOOP_f_L (llround, llround_test_data, ); END (llround); } |