2 ;;; Tests for floating-point conversions
4 ;;;--------------------------------------------------------------------------
7 ;; Some easy special cases.
21 ;; Check that we round at the right bit.
53 ;; Check rounding of multi-word fractions.
59 m = ffffffff ffffffff fff00000 00000000
62 mm = ffffffff ffffffff fff00000
69 m = ffffffff fffeffff fff00000 00000001
72 mm = ffffffff fffeffff fff00000
79 m = ffffffff ffffffff ffe80000 00000000
82 mm = ffffffff ffffffff ffe00000
89 m = ffffffff fffeffff ffe80000 00000001
92 mm = ffffffff fffeffff fff00000
99 m = ffffffff fffeffff fff80000 00000000
102 mm = ffffffff ffff0000 00000000
105 ;; Check carry up to next exponent.
111 m = ffffffff ffffffff fff80000 00000000
114 mm = 80000000 00000000 00000000
117 ;; Check rounding modes.
159 ;; Check inexactness detection.
181 ;; Check rounding at word boundaries.
187 m = 80000001 00000001
197 m = 80000000 80000000
207 m = 80000000 80000001
217 m = 80000001 80000000
223 ;;;--------------------------------------------------------------------------
224 ;;; IEEE conversions.
228 ;; Check NaN truncation.
232 m = 090cad8d 8de42000 00000000
233 z = 7ff84865 6c6c6f21
238 m = 090cad8d 8de43000
239 z = 00000000 00000000
244 m = 090cad8d 8de42000 00000001
245 z = 00000000 00000000
251 m = 090cad8d 8de43fff
252 z = 7ff84865 6c6c6f21
255 ;; Check subnormal underflow.
261 z = 00000000 00000001
264 errmask = UFLOW | INEXACT
268 z = 00000000 00000000
269 err = UFLOW | INEXACT
272 errmask = UFLOW | INEXACT
276 z = 00000000 00000001
280 errmask = UFLOW | INEXACT
284 z = 00000000 00000000
285 err = UFLOW | INEXACT
287 ;; Check ordinary rounding.
292 m = 22222222 22223800
293 z = bfe44444 44444447
299 m = 22222222 22223801
300 z = 00000000 00000000
307 m = 22222222 22223801
308 z = bfe44444 44444447
315 m = 22222222 22223bff
316 z = bfe44444 44444447
323 m = 22222222 22223c00
324 z = bfe44444 44444448
331 m = 22222222 22223fff
332 z = bfe44444 44444448
339 m = 22222222 22223fff
340 z = bfe44444 44444447
343 ;; Check overflow and infinity.
345 errmask = INEXACT | OFLOW
348 m = ffffffff fffff800
349 z = 7fefffff ffffffff
353 errmask = INEXACT | OFLOW
356 m = ffffffff fffff801
357 z = 7fefffff ffffffff
361 errmask = INEXACT | OFLOW
364 m = ffffffff fffffbff
365 z = 7fefffff ffffffff
369 errmask = INEXACT | OFLOW
372 m = ffffffff fffffc00
373 z = 7ff00000 00000000
374 err = INEXACT | OFLOW
377 errmask = INEXACT | OFLOW
381 z = 7fefffff ffffffff
382 err = INEXACT | OFLOW
386 ;; This was a randomized test that caught a bug.
389 m = cd1c3727 b1c7bb96 c3668568
390 z = d12e9a38 6e4f638f 772d86cd 0ad00000
392 ;;;--------------------------------------------------------------------------
393 ;;; Native format conversions.
414 m = a0000000 00000000
421 z = 6.2831854820251465
492 m = a0000000 00000000
498 m = c90fdaa2 2168c000
499 z = 6.283185307179586
524 m = a0000000 00000000
527 x = 6.283185307179586
530 m = c90fdaa2 2168c000
548 m = 00000000 00000000 ; maybe
551 ;;;--------------------------------------------------------------------------