From cdcb57035b4584fe754a6f9a8a18b47cc2b8fc27 Mon Sep 17 00:00:00 2001 From: tobiasu <> Date: Sat, 7 Jun 2014 01:47:02 +0000 Subject: Add basic regression test for modf() issue. encouraged by deraadt and miod --- src/regress/lib/libc/modf/modf_test.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 src/regress/lib/libc/modf/modf_test.c (limited to 'src/regress/lib/libc/modf/modf_test.c') diff --git a/src/regress/lib/libc/modf/modf_test.c b/src/regress/lib/libc/modf/modf_test.c new file mode 100644 index 0000000000..f732533635 --- /dev/null +++ b/src/regress/lib/libc/modf/modf_test.c @@ -0,0 +1,35 @@ +/* Public domain, 2014, Tobias Ulmer */ + +/* Test for bug introduced in 4.4BSD modf() on sparc */ + +#include + +#define BIGFLOAT (5e15) /* Number large enough to trigger the "big" case */ + +int +main(void) +{ + double f, i; + + f = modf(BIGFLOAT, &i); + if (i != BIGFLOAT) + return 1; + if (f != 0.0) + return 1; + + /* Repeat, maybe we were lucky */ + f = modf(BIGFLOAT, &i); + if (i != BIGFLOAT) + return 1; + if (f != 0.0) + return 1; + + /* With negative number, for good measure */ + f = modf(-BIGFLOAT, &i); + if (i != -BIGFLOAT) + return 1; + if (f != 0.0) + return 1; + + return 0; +} -- cgit v1.2.3-55-g6feb