+2012-03-03 Bruno Haible <bruno@clisp.org>
+
+ rint* tests: More tests.
+ * tests/test-rint.h: New file, partially extracted from
+ tests/test-rintl.c.
+ * tests/test-rint.c: Include test-rint.h.
+ (main): Invoke test_function.
+ * tests/test-rintf.c: Include test-rint.h.
+ (main): Invoke test_function.
+ * tests/test-rintl.c: Include test-rint.h.
+ (main): Invoke test_function.
+ * modules/rint-tests (Files): Add tests/test-rint.h, tests/randomd.c.
+ (Makefile.am): Add randomd.c to test_rint_SOURCES.
+ * modules/rintf-tests (Files): Add tests/test-rint.h, tests/randomf.c.
+ (Makefile.am): Add randomf.c to test_rintf_SOURCES.
+ * modules/rintl-tests (Files): Add tests/test-rint.h, tests/randoml.c.
+ (Makefile.am): Add randoml.c to test_rintl_SOURCES.
+
2012-03-03 Bruno Haible <bruno@clisp.org>
modf* tests: More tests.
Files:
tests/test-rint.c
+tests/test-rint.h
tests/minus-zero.h
tests/infinity.h
tests/nan.h
tests/signature.h
tests/macros.h
+tests/randomd.c
Depends-on:
isnand-nolibm
Makefile.am:
TESTS += test-rint
check_PROGRAMS += test-rint
+test_rint_SOURCES = test-rint.c randomd.c
test_rint_LDADD = $(LDADD) @RINT_LIBM@
Files:
tests/test-rintf.c
+tests/test-rint.h
tests/minus-zero.h
tests/infinity.h
tests/nan.h
tests/signature.h
tests/macros.h
+tests/randomf.c
Depends-on:
isnanf-nolibm
Makefile.am:
TESTS += test-rintf
check_PROGRAMS += test-rintf
+test_rintf_SOURCES = test-rintf.c randomf.c
test_rintf_LDADD = $(LDADD) @RINTF_LIBM@
Files:
tests/test-rintl.c
+tests/test-rint.h
tests/minus-zero.h
tests/infinity.h
tests/nan.h
tests/signature.h
tests/macros.h
+tests/randoml.c
Depends-on:
fpucw
Makefile.am:
TESTS += test-rintl
check_PROGRAMS += test-rintl
+test_rintl_SOURCES = test-rintl.c randoml.c
test_rintl_LDADD = $(LDADD) @RINTL_LIBM@
#include "nan.h"
#include "macros.h"
+#define DOUBLE double
+#define ISNAN isnand
+#define INFINITY Infinityd ()
+#define NAN NaNd ()
+#define L_(literal) literal
+#define RINT rint
+#define RANDOM randomd
+#include "test-rint.h"
+
int
main ()
{
ASSERT (rint (-65536.0) == -65536.0);
ASSERT (rint (-65536.001) == -65536.0);
ASSERT (rint (-2.341e31) == -2.341e31);
- /* Infinite numbers. */
- ASSERT (rint (Infinityd ()) == Infinityd ());
- ASSERT (rint (- Infinityd ()) == - Infinityd ());
- /* NaNs. */
- ASSERT (isnand (rint (NaNd ())));
+
+ test_function ();
return 0;
}
--- /dev/null
+/* Test of rint*() 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)
+{
+ /* Infinite numbers. */
+ ASSERT (RINT (INFINITY) == INFINITY);
+ ASSERT (RINT (- INFINITY) == - INFINITY);
+ /* NaNs. */
+ ASSERT (ISNAN (RINT (NAN)));
+
+ /* Randomized tests. */
+ {
+ int i;
+
+ for (i = 0; i < SIZEOF (RANDOM); i++)
+ {
+ DOUBLE x;
+
+ x = L_(0.5) * RANDOM[i];
+ ASSERT (RINT (x) == L_(0.0));
+ x = - x;
+ ASSERT (RINT (x) == L_(0.0));
+
+ x = L_(1.0) - L_(0.5) * RANDOM[i];
+ ASSERT (RINT (x) == L_(1.0));
+ x = - x;
+ ASSERT (RINT (x) == - L_(1.0));
+
+ x = L_(1.0) + L_(0.5) * RANDOM[i];
+ ASSERT (RINT (x) == L_(1.0));
+ x = - x;
+ ASSERT (RINT (x) == - L_(1.0));
+
+ x = L_(2.0) - L_(0.5) * RANDOM[i];
+ ASSERT (RINT (x) == L_(2.0));
+ x = - x;
+ ASSERT (RINT (x) == - L_(2.0));
+ }
+ }
+}
#include "nan.h"
#include "macros.h"
+#define DOUBLE float
+#define ISNAN isnanf
+#define INFINITY Infinityf ()
+#define NAN NaNf ()
+#define L_(literal) literal##f
+#define RINT rintf
+#define RANDOM randomf
+#include "test-rint.h"
+
int
main ()
{
ASSERT (rintf (-65536.0f) == -65536.0f);
ASSERT (rintf (-65536.01f) == -65536.0f);
ASSERT (rintf (-2.341e31f) == -2.341e31f);
- /* Infinite numbers. */
- ASSERT (rintf (Infinityf ()) == Infinityf ());
- ASSERT (rintf (- Infinityf ()) == - Infinityf ());
- /* NaNs. */
- ASSERT (isnanf (rintf (NaNf ())));
+
+ test_function ();
return 0;
}
#include "nan.h"
#include "macros.h"
+#define DOUBLE long double
+#define ISNAN isnanl
+#define INFINITY Infinityl ()
+#define NAN NaNl ()
+#define L_(literal) literal##L
+#define RINT rintl
+#define RANDOM randoml
+#include "test-rint.h"
+
int
main ()
{
ASSERT (rintl (-65536.0L) == -65536.0L);
ASSERT (rintl (-65536.001L) == -65536.0L);
ASSERT (rintl (-2.341e31L) == -2.341e31L);
- /* Infinite numbers. */
- ASSERT (rintl (Infinityl ()) == Infinityl ());
- ASSERT (rintl (- Infinityl ()) == - Infinityl ());
- /* NaNs. */
- ASSERT (isnanl (rintl (NaNl ())));
+
+ test_function ();
return 0;
}