1 ---------------------------- tests NaNs and Infs -------------------
2 0. ------------------- print NaNs and Infs
4 2. +INF float: Infinity
5 3. -INF float: -Infinity
7 5. +INF double: Infinity
8 6. -INF double: -Infinity
9 7. ------------------- test zero division
10 8. 0 / 0 = NaNQ float: NaN
11 9. + / 0 = +INF float: Infinity
12 10. - / 0 = -INF float: -Infinity
13 11. 0 / 0 = NaNQ double: NaN
14 12. + / 0 = +INF double: Infinity
15 13. - / 0 = -INF double: -Infinity
16 14. ------------------- test conversions
17 15. convert NaNQ (NaN,NaN) to int: 0
18 16. convert NaNQ (NaN,NaN) to int: 0
19 17. convert NaNQ (NaN,NaN) to long: 0
20 18. convert NaNQ (NaN,NaN) to long: 0
21 19. convert +INF (Infinity,Infinity) to int: 2147483647
22 20. convert +INF (Infinity,Infinity) to int: 2147483647
23 21. convert +INF (Infinity,Infinity) to long: 9223372036854775807
24 22. convert +INF (Infinity,Infinity) to long: 9223372036854775807
25 23. convert -INF (-Infinity,-Infinity) to int: -2147483648
26 24. convert -INF (-Infinity,-Infinity) to int: -2147483648
27 25. convert -INF (-Infinity,-Infinity) to long: -9223372036854775808
28 26. convert -INF (-Infinity,-Infinity) to long: -9223372036854775808
29 27. convert MAX (3.4028235E38,1.7976931348623157E308) to int: 2147483647
30 28. convert MAX (3.4028235E38,1.7976931348623157E308) to int: 2147483647
31 29. convert MAX (3.4028235E38,1.7976931348623157E308) to long: 9223372036854775807
32 30. convert MAX (3.4028235E38,1.7976931348623157E308) to long: 9223372036854775807
33 31. convert MIN (1.4E-45,4.9E-324) to int: 0
34 32. convert MIN (1.4E-45,4.9E-324) to int: 0
35 33. convert MIN (1.4E-45,4.9E-324) to long: 0
36 34. convert MIN (1.4E-45,4.9E-324) to long: 0
37 35. convert MAXINT-1 (2.14748365E9,2.147483646E9) to int: 2147483647
38 36. convert MAXINT-1 (2.14748365E9,2.147483646E9) to int: 2147483646
39 37. convert MAXINT-1 (2.14748365E9,2.147483646E9) to long: 2147483648
40 38. convert MAXINT-1 (2.14748365E9,2.147483646E9) to long: 2147483646
41 39. convert MAXINT+0 (2.14748365E9,2.147483647E9) to int: 2147483647
42 40. convert MAXINT+0 (2.14748365E9,2.147483647E9) to int: 2147483647
43 41. convert MAXINT+0 (2.14748365E9,2.147483647E9) to long: 2147483648
44 42. convert MAXINT+0 (2.14748365E9,2.147483647E9) to long: 2147483647
45 43. convert MAXINT+1 (2.14748365E9,2.147483648E9) to int: 2147483647
46 44. convert MAXINT+1 (2.14748365E9,2.147483648E9) to int: 2147483647
47 45. convert MAXINT+1 (2.14748365E9,2.147483648E9) to long: 2147483648
48 46. convert MAXINT+1 (2.14748365E9,2.147483648E9) to long: 2147483648
49 47. convert -MAXINT+1 (-2.14748365E9,-2.147483647E9) to int: -2147483648
50 48. convert -MAXINT+1 (-2.14748365E9,-2.147483647E9) to int: -2147483647
51 49. convert -MAXINT+1 (-2.14748365E9,-2.147483647E9) to long: -2147483648
52 50. convert -MAXINT+1 (-2.14748365E9,-2.147483647E9) to long: -2147483647
53 51. convert -MAXINT+0 (-2.14748365E9,-2.147483648E9) to int: -2147483648
54 52. convert -MAXINT+0 (-2.14748365E9,-2.147483648E9) to int: -2147483648
55 53. convert -MAXINT+0 (-2.14748365E9,-2.147483648E9) to long: -2147483648
56 54. convert -MAXINT+0 (-2.14748365E9,-2.147483648E9) to long: -2147483648
57 55. convert -MAXINT-1 (-2.14748365E9,-2.147483649E9) to int: -2147483648
58 56. convert -MAXINT-1 (-2.14748365E9,-2.147483649E9) to int: -2147483648
59 57. convert -MAXINT-1 (-2.14748365E9,-2.147483649E9) to long: -2147483648
60 58. convert -MAXINT-1 (-2.14748365E9,-2.147483649E9) to long: -2147483649
61 59. convert MAXLNG-1 (9.223372E18,9.223372036854776E18) to int: 2147483647
62 60. convert MAXLNG-1 (9.223372E18,9.223372036854776E18) to int: 2147483647
63 61. convert MAXLNG-1 (9.223372E18,9.223372036854776E18) to long: 9223372036854775807
64 62. convert MAXLNG-1 (9.223372E18,9.223372036854776E18) to long: 9223372036854775807
65 63. convert MAXLNG+0 (9.223372E18,9.223372036854776E18) to int: 2147483647
66 64. convert MAXLNG+0 (9.223372E18,9.223372036854776E18) to int: 2147483647
67 65. convert MAXLNG+0 (9.223372E18,9.223372036854776E18) to long: 9223372036854775807
68 66. convert MAXLNG+0 (9.223372E18,9.223372036854776E18) to long: 9223372036854775807
69 67. convert MAXLNG+1 (9.223372E18,9.223372036854776E18) to int: 2147483647
70 68. convert MAXLNG+1 (9.223372E18,9.223372036854776E18) to int: 2147483647
71 69. convert MAXLNG+1 (9.223372E18,9.223372036854776E18) to long: 9223372036854775807
72 70. convert MAXLNG+1 (9.223372E18,9.223372036854776E18) to long: 9223372036854775807
73 71. convert -MAXLNG+1 (-9.223372E18,-9.223372036854776E18) to int: -2147483648
74 72. convert -MAXLNG+1 (-9.223372E18,-9.223372036854776E18) to int: -2147483648
75 73. convert -MAXLNG+1 (-9.223372E18,-9.223372036854776E18) to long: -9223372036854775808
76 74. convert -MAXLNG+1 (-9.223372E18,-9.223372036854776E18) to long: -9223372036854775808
77 75. convert -MAXLNG+0 (-9.223372E18,-9.223372036854776E18) to int: -2147483648
78 76. convert -MAXLNG+0 (-9.223372E18,-9.223372036854776E18) to int: -2147483648
79 77. convert -MAXLNG+0 (-9.223372E18,-9.223372036854776E18) to long: -9223372036854775808
80 78. convert -MAXLNG+0 (-9.223372E18,-9.223372036854776E18) to long: -9223372036854775808
81 79. convert -MAXLNG-1 (-9.223372E18,-9.223372036854776E18) to int: -2147483648
82 80. convert -MAXLNG-1 (-9.223372E18,-9.223372036854776E18) to int: -2147483648
83 81. convert -MAXLNG-1 (-9.223372E18,-9.223372036854776E18) to long: -9223372036854775808
84 82. convert -MAXLNG-1 (-9.223372E18,-9.223372036854776E18) to long: -9223372036854775808
85 83. ------------------- test NaNQ op value
86 84. NaNQ + 5.0 = float: NaN
87 85. NaNQ - 5.0 = float: NaN
88 86. NaNQ * 5.0 = float: NaN
89 87. NaNQ / 5.0 = float: NaN
90 88. NaNQ % 5.0 = float: NaN
91 89. NaNQ + 5.0 = double: NaN
92 90. NaNQ - 5.0 = double: NaN
93 91. NaNQ * 5.0 = double: NaN
94 92. NaNQ / 5.0 = double: NaN
95 93. NaNQ % 5.0 = double: NaN
96 94. (NaNQ == 5.0) = false
97 95. (NaNQ != 5.0) = true
98 96. (NaNQ < 5.0) = false
99 97. (NaNQ <= 5.0) = false
100 98. (NaNQ > 5.0) = false
101 99. (NaNQ >= 5.0) = false
102 100. !(NaNQ == 5.0) = true
103 101. !(NaNQ != 5.0) = false
104 102. !(NaNQ < 5.0) = true
105 103. !(NaNQ <= 5.0) = true
106 104. !(NaNQ > 5.0) = true
107 105. !(NaNQ >= 5.0) = true
108 106. (NaNQ == 5.0) = false
109 107. (NaNQ != 5.0) = true
110 108. (NaNQ < 5.0) = false
111 109. (NaNQ <= 5.0) = false
112 110. (NaNQ > 5.0) = false
113 111. (NaNQ >= 5.0) = false
114 112. !(NaNQ == 5.0) = true
115 113. !(NaNQ != 5.0) = false
116 114. !(NaNQ < 5.0) = true
117 115. !(NaNQ <= 5.0) = true
118 116. !(NaNQ > 5.0) = true
119 117. !(NaNQ >= 5.0) = true
120 118. ------------------- test value op NaNQ
121 119. 5.0 + NaNQ = float: NaN
122 120. 5.0 - NaNQ = float: NaN
123 121. 5.0 * NaNQ = float: NaN
124 122. 5.0 / NaNQ = float: NaN
125 123. 5.0 % NaNQ = float: NaN
126 124. 5.0 + NaNQ = double: NaN
127 125. 5.0 - NaNQ = double: NaN
128 126. 5.0 * NaNQ = double: NaN
129 127. 5.0 / NaNQ = double: NaN
130 128. 5.0 % NaNQ = double: NaN
131 129. (5.0 == NaNQ) = false
132 130. (5.0 != NaNQ) = true
133 131. (5.0 < NaNQ) = false
134 132. (5.0 <= NaNQ) = false
135 133. (5.0 > NaNQ) = false
136 134. (5.0 >= NaNQ) = false
137 135. !(5.0 == NaNQ) = true
138 136. !(5.0 != NaNQ) = false
139 137. !(5.0 < NaNQ) = true
140 138. !(5.0 <= NaNQ) = true
141 139. !(5.0 > NaNQ) = true
142 140. !(5.0 >= NaNQ) = true
143 141. (5.0 == NaNQ) = false
144 142. (5.0 != NaNQ) = true
145 143. (5.0 < NaNQ) = false
146 144. (5.0 <= NaNQ) = false
147 145. (5.0 > NaNQ) = false
148 146. (5.0 >= NaNQ) = false
149 147. !(5.0 == NaNQ) = true
150 148. !(5.0 != NaNQ) = false
151 149. !(5.0 < NaNQ) = true
152 150. !(5.0 <= NaNQ) = true
153 151. !(5.0 > NaNQ) = true
154 152. !(5.0 >= NaNQ) = true
155 153. ------------------- test +INF op value
156 154. +INF + 5.0 = float: Infinity
157 155. +INF - 5.0 = float: Infinity
158 156. +INF * 5.0 = float: Infinity
159 157. +INF / 5.0 = float: Infinity
160 158. +INF % 5.0 = float: NaN
161 159. +INF + 5.0 = double: Infinity
162 160. +INF - 5.0 = double: Infinity
163 161. +INF * 5.0 = double: Infinity
164 162. +INF / 5.0 = double: Infinity
165 163. +INF % 5.0 = double: NaN
166 164. (+INF == 5.0) = false
167 165. (+INF != 5.0) = true
168 166. (+INF < 5.0) = false
169 167. (+INF <= 5.0) = false
170 168. (+INF > 5.0) = true
171 169. (+INF >= 5.0) = true
172 170. !(+INF == 5.0) = true
173 171. !(+INF != 5.0) = false
174 172. !(+INF < 5.0) = true
175 173. !(+INF <= 5.0) = true
176 174. !(+INF > 5.0) = false
177 175. !(+INF >= 5.0) = false
178 176. (+INF == 5.0) = false
179 177. (+INF != 5.0) = true
180 178. (+INF < 5.0) = false
181 179. (+INF <= 5.0) = false
182 180. (+INF > 5.0) = true
183 181. (+INF >= 5.0) = true
184 182. !(+INF == 5.0) = true
185 183. !(+INF != 5.0) = false
186 184. !(+INF < 5.0) = true
187 185. !(+INF <= 5.0) = true
188 186. !(+INF > 5.0) = false
189 187. !(+INF >= 5.0) = false
190 188. ------------------- test +INF op value
191 189. 5.0 + +INF = float: Infinity
192 190. 5.0 - +INF = float: -Infinity
193 191. 5.0 * +INF = float: Infinity
194 192. 5.0 / +INF = float: 0.0
195 193. 5.0 % +INF = float: 5.0
196 194. 5.0 + +INF = double: Infinity
197 195. 5.0 - +INF = double: -Infinity
198 196. 5.0 * +INF = double: Infinity
199 197. 5.0 / +INF = double: 0.0
200 198. 5.0 % +INF = double: 5.0
201 199. (5.0 == +INF) = false
202 200. (5.0 != +INF) = true
203 201. (5.0 < +INF) = true
204 202. (5.0 <= +INF) = true
205 203. (5.0 > +INF) = false
206 204. (5.0 >= +INF) = false
207 205. !(5.0 == +INF) = true
208 206. !(5.0 != +INF) = false
209 207. !(5.0 < +INF) = false
210 208. !(5.0 <= +INF) = false
211 209. !(5.0 > +INF) = true
212 210. !(5.0 >= +INF) = true
213 211. (5.0 == +INF) = false
214 212. (5.0 != +INF) = true
215 213. (5.0 < +INF) = true
216 214. (5.0 <= +INF) = true
217 215. (5.0 > +INF) = false
218 216. (5.0 >= +INF) = false
219 217. !(5.0 == +INF) = true
220 218. !(5.0 != +INF) = false
221 219. !(5.0 < +INF) = false
222 220. !(5.0 <= +INF) = false
223 221. !(5.0 > +INF) = true
224 222. !(5.0 >= +INF) = true
225 223. ------------------- test -INF op value
226 224. -INF + 5.0 = float: -Infinity
227 225. -INF - 5.0 = float: -Infinity
228 226. -INF * 5.0 = float: -Infinity
229 227. -INF / 5.0 = float: -Infinity
230 228. -INF % 5.0 = float: NaN
231 229. -INF + 5.0 = double: -Infinity
232 230. -INF - 5.0 = double: -Infinity
233 231. -INF * 5.0 = double: -Infinity
234 232. -INF / 5.0 = double: -Infinity
235 233. -INF % 5.0 = double: NaN
236 234. (-INF == 5.0) = false
237 235. (-INF != 5.0) = true
238 236. (-INF < 5.0) = true
239 237. (-INF <= 5.0) = true
240 238. (-INF > 5.0) = false
241 239. (-INF >= 5.0) = false
242 240. !(-INF == 5.0) = true
243 241. !(-INF != 5.0) = false
244 242. !(-INF < 5.0) = false
245 243. !(-INF <= 5.0) = false
246 244. !(-INF > 5.0) = true
247 245. !(-INF >= 5.0) = true
248 246. (-INF == 5.0) = false
249 247. (-INF != 5.0) = true
250 248. (-INF < 5.0) = true
251 249. (-INF <= 5.0) = true
252 250. (-INF > 5.0) = false
253 251. (-INF >= 5.0) = false
254 252. !(-INF == 5.0) = true
255 253. !(-INF != 5.0) = false
256 254. !(-INF < 5.0) = false
257 255. !(-INF <= 5.0) = false
258 256. !(-INF > 5.0) = true
259 257. !(-INF >= 5.0) = true
260 258. ------------------- test -INF op value
261 259. 5.0 + -INF = float: -Infinity
262 260. 5.0 - -INF = float: Infinity
263 261. 5.0 * -INF = float: -Infinity
264 262. 5.0 / -INF = float: -0.0
265 263. 5.0 % -INF = float: 5.0
266 264. 5.0 + -INF = double: -Infinity
267 265. 5.0 - -INF = double: Infinity
268 266. 5.0 * -INF = double: -Infinity
269 267. 5.0 / -INF = double: -0.0
270 268. 5.0 % -INF = double: 5.0
271 269. (5.0 == -INF) = false
272 270. (5.0 != -INF) = true
273 271. (5.0 < -INF) = false
274 272. (5.0 <= -INF) = false
275 273. (5.0 > -INF) = true
276 274. (5.0 >= -INF) = true
277 275. !(5.0 == -INF) = true
278 276. !(5.0 != -INF) = false
279 277. !(5.0 < -INF) = true
280 278. !(5.0 <= -INF) = true
281 279. !(5.0 > -INF) = false
282 280. !(5.0 >= -INF) = false
283 281. (5.0 == -INF) = false
284 282. (5.0 != -INF) = true
285 283. (5.0 < -INF) = false
286 284. (5.0 <= -INF) = false
287 285. (5.0 > -INF) = true
288 286. (5.0 >= -INF) = true
289 287. !(5.0 == -INF) = true
290 288. !(5.0 != -INF) = false
291 289. !(5.0 < -INF) = true
292 290. !(5.0 <= -INF) = true
293 291. !(5.0 > -INF) = false
294 292. !(5.0 >= -INF) = false
295 293. ------------------- test MAX op value
296 294. MAX + 5.0 = float: 3.4028235E38
297 295. MAX - 5.0 = float: 3.4028235E38
298 296. MAX * 5.0 = float: Infinity
299 297. MAX / 5.0 = float: 6.805647E37
300 298. MAX % 5.0 = float: 0.0
301 299. MAX + 5.0 = double: 1.7976931348623157E308
302 300. MAX - 5.0 = double: 1.7976931348623157E308
303 301. MAX * 5.0 = double: Infinity
304 302. MAX / 5.0 = double: 3.5953862697246315E307
305 303. MAX % 5.0 = double: 3.0
306 304. ------------------- test value op MAX
307 305. 5.0 + MAX = float: 3.4028235E38
308 306. 5.0 - MAX = float: -3.4028235E38
309 307. 5.0 * MAX = float: Infinity
310 308. 5.0 / MAX = float: 1.4693681E-38
311 309. 5.0 % MAX = float: 5.0
312 310. 5.0 + MAX = double: 1.7976931348623157E308
313 311. 5.0 - MAX = double: -1.7976931348623157E308
314 312. 5.0 * MAX = double: Infinity
315 313. 5.0 / MAX = double: 2.781342323134002E-308
316 314. 5.0 % MAX = double: 5.0
317 315. ------------------- test MIN op value
318 316. MIN + 5.0 = float: 5.0
319 317. MIN - 5.0 = float: -5.0
320 318. MIN * 5.0 = float: 7.0E-45
321 319. MIN / 5.0 = float: 0.0
322 320. MIN % 5.0 = float: 1.4E-45
323 321. MIN + 5.0 = double: 5.0
324 322. MIN - 5.0 = double: -5.0
325 323. MIN * 5.0 = double: 2.5E-323
326 324. MIN / 5.0 = double: 0.0
327 325. MIN % 5.0 = double: 4.9E-324
328 326. ------------------- test value op MIN
329 327. 5.0 + MIN = float: 5.0
330 328. 5.0 - MIN = float: 5.0
331 329. 5.0 * MIN = float: 7.0E-45
332 330. 5.0 / MIN = float: Infinity
333 331. 5.0 % MIN = float: 0.0
334 332. 5.0 + MIN = double: 5.0
335 333. 5.0 - MIN = double: 5.0
336 334. 5.0 * MIN = double: 2.5E-323
337 335. 5.0 / MIN = double: Infinity
338 336. 5.0 % MIN = double: 0.0