rint* tests: More tests.
authorBruno Haible <bruno@clisp.org>
Sat, 3 Mar 2012 16:17:19 +0000 (17:17 +0100)
committerBruno Haible <bruno@clisp.org>
Sat, 3 Mar 2012 16:49:33 +0000 (17:49 +0100)
* 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.

ChangeLog
modules/rint-tests
modules/rintf-tests
modules/rintl-tests
tests/test-rint.c
tests/test-rint.h [new file with mode: 0644]
tests/test-rintf.c
tests/test-rintl.c

index 20483c7..bf20a7a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,23 @@
 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.
        * tests/test-modf.h: New file.
        * tests/test-modf.c: Include <float.h> and test-modf.h.
index bb69767..1b0232f 100644 (file)
@@ -1,10 +1,12 @@
 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
@@ -14,4 +16,5 @@ configure.ac:
 Makefile.am:
 TESTS += test-rint
 check_PROGRAMS += test-rint
+test_rint_SOURCES = test-rint.c randomd.c
 test_rint_LDADD = $(LDADD) @RINT_LIBM@
index 1b5a9c1..d72ce79 100644 (file)
@@ -1,10 +1,12 @@
 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
@@ -14,4 +16,5 @@ configure.ac:
 Makefile.am:
 TESTS += test-rintf
 check_PROGRAMS += test-rintf
+test_rintf_SOURCES = test-rintf.c randomf.c
 test_rintf_LDADD = $(LDADD) @RINTF_LIBM@
index 3a1d80d..32dd4b4 100644 (file)
@@ -1,10 +1,12 @@
 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
@@ -16,4 +18,5 @@ configure.ac:
 Makefile.am:
 TESTS += test-rintl
 check_PROGRAMS += test-rintl
+test_rintl_SOURCES = test-rintl.c randoml.c
 test_rintl_LDADD = $(LDADD) @RINTL_LIBM@
index 075d05d..869a0a1 100644 (file)
@@ -32,6 +32,15 @@ SIGNATURE_CHECK (rint, double, (double));
 #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 ()
 {
@@ -75,11 +84,8 @@ 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;
     }
diff --git a/tests/test-rint.h b/tests/test-rint.h
new file mode 100644 (file)
index 0000000..5ae8146
--- /dev/null
@@ -0,0 +1,55 @@
+/* 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));
+      }
+  }
+}
index da4af98..cd8951a 100644 (file)
@@ -32,6 +32,15 @@ SIGNATURE_CHECK (rintf, float, (float));
 #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 ()
 {
@@ -75,11 +84,8 @@ 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;
     }
index a960eaa..d7f8616 100644 (file)
@@ -33,6 +33,15 @@ SIGNATURE_CHECK (rintl, long double, (long double));
 #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 ()
 {
@@ -80,11 +89,8 @@ 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;
     }