Remove old autovect-branch by moving to "dead" directory.
[official-gcc.git] / old-autovect-branch / gcc / testsuite / gcc.c-torture / execute / ieee / mzero2.c
blob0da53d247377878660b440de81ef2c1b1449a5c2
1 /* Test IEEE +0/-0 rules */
3 static double pzero = +0.0;
4 static double nzero = -0.0;
5 static double pinf = +1.0 / 0.0;
6 static double ninf = -1.0 / 0.0;
7 static double nan = 0.0 / 0.0;
9 void
10 expect (double value, double expected)
12 if (expected != expected) /* expected value is Not a number */
14 if (value == value) /* actual value is a number */
15 abort ();
18 else if (value != value)
19 abort (); /* actual value is a NaN */
21 else if (memcmp ((void *)&value, (void *)&expected, sizeof (double)) != 0)
22 abort (); /* values don't match */
25 main ()
27 expect (pzero + pzero, pzero);
28 expect (pzero + nzero, pzero);
29 expect (nzero + pzero, pzero);
30 expect (nzero + nzero, nzero);
32 expect (pzero - pzero, pzero);
33 expect (pzero - nzero, pzero);
34 expect (nzero - pzero, nzero);
35 expect (nzero - nzero, pzero);
37 expect (pzero * pzero, pzero);
38 expect (pzero * nzero, nzero);
39 expect (nzero * pzero, nzero);
40 expect (nzero * nzero, pzero);
42 expect (+1.00 * pzero, pzero);
43 expect (-1.00 * pzero, nzero);
44 expect (+1.00 * nzero, nzero);
45 expect (-1.00 * nzero, pzero);
47 expect (pzero / pzero, nan);
48 expect (pzero / nzero, nan);
49 expect (nzero / pzero, nan);
50 expect (nzero / nzero, nan);
52 expect (+1.00 / pzero, pinf);
53 expect (-1.00 / pzero, ninf);
54 expect (+1.00 / nzero, ninf);
55 expect (-1.00 / nzero, pinf);
57 exit (0);