123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223 |
- ; Adapted from the R6RS reference implementation by Harald Glab-Phlak, which is:
- ; Copyright 2007 William D Clinger.
- ; Permission to copy this software, in whole or in part, to use this
- ; software for any lawful purpose, and to redistribute this software
- ; is granted subject to the restriction that all copies made of this
- ; software must include this copyright notice in full.
- ;
- ; I also request that you send me a copy of any improvements that you
- ; make to this software so that they may be incorporated within it to
- ; the benefit of the Scheme community.
- (define-test-case ieee/heavy-test ieee-bytevectors-tests
- (letrec ((roundtrip
- (lambda (x getter setter! k endness)
- (let ((b (make-bytevector 400)))
- (setter! b k x endness)
- (check (getter b k endness) => x)))))
- (roundtrip
- +inf.0
- bytevector-ieee-single-ref bytevector-ieee-single-set! 0 (endianness big))
-
- (roundtrip
- -inf.0
- bytevector-ieee-single-ref bytevector-ieee-single-set! 0 (endianness big))
-
- (roundtrip
- 1e10
- bytevector-ieee-single-ref bytevector-ieee-single-set! 0 (endianness little))
-
- (roundtrip
- -0.2822580337524414
- bytevector-ieee-single-ref bytevector-ieee-single-set! 1 (endianness big))
- (roundtrip
- 1e10
- bytevector-ieee-single-ref bytevector-ieee-single-set! 0 (endianness big))
- (roundtrip
- +inf.0
- bytevector-ieee-single-ref bytevector-ieee-single-set! 1 (endianness big))
- (roundtrip
- -inf.0
- bytevector-ieee-single-ref bytevector-ieee-single-set! 1 (endianness big))
-
- (roundtrip
- 1e10
- bytevector-ieee-single-ref bytevector-ieee-single-set! 1 (endianness big))
-
-
- (roundtrip
- -0.2822580337524414
- bytevector-ieee-single-ref bytevector-ieee-single-set! 1 (endianness big))
-
- (roundtrip
- +inf.0
- bytevector-ieee-single-ref bytevector-ieee-single-set! 1 (endianness little))
- (roundtrip
- -inf.0
- bytevector-ieee-single-ref bytevector-ieee-single-set! 1 (endianness little))
-
- (roundtrip
- 1e10
- bytevector-ieee-single-ref bytevector-ieee-single-set! 1 (endianness little))
-
- (roundtrip
- -0.2822580337524414
- bytevector-ieee-single-ref bytevector-ieee-single-set! 1 (endianness little))
-
- (roundtrip
- +inf.0
- bytevector-ieee-single-ref bytevector-ieee-single-set! 2 (endianness big))
- (roundtrip
- -inf.0
- bytevector-ieee-single-ref bytevector-ieee-single-set! 2 (endianness big))
- (roundtrip
- 1e10
- bytevector-ieee-single-ref bytevector-ieee-single-set! 2 (endianness big))
- (roundtrip
- -0.2822580337524414
- bytevector-ieee-single-ref bytevector-ieee-single-set! 2 (endianness big))
- (roundtrip
- +inf.0
- bytevector-ieee-single-ref bytevector-ieee-single-set! 2 (endianness little))
- (roundtrip
- -inf.0
- bytevector-ieee-single-ref bytevector-ieee-single-set! 2 (endianness little))
- (roundtrip
- 1e10
- bytevector-ieee-single-ref bytevector-ieee-single-set! 2 (endianness little))
- ;; Double precision, offset 0, big-endian
- (roundtrip
- +inf.0
- bytevector-ieee-double-ref bytevector-ieee-double-set! 0 (endianness big))
-
- (roundtrip
- -inf.0
- bytevector-ieee-double-ref bytevector-ieee-double-set! 0 (endianness big))
-
- (roundtrip
- 1e10
- bytevector-ieee-double-ref bytevector-ieee-double-set! 0 (endianness big))
-
- (roundtrip
- -0.2822580337524414
- bytevector-ieee-double-ref bytevector-ieee-double-set! 0 (endianness big))
- ;; Double precision, offset 0, little-endian
- (roundtrip
- +inf.0
- bytevector-ieee-double-ref bytevector-ieee-double-set! 0 (endianness little))
-
- (roundtrip
- -inf.0
- bytevector-ieee-double-ref bytevector-ieee-double-set! 0 (endianness little))
-
- (roundtrip
- 1e10
- bytevector-ieee-double-ref bytevector-ieee-double-set! 0 (endianness little))
-
- (roundtrip
- -0.2822580337524414
- bytevector-ieee-double-ref bytevector-ieee-double-set! 0 (endianness little))
- ;; Double precision, offset 1, big-endian
- (roundtrip
- +inf.0
- bytevector-ieee-double-ref bytevector-ieee-double-set! 1 (endianness big))
- (roundtrip
- -inf.0
- bytevector-ieee-double-ref bytevector-ieee-double-set! 1 (endianness big))
-
- (roundtrip
- 1e10
- bytevector-ieee-double-ref bytevector-ieee-double-set! 1 (endianness big))
-
- (roundtrip
- -0.2822580337524414
- bytevector-ieee-double-ref bytevector-ieee-double-set! 1 (endianness big))
- ;; Double precision, offset 1, little-endian
- (roundtrip
- +inf.0
- bytevector-ieee-double-ref bytevector-ieee-double-set! 1 (endianness little))
-
- (roundtrip
- -inf.0
- bytevector-ieee-double-ref bytevector-ieee-double-set! 1 (endianness little))
-
- (roundtrip
- -0.2822580337524414
- bytevector-ieee-double-ref bytevector-ieee-double-set! 2 (endianness big))
- ;; Double precision, offset 2, little-endian
-
- (roundtrip
- +inf.0
- bytevector-ieee-double-ref bytevector-ieee-double-set! 2 (endianness little))
-
- (roundtrip
- -inf.0
- bytevector-ieee-double-ref bytevector-ieee-double-set! 2 (endianness little))
-
- (roundtrip
- 1e10
- bytevector-ieee-double-ref bytevector-ieee-double-set! 2 (endianness little))
-
- (roundtrip
- -0.2822580337524414
- bytevector-ieee-double-ref bytevector-ieee-double-set! 2 (endianness little))
-
- ;; Double precision, offset 3, big-endian
-
- (roundtrip
- +inf.0
- bytevector-ieee-double-ref bytevector-ieee-double-set! 3 (endianness big))
- (roundtrip
- -inf.0
- bytevector-ieee-double-ref bytevector-ieee-double-set! 3 (endianness big))
- (roundtrip
- 1e10
- bytevector-ieee-double-ref bytevector-ieee-double-set! 3 (endianness big))
- (roundtrip
- -0.2822580337524414
- bytevector-ieee-double-ref bytevector-ieee-double-set! 3 (endianness big))
- ;; Double precision, offset 3, little-endian
-
- (roundtrip
- +inf.0
- bytevector-ieee-double-ref bytevector-ieee-double-set! 3 (endianness little))
- (roundtrip
- -inf.0
- bytevector-ieee-double-ref bytevector-ieee-double-set! 3 (endianness little))
-
- (roundtrip
- 1e10
- bytevector-ieee-double-ref bytevector-ieee-double-set! 3 (endianness little))
- (roundtrip
- -0.2822580337524414
- bytevector-ieee-double-ref bytevector-ieee-double-set! 3 (endianness little))))
|