OSDN Git Service

8961777c79b45ad9a5c68bfb27fa7b501dd553d0
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / dfp / nan-1.c
1 /* N1150 4: Characteristics of decimal floating types (not explicit)
2    C99 5.2.4.2.2: Characteristics of floating types.
3    A few simple checks on arithmetic operations. */
4
5 #include "dfp-dbg.h"
6
7 int main()
8 {
9   /* Some possibly non-obvious tests, but most logical
10      operations on NaN return false, including NaN == NaN. */
11   if (__builtin_nand32("") == __builtin_nand32(""))
12     FAILURE
13
14   if (__builtin_nand64("") == __builtin_nand64(""))
15     FAILURE
16
17   if (__builtin_nand128("") == __builtin_nand128(""))
18     FAILURE
19   
20   if (!(__builtin_nand32("") != __builtin_nand32("")))
21     FAILURE
22
23   if (!(__builtin_nand64("") != __builtin_nand64("")))
24     FAILURE
25
26   if (!(__builtin_nand128("") != __builtin_nand128("")))
27     FAILURE
28
29   if (__builtin_nand32("") > __builtin_nand32(""))
30     FAILURE
31
32   if (__builtin_nand64("") >= __builtin_nand64(""))
33     FAILURE
34
35   if (__builtin_nand128("") <  __builtin_nand128(""))
36     FAILURE
37
38   if (-__builtin_nand128("") <  +__builtin_nand128(""))
39     FAILURE
40
41   /* 0.0/0.0 => NaN, but NaN != NaN.  */
42   if (0.0df/0.0dl == __builtin_nand32(""))
43     FAILURE
44
45   /* 0.0 * INF => NaN.  */
46   if (!__builtin_isnand32 (0.0df * __builtin_infd32()))
47     FAILURE
48
49   if (!__builtin_isnand64 (0.0dd * __builtin_infd64()))
50     FAILURE
51
52   if (!__builtin_isnand128 (0.0dd * __builtin_infd128()))
53     FAILURE
54
55   /* INF - INF => NaN.  */
56   if (!__builtin_isnand32 (__builtin_infd32() - __builtin_infd32()))
57     FAILURE
58
59   if (!__builtin_isnand64 (__builtin_infd64() - __builtin_infd64()))
60     FAILURE
61
62   if (!__builtin_isnand128 (__builtin_infd128() - __builtin_infd128()))
63     FAILURE
64
65   /* INF/INF => NaN.  */
66   if (!__builtin_isnand32 (__builtin_infd32()/__builtin_infd32()) )
67     FAILURE
68
69   if (!__builtin_isnand64 (__builtin_infd64()/__builtin_infd64()) )
70     FAILURE
71
72   if (!__builtin_isnand128 (__builtin_infd128()/__builtin_infd128()) )
73     FAILURE
74   
75   /* 0.0/0.0 => NaN, but NaN != NaN.  */
76   if ((0.0dd/0.0df) == (0.0dd/0.0df))
77     FAILURE
78
79   if (__builtin_nand32("") <  __builtin_infd32())
80     FAILURE
81
82   if (__builtin_nand32("") >=  __builtin_infd32())
83     FAILURE
84
85   /* Fixme: Add sqrtdf(-x.df) test when sqrt is supported. */
86
87   if (!__builtin_isnand32(__builtin_nand32("")))
88     FAILURE
89
90   if (!__builtin_isnand64(__builtin_nand64("")))
91     FAILURE
92
93   if (!__builtin_isnand128(__builtin_nand128("")))
94     FAILURE
95
96   if (!__builtin_isnand128(8.0df * __builtin_nand128("")))
97     FAILURE
98
99   if (!__builtin_isnand32(8.1dl - __builtin_nand32("")))
100     FAILURE
101
102   if (!__builtin_isnand128(__builtin_nand64("") + __builtin_nand128("")))
103     FAILURE
104
105   FINISH
106 }