From ef1bb3618c77f92a5ab1a98f907e5bb5149dc3dc Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Mon, 8 Oct 2012 22:22:23 +0000 Subject: Improve libm test coverage of classification macros / functions. --- math/libm-test.inc | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 57 insertions(+), 4 deletions(-) (limited to 'math/libm-test.inc') diff --git a/math/libm-test.inc b/math/libm-test.inc index 6cc0407d57..2562bb124a 100644 --- a/math/libm-test.inc +++ b/math/libm-test.inc @@ -40,9 +40,9 @@ /* This testsuite has currently tests for: acos, acosh, asin, asinh, atan, atan2, atanh, cbrt, ceil, copysign, cos, cosh, erf, erfc, exp, exp10, exp2, expm1, - fabs, fdim, floor, fma, fmax, fmin, fmod, fpclassify, + fabs, fdim, finite, floor, fma, fmax, fmin, fmod, fpclassify, frexp, gamma, hypot, - ilogb, isfinite, isnormal, + ilogb, isfinite, isinf, isnan, isnormal, j0, j1, jn, ldexp, lgamma, log, log10, log1p, log2, logb, modf, nearbyint, nextafter, nexttoward, @@ -58,8 +58,6 @@ At the moment the following functions and macros aren't tested: drem (alias for remainder), - finite (functions equivalent to isfinite macro), - isinf, isnan, isless, islessequal, isgreater, isgreaterequal, islessgreater, isunordered, lgamma_r, nan, @@ -4413,6 +4411,23 @@ fdim_test (void) } +static void +finite_test (void) +{ + START (finite); + + TEST_f_b (finite, 0, 1); + TEST_f_b (finite, minus_zero, 1); + TEST_f_b (finite, 10, 1); + TEST_f_b (finite, min_subnorm_value, 1); + TEST_f_b (finite, plus_infty, 0); + TEST_f_b (finite, minus_infty, 0); + TEST_f_b (finite, nan_value, 0); + + END (finite); +} + + static void floor_test (void) { @@ -4964,6 +4979,7 @@ fpclassify_test (void) TEST_f_i (fpclassify, plus_zero, FP_ZERO); TEST_f_i (fpclassify, minus_zero, FP_ZERO); TEST_f_i (fpclassify, 1000, FP_NORMAL); + TEST_f_i (fpclassify, min_subnorm_value, FP_SUBNORMAL); END (fpclassify); } @@ -5113,6 +5129,7 @@ isfinite_test (void) TEST_f_b (isfinite, 0, 1); TEST_f_b (isfinite, minus_zero, 1); TEST_f_b (isfinite, 10, 1); + TEST_f_b (isfinite, min_subnorm_value, 1); TEST_f_b (isfinite, plus_infty, 0); TEST_f_b (isfinite, minus_infty, 0); TEST_f_b (isfinite, nan_value, 0); @@ -5120,6 +5137,38 @@ isfinite_test (void) END (isfinite); } +static void +isinf_test (void) +{ + START (isinf); + + TEST_f_b (isinf, 0, 0); + TEST_f_b (isinf, minus_zero, 0); + TEST_f_b (isinf, 10, 0); + TEST_f_b (isinf, min_subnorm_value, 0); + TEST_f_b (isinf, plus_infty, 1); + TEST_f_b (isinf, minus_infty, 1); + TEST_f_b (isinf, nan_value, 0); + + END (isinf); +} + +static void +isnan_test (void) +{ + START (isnan); + + TEST_f_b (isnan, 0, 0); + TEST_f_b (isnan, minus_zero, 0); + TEST_f_b (isnan, 10, 0); + TEST_f_b (isnan, min_subnorm_value, 0); + TEST_f_b (isnan, plus_infty, 0); + TEST_f_b (isnan, minus_infty, 0); + TEST_f_b (isnan, nan_value, 1); + + END (isnan); +} + static void isnormal_test (void) { @@ -5128,6 +5177,7 @@ isnormal_test (void) TEST_f_b (isnormal, 0, 0); TEST_f_b (isnormal, minus_zero, 0); TEST_f_b (isnormal, 10, 1); + TEST_f_b (isnormal, min_subnorm_value, 0); TEST_f_b (isnormal, plus_infty, 0); TEST_f_b (isnormal, minus_infty, 0); TEST_f_b (isnormal, nan_value, 0); @@ -9627,8 +9677,11 @@ main (int argc, char **argv) /* Keep the tests a wee bit ordered (according to ISO C99). */ /* Classification macros: */ + finite_test (); fpclassify_test (); isfinite_test (); + isinf_test (); + isnan_test (); isnormal_test (); signbit_test (); -- cgit 1.4.1