diff options
author | Michael Meissner <meissner@cygnus.com> | 1998-05-31 20:31:09 +0000 |
---|---|---|
committer | Michael Meissner <meissner@gcc.gnu.org> | 1998-05-31 20:31:09 +0000 |
commit | 655ccec163bee97c9e38fbe2cca7eb651eb7be93 (patch) | |
tree | cf9d43a9687f5621fe2264521f94c50381086364 | |
parent | 726e2d544cdcb3e91ac2e0ced52bf7ef592b18f3 (diff) | |
download | gcc-655ccec163bee97c9e38fbe2cca7eb651eb7be93.zip gcc-655ccec163bee97c9e38fbe2cca7eb651eb7be93.tar.gz gcc-655ccec163bee97c9e38fbe2cca7eb651eb7be93.tar.bz2 |
Add minus zero test
From-SVN: r20152
-rw-r--r-- | gcc/testsuite/gcc.c-torture/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/ieee/mzero2.c | 58 |
2 files changed, 62 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.c-torture/ChangeLog b/gcc/testsuite/gcc.c-torture/ChangeLog index 773bc64..1cd126d 100644 --- a/gcc/testsuite/gcc.c-torture/ChangeLog +++ b/gcc/testsuite/gcc.c-torture/ChangeLog @@ -1,3 +1,7 @@ +Sun May 31 23:23:29 1998 Michael Meissner <meissner@cygnus.com> + + * execute/ieee/mzero2.c: New test to better test IEEE -0 support. + Wed Apr 8 13:09:15 1998 Jim Wilson <wilson@cygnus.com> * execute/980407-1.c: Delete test. Is duplicate of loop-4.c. diff --git a/gcc/testsuite/gcc.c-torture/execute/ieee/mzero2.c b/gcc/testsuite/gcc.c-torture/execute/ieee/mzero2.c new file mode 100644 index 0000000..0da53d2 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/ieee/mzero2.c @@ -0,0 +1,58 @@ +/* Test IEEE +0/-0 rules */ + +static double pzero = +0.0; +static double nzero = -0.0; +static double pinf = +1.0 / 0.0; +static double ninf = -1.0 / 0.0; +static double nan = 0.0 / 0.0; + +void +expect (double value, double expected) +{ + if (expected != expected) /* expected value is Not a number */ + { + if (value == value) /* actual value is a number */ + abort (); + } + + else if (value != value) + abort (); /* actual value is a NaN */ + + else if (memcmp ((void *)&value, (void *)&expected, sizeof (double)) != 0) + abort (); /* values don't match */ +} + +main () +{ + expect (pzero + pzero, pzero); + expect (pzero + nzero, pzero); + expect (nzero + pzero, pzero); + expect (nzero + nzero, nzero); + + expect (pzero - pzero, pzero); + expect (pzero - nzero, pzero); + expect (nzero - pzero, nzero); + expect (nzero - nzero, pzero); + + expect (pzero * pzero, pzero); + expect (pzero * nzero, nzero); + expect (nzero * pzero, nzero); + expect (nzero * nzero, pzero); + + expect (+1.00 * pzero, pzero); + expect (-1.00 * pzero, nzero); + expect (+1.00 * nzero, nzero); + expect (-1.00 * nzero, pzero); + + expect (pzero / pzero, nan); + expect (pzero / nzero, nan); + expect (nzero / pzero, nan); + expect (nzero / nzero, nan); + + expect (+1.00 / pzero, pinf); + expect (-1.00 / pzero, ninf); + expect (+1.00 / nzero, ninf); + expect (-1.00 / nzero, pinf); + + exit (0); +} |