Fortran: add IEEE_QUIET_* and IEEE_SIGNALING_* comparisons
[official-gcc.git] / gcc / testsuite / gfortran.dg / ieee / comparisons_1.f90
blob39a8abdef69d9ec017fcab5fd0a1a901b04510f1
1 ! { dg-do run }
2 program foo
3 use ieee_arithmetic
4 use iso_fortran_env
5 implicit none
7 ! This allows us to test REAL128 if it exists, and still compile
8 ! on platforms were it is not present
9 ! https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89639
10 integer, parameter :: large = merge(real128, real64, real128 > 0)
12 real, volatile :: rnan, rinf
13 double precision, volatile :: dnan, dinf
14 real(kind=large), volatile :: lnan, linf
16 rinf = ieee_value(0., ieee_positive_inf)
17 rnan = ieee_value(0., ieee_quiet_nan)
19 dinf = ieee_value(0.d0, ieee_positive_inf)
20 dnan = ieee_value(0.d0, ieee_quiet_nan)
22 linf = ieee_value(0._large, ieee_positive_inf)
23 lnan = ieee_value(0._large, ieee_quiet_nan)
25 if (.not. ieee_quiet_eq (0., 0.)) stop 1
26 if (.not. ieee_quiet_eq (0., -0.)) stop 2
27 if (.not. ieee_quiet_eq (1., 1.)) stop 3
28 if (.not. ieee_quiet_eq (rinf, rinf)) stop 4
29 if (.not. ieee_quiet_eq (-rinf, -rinf)) stop 5
30 if (ieee_quiet_eq (rnan, rnan)) stop 6
31 if (ieee_quiet_eq (0., 1.)) stop 7
32 if (ieee_quiet_eq (0., -1.)) stop 8
33 if (ieee_quiet_eq (0., rnan)) stop 9
34 if (ieee_quiet_eq (1., rnan)) stop 10
35 if (ieee_quiet_eq (0., rinf)) stop 11
36 if (ieee_quiet_eq (1., rinf)) stop 12
37 if (ieee_quiet_eq (rinf, rnan)) stop 13
39 if (.not. ieee_quiet_eq (0.d0, 0.d0)) stop 14
40 if (.not. ieee_quiet_eq (0.d0, -0.d0)) stop 15
41 if (.not. ieee_quiet_eq (1.d0, 1.d0)) stop 16
42 if (.not. ieee_quiet_eq (dinf, dinf)) stop 17
43 if (.not. ieee_quiet_eq (-dinf, -dinf)) stop 18
44 if (ieee_quiet_eq (dnan, dnan)) stop 19
45 if (ieee_quiet_eq (0.d0, 1.d0)) stop 20
46 if (ieee_quiet_eq (0.d0, -1.d0)) stop 21
47 if (ieee_quiet_eq (0.d0, dnan)) stop 22
48 if (ieee_quiet_eq (1.d0, dnan)) stop 23
49 if (ieee_quiet_eq (0.d0, dinf)) stop 24
50 if (ieee_quiet_eq (1.d0, dinf)) stop 25
51 if (ieee_quiet_eq (dinf, dnan)) stop 26
53 if (.not. ieee_quiet_eq (0._large, 0._large)) stop 27
54 if (.not. ieee_quiet_eq (0._large, -0._large)) stop 28
55 if (.not. ieee_quiet_eq (1._large, 1._large)) stop 29
56 if (.not. ieee_quiet_eq (linf, linf)) stop 30
57 if (.not. ieee_quiet_eq (-linf, -linf)) stop 31
58 if (ieee_quiet_eq (lnan, lnan)) stop 32
59 if (ieee_quiet_eq (0._large, 1._large)) stop 33
60 if (ieee_quiet_eq (0._large, -1._large)) stop 34
61 if (ieee_quiet_eq (0._large, lnan)) stop 35
62 if (ieee_quiet_eq (1._large, lnan)) stop 36
63 if (ieee_quiet_eq (0._large, linf)) stop 37
64 if (ieee_quiet_eq (1._large, linf)) stop 38
65 if (ieee_quiet_eq (linf, lnan)) stop 39
68 if (ieee_quiet_ne (0., 0.)) stop 40
69 if (ieee_quiet_ne (0., -0.)) stop 41
70 if (ieee_quiet_ne (1., 1.)) stop 42
71 if (ieee_quiet_ne (rinf, rinf)) stop 43
72 if (ieee_quiet_ne (-rinf, -rinf)) stop 44
73 if (.not. ieee_quiet_ne (rnan, rnan)) stop 45
74 if (.not. ieee_quiet_ne (0., 1.)) stop 46
75 if (.not. ieee_quiet_ne (0., -1.)) stop 47
76 if (.not. ieee_quiet_ne (0., rnan)) stop 48
77 if (.not. ieee_quiet_ne (1., rnan)) stop 49
78 if (.not. ieee_quiet_ne (0., rinf)) stop 50
79 if (.not. ieee_quiet_ne (1., rinf)) stop 51
80 if (.not. ieee_quiet_ne (rinf, rnan)) stop 52
82 if (ieee_quiet_ne (0.d0, 0.d0)) stop 53
83 if (ieee_quiet_ne (0.d0, -0.d0)) stop 54
84 if (ieee_quiet_ne (1.d0, 1.d0)) stop 55
85 if (ieee_quiet_ne (dinf, dinf)) stop 56
86 if (ieee_quiet_ne (-dinf, -dinf)) stop 57
87 if (.not. ieee_quiet_ne (dnan, dnan)) stop 58
88 if (.not. ieee_quiet_ne (0.d0, 1.d0)) stop 59
89 if (.not. ieee_quiet_ne (0.d0, -1.d0)) stop 60
90 if (.not. ieee_quiet_ne (0.d0, dnan)) stop 61
91 if (.not. ieee_quiet_ne (1.d0, dnan)) stop 62
92 if (.not. ieee_quiet_ne (0.d0, dinf)) stop 63
93 if (.not. ieee_quiet_ne (1.d0, dinf)) stop 64
94 if (.not. ieee_quiet_ne (dinf, dnan)) stop 65
96 if (ieee_quiet_ne (0._large, 0._large)) stop 66
97 if (ieee_quiet_ne (0._large, -0._large)) stop 67
98 if (ieee_quiet_ne (1._large, 1._large)) stop 68
99 if (ieee_quiet_ne (linf, linf)) stop 69
100 if (ieee_quiet_ne (-linf, -linf)) stop 70
101 if (.not. ieee_quiet_ne (lnan, lnan)) stop 71
102 if (.not. ieee_quiet_ne (0._large, 1._large)) stop 72
103 if (.not. ieee_quiet_ne (0._large, -1._large)) stop 73
104 if (.not. ieee_quiet_ne (0._large, lnan)) stop 74
105 if (.not. ieee_quiet_ne (1._large, lnan)) stop 75
106 if (.not. ieee_quiet_ne (0._large, linf)) stop 76
107 if (.not. ieee_quiet_ne (1._large, linf)) stop 77
108 if (.not. ieee_quiet_ne (linf, lnan)) stop 78
111 if (.not. ieee_quiet_le (0., 0.)) stop 79
112 if (.not. ieee_quiet_le (0., -0.)) stop 80
113 if (.not. ieee_quiet_le (1., 1.)) stop 81
114 if (.not. ieee_quiet_le (rinf, rinf)) stop 82
115 if (.not. ieee_quiet_le (-rinf, -rinf)) stop 83
116 if (ieee_quiet_le (rnan, rnan)) stop 84
117 if (.not. ieee_quiet_le (0., 1.)) stop 85
118 if (ieee_quiet_le (0., -1.)) stop 86
119 if (ieee_quiet_le (0., rnan)) stop 87
120 if (ieee_quiet_le (1., rnan)) stop 88
121 if (.not. ieee_quiet_le (0., rinf)) stop 89
122 if (.not. ieee_quiet_le (1., rinf)) stop 90
123 if (ieee_quiet_le (rinf, rnan)) stop 91
125 if (.not. ieee_quiet_le (0.d0, 0.d0)) stop 92
126 if (.not. ieee_quiet_le (0.d0, -0.d0)) stop 93
127 if (.not. ieee_quiet_le (1.d0, 1.d0)) stop 94
128 if (.not. ieee_quiet_le (dinf, dinf)) stop 95
129 if (.not. ieee_quiet_le (-dinf, -dinf)) stop 96
130 if (ieee_quiet_le (dnan, dnan)) stop 97
131 if (.not. ieee_quiet_le (0.d0, 1.d0)) stop 98
132 if (ieee_quiet_le (0.d0, -1.d0)) stop 99
133 if (ieee_quiet_le (0.d0, dnan)) stop 100
134 if (ieee_quiet_le (1.d0, dnan)) stop 101
135 if (.not. ieee_quiet_le (0.d0, dinf)) stop 102
136 if (.not. ieee_quiet_le (1.d0, dinf)) stop 103
137 if (ieee_quiet_le (dinf, dnan)) stop 104
139 if (.not. ieee_quiet_le (0._large, 0._large)) stop 105
140 if (.not. ieee_quiet_le (0._large, -0._large)) stop 106
141 if (.not. ieee_quiet_le (1._large, 1._large)) stop 107
142 if (.not. ieee_quiet_le (linf, linf)) stop 108
143 if (.not. ieee_quiet_le (-linf, -linf)) stop 109
144 if (ieee_quiet_le (lnan, lnan)) stop 110
145 if (.not. ieee_quiet_le (0._large, 1._large)) stop 111
146 if (ieee_quiet_le (0._large, -1._large)) stop 112
147 if (ieee_quiet_le (0._large, lnan)) stop 113
148 if (ieee_quiet_le (1._large, lnan)) stop 114
149 if (.not. ieee_quiet_le (0._large, linf)) stop 115
150 if (.not. ieee_quiet_le (1._large, linf)) stop 116
151 if (ieee_quiet_le (linf, lnan)) stop 117
154 if (.not. ieee_quiet_ge (0., 0.)) stop 118
155 if (.not. ieee_quiet_ge (0., -0.)) stop 119
156 if (.not. ieee_quiet_ge (1., 1.)) stop 120
157 if (.not. ieee_quiet_ge (rinf, rinf)) stop 121
158 if (.not. ieee_quiet_ge (-rinf, -rinf)) stop 122
159 if (ieee_quiet_ge (rnan, rnan)) stop 123
160 if (ieee_quiet_ge (0., 1.)) stop 124
161 if (.not. ieee_quiet_ge (0., -1.)) stop 125
162 if (ieee_quiet_ge (0., rnan)) stop 126
163 if (ieee_quiet_ge (1., rnan)) stop 127
164 if (ieee_quiet_ge (0., rinf)) stop 128
165 if (ieee_quiet_ge (1., rinf)) stop 129
166 if (ieee_quiet_ge (rinf, rnan)) stop 130
168 if (.not. ieee_quiet_ge (0.d0, 0.d0)) stop 131
169 if (.not. ieee_quiet_ge (0.d0, -0.d0)) stop 132
170 if (.not. ieee_quiet_ge (1.d0, 1.d0)) stop 133
171 if (.not. ieee_quiet_ge (dinf, dinf)) stop 134
172 if (.not. ieee_quiet_ge (-dinf, -dinf)) stop 135
173 if (ieee_quiet_ge (dnan, dnan)) stop 136
174 if (ieee_quiet_ge (0.d0, 1.d0)) stop 137
175 if (.not. ieee_quiet_ge (0.d0, -1.d0)) stop 138
176 if (ieee_quiet_ge (0.d0, dnan)) stop 139
177 if (ieee_quiet_ge (1.d0, dnan)) stop 140
178 if (ieee_quiet_ge (0.d0, dinf)) stop 141
179 if (ieee_quiet_ge (1.d0, dinf)) stop 142
180 if (ieee_quiet_ge (dinf, dnan)) stop 143
182 if (.not. ieee_quiet_ge (0._large, 0._large)) stop 144
183 if (.not. ieee_quiet_ge (0._large, -0._large)) stop 145
184 if (.not. ieee_quiet_ge (1._large, 1._large)) stop 146
185 if (.not. ieee_quiet_ge (linf, linf)) stop 147
186 if (.not. ieee_quiet_ge (-linf, -linf)) stop 148
187 if (ieee_quiet_ge (lnan, lnan)) stop 149
188 if (ieee_quiet_ge (0._large, 1._large)) stop 150
189 if (.not. ieee_quiet_ge (0._large, -1._large)) stop 151
190 if (ieee_quiet_ge (0._large, lnan)) stop 152
191 if (ieee_quiet_ge (1._large, lnan)) stop 153
192 if (ieee_quiet_ge (0._large, linf)) stop 154
193 if (ieee_quiet_ge (1._large, linf)) stop 155
194 if (ieee_quiet_ge (linf, lnan)) stop 156
197 if (ieee_quiet_lt (0., 0.)) stop 157
198 if (ieee_quiet_lt (0., -0.)) stop 158
199 if (ieee_quiet_lt (1., 1.)) stop 159
200 if (ieee_quiet_lt (rinf, rinf)) stop 160
201 if (ieee_quiet_lt (-rinf, -rinf)) stop 161
202 if (ieee_quiet_lt (rnan, rnan)) stop 162
203 if (.not. ieee_quiet_lt (0., 1.)) stop 163
204 if (ieee_quiet_lt (0., -1.)) stop 164
205 if (ieee_quiet_lt (0., rnan)) stop 165
206 if (ieee_quiet_lt (1., rnan)) stop 166
207 if (.not. ieee_quiet_lt (0., rinf)) stop 167
208 if (.not. ieee_quiet_lt (1., rinf)) stop 168
209 if (ieee_quiet_lt (rinf, rnan)) stop 169
211 if (ieee_quiet_lt (0.d0, 0.d0)) stop 170
212 if (ieee_quiet_lt (0.d0, -0.d0)) stop 171
213 if (ieee_quiet_lt (1.d0, 1.d0)) stop 172
214 if (ieee_quiet_lt (dinf, dinf)) stop 173
215 if (ieee_quiet_lt (-dinf, -dinf)) stop 174
216 if (ieee_quiet_lt (dnan, dnan)) stop 175
217 if (.not. ieee_quiet_lt (0.d0, 1.d0)) stop 176
218 if (ieee_quiet_lt (0.d0, -1.d0)) stop 177
219 if (ieee_quiet_lt (0.d0, dnan)) stop 178
220 if (ieee_quiet_lt (1.d0, dnan)) stop 179
221 if (.not. ieee_quiet_lt (0.d0, dinf)) stop 180
222 if (.not. ieee_quiet_lt (1.d0, dinf)) stop 181
223 if (ieee_quiet_lt (dinf, dnan)) stop 182
225 if (ieee_quiet_lt (0._large, 0._large)) stop 183
226 if (ieee_quiet_lt (0._large, -0._large)) stop 184
227 if (ieee_quiet_lt (1._large, 1._large)) stop 185
228 if (ieee_quiet_lt (linf, linf)) stop 186
229 if (ieee_quiet_lt (-linf, -linf)) stop 187
230 if (ieee_quiet_lt (lnan, lnan)) stop 188
231 if (.not. ieee_quiet_lt (0._large, 1._large)) stop 189
232 if (ieee_quiet_lt (0._large, -1._large)) stop 190
233 if (ieee_quiet_lt (0._large, lnan)) stop 191
234 if (ieee_quiet_lt (1._large, lnan)) stop 192
235 if (.not. ieee_quiet_lt (0._large, linf)) stop 193
236 if (.not. ieee_quiet_lt (1._large, linf)) stop 194
237 if (ieee_quiet_lt (linf, lnan)) stop 195
240 if (ieee_quiet_gt (0., 0.)) stop 196
241 if (ieee_quiet_gt (0., -0.)) stop 197
242 if (ieee_quiet_gt (1., 1.)) stop 198
243 if (ieee_quiet_gt (rinf, rinf)) stop 199
244 if (ieee_quiet_gt (-rinf, -rinf)) stop 200
245 if (ieee_quiet_gt (rnan, rnan)) stop 201
246 if (ieee_quiet_gt (0., 1.)) stop 202
247 if (.not. ieee_quiet_gt (0., -1.)) stop 203
248 if (ieee_quiet_gt (0., rnan)) stop 204
249 if (ieee_quiet_gt (1., rnan)) stop 205
250 if (ieee_quiet_gt (0., rinf)) stop 206
251 if (ieee_quiet_gt (1., rinf)) stop 207
252 if (ieee_quiet_gt (rinf, rnan)) stop 208
254 if (ieee_quiet_gt (0.d0, 0.d0)) stop 209
255 if (ieee_quiet_gt (0.d0, -0.d0)) stop 210
256 if (ieee_quiet_gt (1.d0, 1.d0)) stop 211
257 if (ieee_quiet_gt (dinf, dinf)) stop 212
258 if (ieee_quiet_gt (-dinf, -dinf)) stop 213
259 if (ieee_quiet_gt (dnan, dnan)) stop 214
260 if (ieee_quiet_gt (0.d0, 1.d0)) stop 215
261 if (.not. ieee_quiet_gt (0.d0, -1.d0)) stop 216
262 if (ieee_quiet_gt (0.d0, dnan)) stop 217
263 if (ieee_quiet_gt (1.d0, dnan)) stop 218
264 if (ieee_quiet_gt (0.d0, dinf)) stop 219
265 if (ieee_quiet_gt (1.d0, dinf)) stop 220
266 if (ieee_quiet_gt (dinf, dnan)) stop 221
268 if (ieee_quiet_gt (0._large, 0._large)) stop 222
269 if (ieee_quiet_gt (0._large, -0._large)) stop 223
270 if (ieee_quiet_gt (1._large, 1._large)) stop 224
271 if (ieee_quiet_gt (linf, linf)) stop 225
272 if (ieee_quiet_gt (-linf, -linf)) stop 226
273 if (ieee_quiet_gt (lnan, lnan)) stop 227
274 if (ieee_quiet_gt (0._large, 1._large)) stop 228
275 if (.not. ieee_quiet_gt (0._large, -1._large)) stop 229
276 if (ieee_quiet_gt (0._large, lnan)) stop 230
277 if (ieee_quiet_gt (1._large, lnan)) stop 231
278 if (ieee_quiet_gt (0._large, linf)) stop 232
279 if (ieee_quiet_gt (1._large, linf)) stop 233
280 if (ieee_quiet_gt (linf, lnan)) stop 234
282 end program foo