Convert TEST_f_L tests from code to data
Andreas Jaeger
aj@suse.com
Thu May 16 07:22:00 GMT 2013
On 05/15/2013 10:17 PM, Joseph S. Myers wrote:
> This patch converts the TEST_f_L tests in libm-test.inc from code to
> data. Tested x86_64 and x86.
>
> 2013-05-15 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.
>
> diff --git a/math/libm-test.inc b/math/libm-test.inc
> index 0843482..10378de 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. */
Is the above comment really reflecting current state? Could you update
as appropriate, please?
The rest is fine,
Andreas
--
Andreas Jaeger aj@{suse.com,opensuse.org} Twitter/Identica: jaegerandi
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn,Jennifer Guild,Felix Imendörffer,HRB16746 (AG Nürnberg)
GPG fingerprint = 93A3 365E CE47 B889 DF7F FED1 389A 563C C272 A126
More information about the Libc-alpha
mailing list