+2012-03-03 Bruno Haible <bruno@clisp.org>
+
+ fabs* tests: More tests.
+ * tests/test-fabs.h: New file, partially extracted from
+ tests/test-fabsl.c.
+ * tests/test-fabs.c (RANDOM): New macro.
+ * tests/test-fabsf.c (RANDOM): New macro.
+ * tests/test-fabsl.c (RANDOM): New macro.
+ * modules/fabs-tests (Files): Add tests/randomd.c.
+ (Makefile.am): Add randomd.c to test_fabs_SOURCES.
+ * modules/fabsf-tests (Files): Add tests/randomf.c.
+ (Makefile.am): Add randomf.c to test_fabsf_SOURCES.
+ * modules/fabsl-tests (Files): Add tests/randoml.c.
+ (Makefile.am): Add randoml.c to test_fabsl_SOURCES.
+
2012-03-03 Bruno Haible <bruno@clisp.org>
ldexp* tests: More tests.
Files:
tests/test-fabs.c
+tests/test-fabs.h
tests/signature.h
tests/minus-zero.h
tests/macros.h
+tests/randomd.c
Depends-on:
+signbit
configure.ac:
Makefile.am:
TESTS += test-fabs
check_PROGRAMS += test-fabs
+test_fabs_SOURCES = test-fabs.c randomd.c
test_fabs_LDADD = $(LDADD) @FABS_LIBM@
Files:
tests/test-fabsf.c
+tests/test-fabs.h
tests/signature.h
tests/minus-zero.h
tests/macros.h
+tests/randomf.c
Depends-on:
+signbit
configure.ac:
Makefile.am:
TESTS += test-fabsf
check_PROGRAMS += test-fabsf
+test_fabsf_SOURCES = test-fabsf.c randomf.c
test_fabsf_LDADD = $(LDADD) @FABSF_LIBM@
Files:
tests/test-fabsl.c
+tests/test-fabs.h
tests/signature.h
tests/minus-zero.h
tests/macros.h
+tests/randoml.c
Depends-on:
+signbit
configure.ac:
Makefile.am:
TESTS += test-fabsl
check_PROGRAMS += test-fabsl
+test_fabsl_SOURCES = test-fabsl.c randoml.c
test_fabsl_LDADD = $(LDADD) @FABSL_LIBM@
#include "macros.h"
#include "minus-zero.h"
-volatile double x;
-double y;
-double zero = 0.0;
+#define DOUBLE double
+#define L_(literal) literal
+#define MINUS_ZERO minus_zerod
+#define FABS fabs
+#define RANDOM randomd
+#include "test-fabs.h"
int
main ()
y = fabs (x);
ASSERT (y == 0.6);
- /* Signed zero. */
- x = 0.0;
- y = fabs (x);
- ASSERT (y == 0.0);
- ASSERT (memcmp (&y, &zero, sizeof y) == 0);
-
- x = minus_zerod;
- y = fabs (x);
- ASSERT (y == 0.0);
- ASSERT (memcmp (&y, &zero, sizeof y) == 0);
+ test_function ();
return 0;
}
--- /dev/null
+/* Test of fabs*() function family.
+ Copyright (C) 2012 Free Software Foundation, Inc.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+static void
+test_function (void)
+{
+ volatile DOUBLE x;
+ DOUBLE y;
+
+ /* Signed zero. */
+ x = L_(0.0);
+ y = FABS (x);
+ ASSERT (y == L_(0.0));
+ ASSERT (!signbit (y));
+
+ x = MINUS_ZERO;
+ y = FABS (x);
+ ASSERT (y == L_(0.0));
+ ASSERT (!signbit (y));
+
+ /* Randomized tests. */
+ {
+ int i;
+
+ for (i = 0; i < SIZEOF (RANDOM); i++)
+ {
+ x = L_(10.0) * RANDOM[i]; /* 0.0 <= x <= 10.0 */
+ ASSERT (FABS (x) == x);
+ ASSERT (FABS (- x) == x);
+ }
+ }
+}
+
+volatile DOUBLE x;
+DOUBLE y;
#include "macros.h"
#include "minus-zero.h"
-volatile float x;
-float y;
-float zero = 0.0f;
+#define DOUBLE float
+#define L_(literal) literal##f
+#define MINUS_ZERO minus_zerof
+#define FABS fabsf
+#define RANDOM randomf
+#include "test-fabs.h"
int
main ()
y = fabsf (x);
ASSERT (y == 0.6f);
- /* Signed zero. */
- x = 0.0f;
- y = fabsf (x);
- ASSERT (y == 0.0f);
- ASSERT (memcmp (&y, &zero, sizeof y) == 0);
-
- x = minus_zerof;
- y = fabsf (x);
- ASSERT (y == 0.0f);
- ASSERT (memcmp (&y, &zero, sizeof y) == 0);
+ test_function ();
return 0;
}
#include "macros.h"
#include "minus-zero.h"
-volatile long double x;
-long double y;
-long double zero = 0.0L;
+#define DOUBLE long double
+#define L_(literal) literal##L
+#define MINUS_ZERO minus_zerol
+#define FABS fabsl
+#define RANDOM randoml
+#include "test-fabs.h"
int
main ()
y = fabsl (x);
ASSERT (y == 0.6L);
- /* Signed zero. */
- x = 0.0L;
- y = fabsl (x);
- ASSERT (y == 0.0L);
- ASSERT (memcmp (&y, &zero, sizeof y) == 0);
-
- x = minus_zerol;
- y = fabsl (x);
- ASSERT (y == 0.0L);
- ASSERT (memcmp (&y, &zero, sizeof y) == 0);
+ test_function ();
return 0;
}