* 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 <bruno@clisp.org>
+
+ 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 <bruno@clisp.org>
frexp* tests: More tests.
tests/nan.h
tests/signature.h
tests/macros.h
+tests/randomd.c
Depends-on:
isnand-nolibm
Makefile.am:
TESTS += test-ldexp
check_PROGRAMS += test-ldexp
+test_ldexp_SOURCES = test-ldexp.c randomd.c
test_ldexp_LDADD = $(LDADD) @LDEXP_LIBM@
tests/nan.h
tests/signature.h
tests/macros.h
+tests/randomf.c
Depends-on:
isnanf-nolibm
Makefile.am:
TESTS += test-ldexpf
check_PROGRAMS += test-ldexpf
+test_ldexpf_SOURCES = test-ldexpf.c randomf.c
test_ldexpf_LDADD = $(LDADD) @LDEXPF_LIBM@
tests/nan.h
tests/signature.h
tests/macros.h
+tests/randoml.c
Depends-on:
fpucw
Makefile.am:
TESTS += test-ldexpl
check_PROGRAMS += test-ldexpl
+test_ldexpl_SOURCES = test-ldexpl.c randoml.c
test_ldexpl_LDADD = $(LDADD) @LDEXPL_LIBM@
#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
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));
+ }
}
#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
#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