From e342ff35944348fd2c2c8d154c639defb6268694 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sat, 3 Mar 2012 17:17:19 +0100 Subject: [PATCH] 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. --- ChangeLog | 18 ++++++++++++++++++ modules/rint-tests | 3 +++ modules/rintf-tests | 3 +++ modules/rintl-tests | 3 +++ tests/test-rint.c | 16 +++++++++++----- tests/test-rint.h | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/test-rintf.c | 16 +++++++++++----- tests/test-rintl.c | 16 +++++++++++----- 8 files changed, 115 insertions(+), 15 deletions(-) create mode 100644 tests/test-rint.h diff --git a/ChangeLog b/ChangeLog index 20483c7d2..bf20a7aa0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,23 @@ 2012-03-03 Bruno Haible + 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 + modf* tests: More tests. * tests/test-modf.h: New file. * tests/test-modf.c: Include and test-modf.h. diff --git a/modules/rint-tests b/modules/rint-tests index bb69767a0..1b0232f76 100644 --- a/modules/rint-tests +++ b/modules/rint-tests @@ -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@ diff --git a/modules/rintf-tests b/modules/rintf-tests index 1b5a9c1a4..d72ce7916 100644 --- a/modules/rintf-tests +++ b/modules/rintf-tests @@ -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@ diff --git a/modules/rintl-tests b/modules/rintl-tests index 3a1d80dd9..32dd4b425 100644 --- a/modules/rintl-tests +++ b/modules/rintl-tests @@ -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@ diff --git a/tests/test-rint.c b/tests/test-rint.c index 075d05d9a..869a0a123 100644 --- a/tests/test-rint.c +++ b/tests/test-rint.c @@ -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 index 000000000..5ae814635 --- /dev/null +++ b/tests/test-rint.h @@ -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 . */ + +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)); + } + } +} diff --git a/tests/test-rintf.c b/tests/test-rintf.c index da4af98ba..cd8951af9 100644 --- a/tests/test-rintf.c +++ b/tests/test-rintf.c @@ -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; } diff --git a/tests/test-rintl.c b/tests/test-rintl.c index a960eaa41..d7f861675 100644 --- a/tests/test-rintl.c +++ b/tests/test-rintl.c @@ -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; } -- 2.11.0