# HG changeset patch # User Bruno Haible # Date 1330783147 -3600 # Node ID f56ad1ce5e9e9a1387ef54810651cac37f0c6599 # Parent b576f9917ed19d9e59d41255770ccd4c3444329b ldexp* tests: More tests. * tests/test-ldexp.h (test_function): Add some pseudo-randomized tests. * tests/test-ldexp.c (RANDOM): New macro. * tests/test-ldexpf.c (RANDOM): New macro. * tests/test-ldexpl.c (RANDOM): New macro. * modules/ldexp-tests (Files): Add tests/randomd.c. (Makefile.am): Add randomd.c to test_ldexp_SOURCES. * modules/ldexpf-tests (Files): Add tests/randomf.c. (Makefile.am): Add randomf.c to test_ldexpf_SOURCES. * modules/ldexpl-tests (Files): Add tests/randoml.c. (Makefile.am): Add randoml.c to test_ldexpl_SOURCES. diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2012-03-03 Bruno Haible + + ldexp* tests: More tests. + * tests/test-ldexp.h (test_function): Add some pseudo-randomized tests. + * tests/test-ldexp.c (RANDOM): New macro. + * tests/test-ldexpf.c (RANDOM): New macro. + * tests/test-ldexpl.c (RANDOM): New macro. + * modules/ldexp-tests (Files): Add tests/randomd.c. + (Makefile.am): Add randomd.c to test_ldexp_SOURCES. + * modules/ldexpf-tests (Files): Add tests/randomf.c. + (Makefile.am): Add randomf.c to test_ldexpf_SOURCES. + * modules/ldexpl-tests (Files): Add tests/randoml.c. + (Makefile.am): Add randoml.c to test_ldexpl_SOURCES. + 2012-03-03 Bruno Haible frexp* tests: More tests. diff --git a/modules/ldexp-tests b/modules/ldexp-tests --- a/modules/ldexp-tests +++ b/modules/ldexp-tests @@ -6,6 +6,7 @@ tests/nan.h tests/signature.h tests/macros.h +tests/randomd.c Depends-on: isnand-nolibm @@ -17,4 +18,5 @@ Makefile.am: TESTS += test-ldexp check_PROGRAMS += test-ldexp +test_ldexp_SOURCES = test-ldexp.c randomd.c test_ldexp_LDADD = $(LDADD) @LDEXP_LIBM@ diff --git a/modules/ldexpf-tests b/modules/ldexpf-tests --- a/modules/ldexpf-tests +++ b/modules/ldexpf-tests @@ -6,6 +6,7 @@ tests/nan.h tests/signature.h tests/macros.h +tests/randomf.c Depends-on: isnanf-nolibm @@ -17,4 +18,5 @@ Makefile.am: TESTS += test-ldexpf check_PROGRAMS += test-ldexpf +test_ldexpf_SOURCES = test-ldexpf.c randomf.c test_ldexpf_LDADD = $(LDADD) @LDEXPF_LIBM@ diff --git a/modules/ldexpl-tests b/modules/ldexpl-tests --- a/modules/ldexpl-tests +++ b/modules/ldexpl-tests @@ -6,6 +6,7 @@ tests/nan.h tests/signature.h tests/macros.h +tests/randoml.c Depends-on: fpucw @@ -18,4 +19,5 @@ Makefile.am: TESTS += test-ldexpl check_PROGRAMS += test-ldexpl +test_ldexpl_SOURCES = test-ldexpl.c randoml.c test_ldexpl_LDADD = $(LDADD) @LDEXPL_LIBM@ diff --git a/tests/test-ldexp.c b/tests/test-ldexp.c --- a/tests/test-ldexp.c +++ b/tests/test-ldexp.c @@ -40,9 +40,10 @@ #define NAN NaNd () #define L_(literal) literal #define MINUS_ZERO minus_zerod -#define LDEXP ldexp #define MIN_EXP DBL_MIN_EXP #define MAX_EXP DBL_MAX_EXP +#define LDEXP ldexp +#define RANDOM randomd #include "test-ldexp.h" int diff --git a/tests/test-ldexp.h b/tests/test-ldexp.h --- a/tests/test-ldexp.h +++ b/tests/test-ldexp.h @@ -114,4 +114,17 @@ y = LDEXP (x, 0); ASSERT (y == x); y = LDEXP (x, 5); ASSERT (y == x * L_(32.0)); } + + /* Randomized tests. */ + for (i = 0; i < SIZEOF (RANDOM); i++) + { + int u, v; + + x = L_(20.0) * RANDOM[i] - L_(10.0); /* -10.0 <= x <= 10.0 */ + /* LDEXP only does rounding when it returns a denormalized number + or there is underflow. It doesn't happen here. */ + for (u = -10; u <= 10; u++) + for (v = -10; v <= 10; v++) + ASSERT (LDEXP (x, u + v) == LDEXP (LDEXP (x, u), v)); + } } diff --git a/tests/test-ldexpf.c b/tests/test-ldexpf.c --- a/tests/test-ldexpf.c +++ b/tests/test-ldexpf.c @@ -40,9 +40,10 @@ #define NAN NaNf () #define L_(literal) literal##f #define MINUS_ZERO minus_zerof -#define LDEXP ldexpf #define MIN_EXP FLT_MIN_EXP #define MAX_EXP FLT_MAX_EXP +#define LDEXP ldexpf +#define RANDOM randomf #include "test-ldexp.h" int diff --git a/tests/test-ldexpl.c b/tests/test-ldexpl.c --- a/tests/test-ldexpl.c +++ b/tests/test-ldexpl.c @@ -41,9 +41,10 @@ #define NAN NaNl () #define L_(literal) literal##L #define MINUS_ZERO minus_zerol -#define LDEXP ldexpl #define MIN_EXP LDBL_MIN_EXP #define MAX_EXP LDBL_MAX_EXP +#define LDEXP ldexpl +#define RANDOM randoml #include "test-ldexp.h" int