aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/ieee/comparisons_2.f90
blob: 35aa1fcba1bcb9f19a6f914cc862637d556840d8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
! { dg-do run }
program foo
   use ieee_arithmetic
   use iso_fortran_env
   implicit none

   ! This allows us to test REAL128 if it exists, and still compile
   ! on platforms were it is not present
   ! https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89639
   integer, parameter :: large = merge(real128, real64, real128 > 0)

   real, volatile :: rnan, rinf
   double precision, volatile :: dnan, dinf
   real(kind=large), volatile :: lnan, linf

   rinf = ieee_value(0., ieee_positive_inf)
   rnan = ieee_value(0., ieee_quiet_nan)

   dinf = ieee_value(0.d0, ieee_positive_inf)
   dnan = ieee_value(0.d0, ieee_quiet_nan)

   linf = ieee_value(0._large, ieee_positive_inf)
   lnan = ieee_value(0._large, ieee_quiet_nan)

   if (.not. ieee_signaling_eq (0., 0.)) stop 1
   if (.not. ieee_signaling_eq (0., -0.)) stop 2
   if (.not. ieee_signaling_eq (1., 1.)) stop 3
   if (.not. ieee_signaling_eq (rinf, rinf)) stop 4
   if (.not. ieee_signaling_eq (-rinf, -rinf)) stop 5
   if (ieee_signaling_eq (rnan, rnan)) stop 6
   if (ieee_signaling_eq (0., 1.)) stop 7
   if (ieee_signaling_eq (0., -1.)) stop 8
   if (ieee_signaling_eq (0., rnan)) stop 9
   if (ieee_signaling_eq (1., rnan)) stop 10
   if (ieee_signaling_eq (0., rinf)) stop 11
   if (ieee_signaling_eq (1., rinf)) stop 12
   if (ieee_signaling_eq (rinf, rnan)) stop 13

   if (.not. ieee_signaling_eq (0.d0, 0.d0)) stop 14
   if (.not. ieee_signaling_eq (0.d0, -0.d0)) stop 15
   if (.not. ieee_signaling_eq (1.d0, 1.d0)) stop 16
   if (.not. ieee_signaling_eq (dinf, dinf)) stop 17
   if (.not. ieee_signaling_eq (-dinf, -dinf)) stop 18
   if (ieee_signaling_eq (dnan, dnan)) stop 19
   if (ieee_signaling_eq (0.d0, 1.d0)) stop 20
   if (ieee_signaling_eq (0.d0, -1.d0)) stop 21
   if (ieee_signaling_eq (0.d0, dnan)) stop 22
   if (ieee_signaling_eq (1.d0, dnan)) stop 23
   if (ieee_signaling_eq (0.d0, dinf)) stop 24
   if (ieee_signaling_eq (1.d0, dinf)) stop 25
   if (ieee_signaling_eq (dinf, dnan)) stop 26

   if (.not. ieee_signaling_eq (0._large, 0._large)) stop 27
   if (.not. ieee_signaling_eq (0._large, -0._large)) stop 28
   if (.not. ieee_signaling_eq (1._large, 1._large)) stop 29
   if (.not. ieee_signaling_eq (linf, linf)) stop 30
   if (.not. ieee_signaling_eq (-linf, -linf)) stop 31
   if (ieee_signaling_eq (lnan, lnan)) stop 32
   if (ieee_signaling_eq (0._large, 1._large)) stop 33
   if (ieee_signaling_eq (0._large, -1._large)) stop 34
   if (ieee_signaling_eq (0._large, lnan)) stop 35
   if (ieee_signaling_eq (1._large, lnan)) stop 36
   if (ieee_signaling_eq (0._large, linf)) stop 37
   if (ieee_signaling_eq (1._large, linf)) stop 38
   if (ieee_signaling_eq (linf, lnan)) stop 39


   if (ieee_signaling_ne (0., 0.)) stop 40
   if (ieee_signaling_ne (0., -0.)) stop 41
   if (ieee_signaling_ne (1., 1.)) stop 42
   if (ieee_signaling_ne (rinf, rinf)) stop 43
   if (ieee_signaling_ne (-rinf, -rinf)) stop 44
   if (.not. ieee_signaling_ne (rnan, rnan)) stop 45
   if (.not. ieee_signaling_ne (0., 1.)) stop 46
   if (.not. ieee_signaling_ne (0., -1.)) stop 47
   if (.not. ieee_signaling_ne (0., rnan)) stop 48
   if (.not. ieee_signaling_ne (1., rnan)) stop 49
   if (.not. ieee_signaling_ne (0., rinf)) stop 50
   if (.not. ieee_signaling_ne (1., rinf)) stop 51
   if (.not. ieee_signaling_ne (rinf, rnan)) stop 52

   if (ieee_signaling_ne (0.d0, 0.d0)) stop 53
   if (ieee_signaling_ne (0.d0, -0.d0)) stop 54
   if (ieee_signaling_ne (1.d0, 1.d0)) stop 55
   if (ieee_signaling_ne (dinf, dinf)) stop 56
   if (ieee_signaling_ne (-dinf, -dinf)) stop 57
   if (.not. ieee_signaling_ne (dnan, dnan)) stop 58
   if (.not. ieee_signaling_ne (0.d0, 1.d0)) stop 59
   if (.not. ieee_signaling_ne (0.d0, -1.d0)) stop 60
   if (.not. ieee_signaling_ne (0.d0, dnan)) stop 61
   if (.not. ieee_signaling_ne (1.d0, dnan)) stop 62
   if (.not. ieee_signaling_ne (0.d0, dinf)) stop 63
   if (.not. ieee_signaling_ne (1.d0, dinf)) stop 64
   if (.not. ieee_signaling_ne (dinf, dnan)) stop 65

   if (ieee_signaling_ne (0._large, 0._large)) stop 66
   if (ieee_signaling_ne (0._large, -0._large)) stop 67
   if (ieee_signaling_ne (1._large, 1._large)) stop 68
   if (ieee_signaling_ne (linf, linf)) stop 69
   if (ieee_signaling_ne (-linf, -linf)) stop 70
   if (.not. ieee_signaling_ne (lnan, lnan)) stop 71
   if (.not. ieee_signaling_ne (0._large, 1._large)) stop 72
   if (.not. ieee_signaling_ne (0._large, -1._large)) stop 73
   if (.not. ieee_signaling_ne (0._large, lnan)) stop 74
   if (.not. ieee_signaling_ne (1._large, lnan)) stop 75
   if (.not. ieee_signaling_ne (0._large, linf)) stop 76
   if (.not. ieee_signaling_ne (1._large, linf)) stop 77
   if (.not. ieee_signaling_ne (linf, lnan)) stop 78


   if (.not. ieee_signaling_le (0., 0.)) stop 79
   if (.not. ieee_signaling_le (0., -0.)) stop 80
   if (.not. ieee_signaling_le (1., 1.)) stop 81
   if (.not. ieee_signaling_le (rinf, rinf)) stop 82
   if (.not. ieee_signaling_le (-rinf, -rinf)) stop 83
   if (ieee_signaling_le (rnan, rnan)) stop 84
   if (.not. ieee_signaling_le (0., 1.)) stop 85
   if (ieee_signaling_le (0., -1.)) stop 86
   if (ieee_signaling_le (0., rnan)) stop 87
   if (ieee_signaling_le (1., rnan)) stop 88
   if (.not. ieee_signaling_le (0., rinf)) stop 89
   if (.not. ieee_signaling_le (1., rinf)) stop 90
   if (ieee_signaling_le (rinf, rnan)) stop 91

   if (.not. ieee_signaling_le (0.d0, 0.d0)) stop 92
   if (.not. ieee_signaling_le (0.d0, -0.d0)) stop 93
   if (.not. ieee_signaling_le (1.d0, 1.d0)) stop 94
   if (.not. ieee_signaling_le (dinf, dinf)) stop 95
   if (.not. ieee_signaling_le (-dinf, -dinf)) stop 96
   if (ieee_signaling_le (dnan, dnan)) stop 97
   if (.not. ieee_signaling_le (0.d0, 1.d0)) stop 98
   if (ieee_signaling_le (0.d0, -1.d0)) stop 99
   if (ieee_signaling_le (0.d0, dnan)) stop 100
   if (ieee_signaling_le (1.d0, dnan)) stop 101
   if (.not. ieee_signaling_le (0.d0, dinf)) stop 102
   if (.not. ieee_signaling_le (1.d0, dinf)) stop 103
   if (ieee_signaling_le (dinf, dnan)) stop 104

   if (.not. ieee_signaling_le (0._large, 0._large)) stop 105
   if (.not. ieee_signaling_le (0._large, -0._large)) stop 106
   if (.not. ieee_signaling_le (1._large, 1._large)) stop 107
   if (.not. ieee_signaling_le (linf, linf)) stop 108
   if (.not. ieee_signaling_le (-linf, -linf)) stop 109
   if (ieee_signaling_le (lnan, lnan)) stop 110
   if (.not. ieee_signaling_le (0._large, 1._large)) stop 111
   if (ieee_signaling_le (0._large, -1._large)) stop 112
   if (ieee_signaling_le (0._large, lnan)) stop 113
   if (ieee_signaling_le (1._large, lnan)) stop 114
   if (.not. ieee_signaling_le (0._large, linf)) stop 115
   if (.not. ieee_signaling_le (1._large, linf)) stop 116
   if (ieee_signaling_le (linf, lnan)) stop 117


   if (.not. ieee_signaling_ge (0., 0.)) stop 118
   if (.not. ieee_signaling_ge (0., -0.)) stop 119
   if (.not. ieee_signaling_ge (1., 1.)) stop 120
   if (.not. ieee_signaling_ge (rinf, rinf)) stop 121
   if (.not. ieee_signaling_ge (-rinf, -rinf)) stop 122
   if (ieee_signaling_ge (rnan, rnan)) stop 123
   if (ieee_signaling_ge (0., 1.)) stop 124
   if (.not. ieee_signaling_ge (0., -1.)) stop 125
   if (ieee_signaling_ge (0., rnan)) stop 126
   if (ieee_signaling_ge (1., rnan)) stop 127
   if (ieee_signaling_ge (0., rinf)) stop 128
   if (ieee_signaling_ge (1., rinf)) stop 129
   if (ieee_signaling_ge (rinf, rnan)) stop 130

   if (.not. ieee_signaling_ge (0.d0, 0.d0)) stop 131
   if (.not. ieee_signaling_ge (0.d0, -0.d0)) stop 132
   if (.not. ieee_signaling_ge (1.d0, 1.d0)) stop 133
   if (.not. ieee_signaling_ge (dinf, dinf)) stop 134
   if (.not. ieee_signaling_ge (-dinf, -dinf)) stop 135
   if (ieee_signaling_ge (dnan, dnan)) stop 136
   if (ieee_signaling_ge (0.d0, 1.d0)) stop 137
   if (.not. ieee_signaling_ge (0.d0, -1.d0)) stop 138
   if (ieee_signaling_ge (0.d0, dnan)) stop 139
   if (ieee_signaling_ge (1.d0, dnan)) stop 140
   if (ieee_signaling_ge (0.d0, dinf)) stop 141
   if (ieee_signaling_ge (1.d0, dinf)) stop 142
   if (ieee_signaling_ge (dinf, dnan)) stop 143

   if (.not. ieee_signaling_ge (0._large, 0._large)) stop 144
   if (.not. ieee_signaling_ge (0._large, -0._large)) stop 145
   if (.not. ieee_signaling_ge (1._large, 1._large)) stop 146
   if (.not. ieee_signaling_ge (linf, linf)) stop 147
   if (.not. ieee_signaling_ge (-linf, -linf)) stop 148
   if (ieee_signaling_ge (lnan, lnan)) stop 149
   if (ieee_signaling_ge (0._large, 1._large)) stop 150
   if (.not. ieee_signaling_ge (0._large, -1._large)) stop 151
   if (ieee_signaling_ge (0._large, lnan)) stop 152
   if (ieee_signaling_ge (1._large, lnan)) stop 153
   if (ieee_signaling_ge (0._large, linf)) stop 154
   if (ieee_signaling_ge (1._large, linf)) stop 155
   if (ieee_signaling_ge (linf, lnan)) stop 156


   if (ieee_signaling_lt (0., 0.)) stop 157
   if (ieee_signaling_lt (0., -0.)) stop 158
   if (ieee_signaling_lt (1., 1.)) stop 159
   if (ieee_signaling_lt (rinf, rinf)) stop 160
   if (ieee_signaling_lt (-rinf, -rinf)) stop 161
   if (ieee_signaling_lt (rnan, rnan)) stop 162
   if (.not. ieee_signaling_lt (0., 1.)) stop 163
   if (ieee_signaling_lt (0., -1.)) stop 164
   if (ieee_signaling_lt (0., rnan)) stop 165
   if (ieee_signaling_lt (1., rnan)) stop 166
   if (.not. ieee_signaling_lt (0., rinf)) stop 167
   if (.not. ieee_signaling_lt (1., rinf)) stop 168
   if (ieee_signaling_lt (rinf, rnan)) stop 169

   if (ieee_signaling_lt (0.d0, 0.d0)) stop 170
   if (ieee_signaling_lt (0.d0, -0.d0)) stop 171
   if (ieee_signaling_lt (1.d0, 1.d0)) stop 172
   if (ieee_signaling_lt (dinf, dinf)) stop 173
   if (ieee_signaling_lt (-dinf, -dinf)) stop 174
   if (ieee_signaling_lt (dnan, dnan)) stop 175
   if (.not. ieee_signaling_lt (0.d0, 1.d0)) stop 176
   if (ieee_signaling_lt (0.d0, -1.d0)) stop 177
   if (ieee_signaling_lt (0.d0, dnan)) stop 178
   if (ieee_signaling_lt (1.d0, dnan)) stop 179
   if (.not. ieee_signaling_lt (0.d0, dinf)) stop 180
   if (.not. ieee_signaling_lt (1.d0, dinf)) stop 181
   if (ieee_signaling_lt (dinf, dnan)) stop 182

   if (ieee_signaling_lt (0._large, 0._large)) stop 183
   if (ieee_signaling_lt (0._large, -0._large)) stop 184
   if (ieee_signaling_lt (1._large, 1._large)) stop 185
   if (ieee_signaling_lt (linf, linf)) stop 186
   if (ieee_signaling_lt (-linf, -linf)) stop 187
   if (ieee_signaling_lt (lnan, lnan)) stop 188
   if (.not. ieee_signaling_lt (0._large, 1._large)) stop 189
   if (ieee_signaling_lt (0._large, -1._large)) stop 190
   if (ieee_signaling_lt (0._large, lnan)) stop 191
   if (ieee_signaling_lt (1._large, lnan)) stop 192
   if (.not. ieee_signaling_lt (0._large, linf)) stop 193
   if (.not. ieee_signaling_lt (1._large, linf)) stop 194
   if (ieee_signaling_lt (linf, lnan)) stop 195


   if (ieee_signaling_gt (0., 0.)) stop 196
   if (ieee_signaling_gt (0., -0.)) stop 197
   if (ieee_signaling_gt (1., 1.)) stop 198
   if (ieee_signaling_gt (rinf, rinf)) stop 199
   if (ieee_signaling_gt (-rinf, -rinf)) stop 200
   if (ieee_signaling_gt (rnan, rnan)) stop 201
   if (ieee_signaling_gt (0., 1.)) stop 202
   if (.not. ieee_signaling_gt (0., -1.)) stop 203
   if (ieee_signaling_gt (0., rnan)) stop 204
   if (ieee_signaling_gt (1., rnan)) stop 205
   if (ieee_signaling_gt (0., rinf)) stop 206
   if (ieee_signaling_gt (1., rinf)) stop 207
   if (ieee_signaling_gt (rinf, rnan)) stop 208

   if (ieee_signaling_gt (0.d0, 0.d0)) stop 209
   if (ieee_signaling_gt (0.d0, -0.d0)) stop 210
   if (ieee_signaling_gt (1.d0, 1.d0)) stop 211
   if (ieee_signaling_gt (dinf, dinf)) stop 212
   if (ieee_signaling_gt (-dinf, -dinf)) stop 213
   if (ieee_signaling_gt (dnan, dnan)) stop 214
   if (ieee_signaling_gt (0.d0, 1.d0)) stop 215
   if (.not. ieee_signaling_gt (0.d0, -1.d0)) stop 216
   if (ieee_signaling_gt (0.d0, dnan)) stop 217
   if (ieee_signaling_gt (1.d0, dnan)) stop 218
   if (ieee_signaling_gt (0.d0, dinf)) stop 219
   if (ieee_signaling_gt (1.d0, dinf)) stop 220
   if (ieee_signaling_gt (dinf, dnan)) stop 221

   if (ieee_signaling_gt (0._large, 0._large)) stop 222
   if (ieee_signaling_gt (0._large, -0._large)) stop 223
   if (ieee_signaling_gt (1._large, 1._large)) stop 224
   if (ieee_signaling_gt (linf, linf)) stop 225
   if (ieee_signaling_gt (-linf, -linf)) stop 226
   if (ieee_signaling_gt (lnan, lnan)) stop 227
   if (ieee_signaling_gt (0._large, 1._large)) stop 228
   if (.not. ieee_signaling_gt (0._large, -1._large)) stop 229
   if (ieee_signaling_gt (0._large, lnan)) stop 230
   if (ieee_signaling_gt (1._large, lnan)) stop 231
   if (ieee_signaling_gt (0._large, linf)) stop 232
   if (ieee_signaling_gt (1._large, linf)) stop 233
   if (ieee_signaling_gt (linf, lnan)) stop 234

end program foo