aboutsummaryrefslogtreecommitdiff
path: root/math/libm-test.inc
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2013-05-08 12:02:22 +0000
committerJoseph Myers <joseph@codesourcery.com>2013-05-08 12:02:22 +0000
commitf44bf14a9cfa171fcf88ecf87ae78ff95b2f24d2 (patch)
tree9252feae1ac945eec35b92e84b10dad032330bad /math/libm-test.inc
parentd8cd06db62d92f86cc8cc3c0d6a489bd207bb834 (diff)
downloadglibc-f44bf14a9cfa171fcf88ecf87ae78ff95b2f24d2.tar.xz
glibc-f44bf14a9cfa171fcf88ecf87ae78ff95b2f24d2.zip
Move some libm-test logic for running tests from gen-libm-test.pl to libm-test.inc.
Diffstat (limited to 'math/libm-test.inc')
-rw-r--r--math/libm-test.inc133
1 files changed, 133 insertions, 0 deletions
diff --git a/math/libm-test.inc b/math/libm-test.inc
index d2c5046637..19bbc3f694 100644
--- a/math/libm-test.inc
+++ b/math/libm-test.inc
@@ -855,6 +855,139 @@ check_longlong (const char *test_name, long long int computed,
errno = 0;
}
+/* Run an individual test, including any required setup and checking
+ of results. */
+#define RUN_TEST_f_f(TEST_NAME, FUNC_NAME, ARG, EXPECTED, \
+ MAX_ULP, EXCEPTIONS) \
+ check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED, \
+ MAX_ULP, EXCEPTIONS)
+#define RUN_TEST_2_f(TEST_NAME, FUNC_NAME, ARG1, ARG2, EXPECTED, \
+ MAX_ULP, EXCEPTIONS) \
+ check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG1, ARG2), EXPECTED, \
+ MAX_ULP, EXCEPTIONS)
+#define RUN_TEST_ff_f RUN_TEST_2_f
+#define RUN_TEST_fi_f RUN_TEST_2_f
+#define RUN_TEST_fl_f RUN_TEST_2_f
+#define RUN_TEST_fff_f(TEST_NAME, FUNC_NAME, ARG1, ARG2, ARG3, \
+ EXPECTED, MAX_ULP, EXCEPTIONS) \
+ check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG1, ARG2, ARG3), \
+ EXPECTED, MAX_ULP, EXCEPTIONS)
+#define RUN_TEST_c_f(TEST_NAME, FUNC_NAME, ARG1, ARG2, EXPECTED, \
+ MAX_ULP, EXCEPTIONS) \
+ check_float (TEST_NAME, \
+ FUNC (FUNC_NAME) (BUILD_COMPLEX (ARG1, ARG2)), \
+ EXPECTED, MAX_ULP, EXCEPTIONS)
+#define RUN_TEST_f_f1(TEST_NAME, FUNC_NAME, ARG, EXPECTED, \
+ MAX_ULP, EXCEPTIONS, \
+ EXTRA_NAME, EXTRA_VAR, EXTRA_INIT, EXTRA_TEST, \
+ EXTRA_EXPECTED, EXTRA_ULP) \
+ do \
+ { \
+ (EXTRA_VAR) = (EXTRA_INIT); \
+ check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED, \
+ MAX_ULP, EXCEPTIONS); \
+ if (EXTRA_TEST) \
+ check_int (EXTRA_NAME, EXTRA_VAR, EXTRA_EXPECTED, \
+ EXTRA_ULP, 0); \
+ } \
+ while (0)
+#define RUN_TEST_fF_f1(TEST_NAME, FUNC_NAME, ARG, EXPECTED, \
+ MAX_ULP, EXCEPTIONS, \
+ EXTRA_NAME, EXTRA_VAR, EXTRA_INIT, EXTRA_TEST, \
+ EXTRA_EXPECTED, EXTRA_ULP) \
+ do \
+ { \
+ (EXTRA_VAR) = (EXTRA_INIT); \
+ check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG, &(EXTRA_VAR)), \
+ EXPECTED, MAX_ULP, EXCEPTIONS); \
+ if (EXTRA_TEST) \
+ check_float (EXTRA_NAME, EXTRA_VAR, EXTRA_EXPECTED, \
+ EXTRA_ULP, 0); \
+ } \
+ while (0)
+#define RUN_TEST_fI_f1(TEST_NAME, FUNC_NAME, ARG, EXPECTED, \
+ MAX_ULP, EXCEPTIONS, \
+ EXTRA_NAME, EXTRA_VAR, EXTRA_INIT, EXTRA_TEST, \
+ EXTRA_EXPECTED, EXTRA_ULP) \
+ do \
+ { \
+ (EXTRA_VAR) = (EXTRA_INIT); \
+ check_float (TEST_NAME, FUNC (FUNC_NAME) (ARG, &(EXTRA_VAR)), \
+ EXPECTED, MAX_ULP, EXCEPTIONS); \
+ if (EXTRA_TEST) \
+ check_int (EXTRA_NAME, EXTRA_VAR, EXTRA_EXPECTED, \
+ EXTRA_ULP, 0); \
+ } \
+ while (0)
+#define RUN_TEST_ffI_f1(TEST_NAME, FUNC_NAME, ARG1, ARG2, EXPECTED, \
+ MAX_ULP, EXCEPTIONS, \
+ EXTRA_NAME, EXTRA_VAR, EXTRA_INIT, EXTRA_TEST, \
+ EXTRA_EXPECTED, EXTRA_ULP) \
+ do \
+ { \
+ (EXTRA_VAR) = (EXTRA_INIT); \
+ check_float (TEST_NAME, \
+ FUNC (FUNC_NAME) (ARG1, ARG2, &(EXTRA_VAR)), \
+ EXPECTED, MAX_ULP, EXCEPTIONS); \
+ if (EXTRA_TEST) \
+ check_int (EXTRA_NAME, EXTRA_VAR, EXTRA_EXPECTED, \
+ EXTRA_ULP, 0); \
+ } \
+ while (0)
+#define RUN_TEST_c_c(TEST_NAME, FUNC_NAME, ARGR, ARGC, EXPR, EXPC, \
+ MAX_ULP, EXCEPTIONS) \
+ check_complex (TEST_NAME, \
+ FUNC (FUNC_NAME) (BUILD_COMPLEX (ARGR, ARGC)), \
+ BUILD_COMPLEX (EXPR, EXPC), \
+ MAX_ULP, EXCEPTIONS)
+#define RUN_TEST_cc_c(TEST_NAME, FUNC_NAME, ARG1R, ARG1C, ARG2R, ARG2C, \
+ EXPR, EXPC, MAX_ULP, EXCEPTIONS) \
+ check_complex (TEST_NAME, \
+ FUNC (FUNC_NAME) (BUILD_COMPLEX (ARG1R, ARG1C), \
+ BUILD_COMPLEX (ARG2R, ARG2C)), \
+ BUILD_COMPLEX (EXPR, EXPC), \
+ MAX_ULP, EXCEPTIONS)
+#define RUN_TEST_f_i(TEST_NAME, FUNC_NAME, ARG, EXPECTED, \
+ MAX_ULP, EXCEPTIONS) \
+ check_int (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED, \
+ MAX_ULP, EXCEPTIONS)
+#define RUN_TEST_f_i_tg(TEST_NAME, FUNC_NAME, ARG, EXPECTED, \
+ MAX_ULP, EXCEPTIONS) \
+ check_int (TEST_NAME, FUNC_NAME (ARG), EXPECTED, \
+ MAX_ULP, EXCEPTIONS)
+#define RUN_TEST_ff_i_tg(TEST_NAME, FUNC_NAME, ARG1, ARG2, EXPECTED, \
+ MAX_ULP, EXCEPTIONS) \
+ check_int (TEST_NAME, FUNC_NAME (ARG1, ARG2), EXPECTED, \
+ MAX_ULP, EXCEPTIONS)
+#define RUN_TEST_f_b(TEST_NAME, FUNC_NAME, ARG, EXPECTED, \
+ MAX_ULP, EXCEPTIONS) \
+ check_bool (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED, \
+ MAX_ULP, EXCEPTIONS)
+#define RUN_TEST_f_b_tg(TEST_NAME, FUNC_NAME, ARG, EXPECTED, \
+ MAX_ULP, EXCEPTIONS) \
+ check_bool (TEST_NAME, FUNC_NAME (ARG), EXPECTED, \
+ MAX_ULP, EXCEPTIONS)
+#define RUN_TEST_f_l(TEST_NAME, FUNC_NAME, ARG, EXPECTED, \
+ MAX_ULP, EXCEPTIONS) \
+ check_long (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED, \
+ MAX_ULP, EXCEPTIONS)
+#define RUN_TEST_f_L(TEST_NAME, FUNC_NAME, ARG, EXPECTED, \
+ MAX_ULP, EXCEPTIONS) \
+ check_longlong (TEST_NAME, FUNC (FUNC_NAME) (ARG), EXPECTED, \
+ MAX_ULP, EXCEPTIONS)
+#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) \
+ do \
+ { \
+ FUNC (sincos) (ARG, &(SIN_RES_VAR), &(COS_RES_VAR)); \
+ check_float (TEST_NAME_SIN, SIN_RES_VAR, \
+ EXPECTED_SIN, MAX_ULP_SIN, EXCEPTIONS); \
+ check_float (TEST_NAME_COS, COS_RES_VAR, \
+ EXPECTED_COS, MAX_ULP_COS, 0); \
+ } \
+ while (0)
+
/* This is to prevent messages from the SVID libm emulation. */