| ! { 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 |