mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-01 20:30:28 +02:00
(=, <, max, min): Add tests of bignum/inf combinations.
This commit is contained in:
parent
8742c48b92
commit
adda36ed70
1 changed files with 85 additions and 1 deletions
|
@ -1164,6 +1164,18 @@
|
||||||
(expect-fail (= (- fixnum-min 1) fixnum-min))
|
(expect-fail (= (- fixnum-min 1) fixnum-min))
|
||||||
(expect-fail (= (+ fixnum-max 1) (- fixnum-min 1)))
|
(expect-fail (= (+ fixnum-max 1) (- fixnum-min 1)))
|
||||||
|
|
||||||
|
(pass-if (not (= (ash 1 256) +inf.0)))
|
||||||
|
(pass-if (not (= +inf.0 (ash 1 256))))
|
||||||
|
(pass-if (not (= (ash 1 256) -inf.0)))
|
||||||
|
(pass-if (not (= -inf.0 (ash 1 256))))
|
||||||
|
|
||||||
|
;; in gmp prior to 4.2, mpz_cmp_d ended up treating Inf as 2^1024, make
|
||||||
|
;; sure we've avoided that
|
||||||
|
(pass-if (not (= (ash 1 1024) +inf.0)))
|
||||||
|
(pass-if (not (= +inf.0 (ash 1 1024))))
|
||||||
|
(pass-if (not (= (- (ash 1 1024)) -inf.0)))
|
||||||
|
(pass-if (not (= -inf.0 (- (ash 1 1024)))))
|
||||||
|
|
||||||
(pass-if (not (= +nan.0 +nan.0)))
|
(pass-if (not (= +nan.0 +nan.0)))
|
||||||
(pass-if (not (= 0 +nan.0)))
|
(pass-if (not (= 0 +nan.0)))
|
||||||
(pass-if (not (= +nan.0 0)))
|
(pass-if (not (= +nan.0 0)))
|
||||||
|
@ -1516,6 +1528,26 @@
|
||||||
(pass-if "n = fixnum-min - 1"
|
(pass-if "n = fixnum-min - 1"
|
||||||
(not (< (- fixnum-min 1) (- fixnum-min 1)))))
|
(not (< (- fixnum-min 1) (- fixnum-min 1)))))
|
||||||
|
|
||||||
|
(pass-if (< (ash 1 256) +inf.0))
|
||||||
|
(pass-if (not (< +inf.0 (ash 1 256))))
|
||||||
|
(pass-if (not (< (ash 1 256) -inf.0)))
|
||||||
|
(pass-if (< -inf.0 (ash 1 256)))
|
||||||
|
|
||||||
|
;; in gmp prior to 4.2, mpz_cmp_d ended up treating Inf as 2^1024, make
|
||||||
|
;; sure we've avoided that
|
||||||
|
(pass-if (< (1- (ash 1 1024)) +inf.0))
|
||||||
|
(pass-if (< (ash 1 1024) +inf.0))
|
||||||
|
(pass-if (< (1+ (ash 1 1024)) +inf.0))
|
||||||
|
(pass-if (not (< +inf.0 (1- (ash 1 1024)))))
|
||||||
|
(pass-if (not (< +inf.0 (ash 1 1024))))
|
||||||
|
(pass-if (not (< +inf.0 (1+ (ash 1 1024)))))
|
||||||
|
(pass-if (< -inf.0 (- (1- (ash 1 1024)))))
|
||||||
|
(pass-if (< -inf.0 (- (ash 1 1024))))
|
||||||
|
(pass-if (< -inf.0 (- (1+ (ash 1 1024)))))
|
||||||
|
(pass-if (not (< (- (1- (ash 1 1024))) -inf.0)))
|
||||||
|
(pass-if (not (< (- (ash 1 1024)) -inf.0)))
|
||||||
|
(pass-if (not (< (- (1+ (ash 1 1024))) -inf.0)))
|
||||||
|
|
||||||
(pass-if (not (< +nan.0 +nan.0)))
|
(pass-if (not (< +nan.0 +nan.0)))
|
||||||
(pass-if (not (< 0 +nan.0)))
|
(pass-if (not (< 0 +nan.0)))
|
||||||
(pass-if (not (< +nan.0 0)))
|
(pass-if (not (< +nan.0 0)))
|
||||||
|
@ -1613,6 +1645,35 @@
|
||||||
;;; max
|
;;; max
|
||||||
;;;
|
;;;
|
||||||
|
|
||||||
|
(with-test-prefix "max"
|
||||||
|
(let ((big*2 (* fixnum-max 2))
|
||||||
|
(big*3 (* fixnum-max 3))
|
||||||
|
(big*4 (* fixnum-max 4))
|
||||||
|
(big*5 (* fixnum-max 5)))
|
||||||
|
|
||||||
|
(pass-if (= +inf.0 (max big*5 +inf.0)))
|
||||||
|
(pass-if (= +inf.0 (max +inf.0 big*5)))
|
||||||
|
(pass-if (= big*5 (max big*5 -inf.0)))
|
||||||
|
(pass-if (= big*5 (max -inf.0 big*5))))
|
||||||
|
|
||||||
|
;; in gmp prior to 4.2, mpz_cmp_d ended up treating Inf as 2^1024, make
|
||||||
|
;; sure we've avoided that
|
||||||
|
(for-each (lambda (b)
|
||||||
|
(pass-if (list b +inf.0)
|
||||||
|
(= +inf.0 (max b +inf.0)))
|
||||||
|
(pass-if (list +inf.0 b)
|
||||||
|
(= +inf.0 (max b +inf.0)))
|
||||||
|
(pass-if (list b -inf.0)
|
||||||
|
(= b (max b -inf.0)))
|
||||||
|
(pass-if (list -inf.0 b)
|
||||||
|
(= b (max b -inf.0))))
|
||||||
|
(list (1- (ash 1 1024))
|
||||||
|
(ash 1 1024)
|
||||||
|
(1+ (ash 1 1024))
|
||||||
|
(- (1- (ash 1 1024)))
|
||||||
|
(- (ash 1 1024))
|
||||||
|
(- (1+ (ash 1 1024))))))
|
||||||
|
|
||||||
;;;
|
;;;
|
||||||
;;; min
|
;;; min
|
||||||
;;;
|
;;;
|
||||||
|
@ -1640,7 +1701,30 @@
|
||||||
(pass-if
|
(pass-if
|
||||||
(= (- fixnum-min 1) (min (- fixnum-min 1) 2 4 3 (* 2 fixnum-max))))
|
(= (- fixnum-min 1) (min (- fixnum-min 1) 2 4 3 (* 2 fixnum-max))))
|
||||||
(pass-if
|
(pass-if
|
||||||
(= (- fixnum-min 1) (min 2 4 3 (* 2 fixnum-max) (- fixnum-min 1))))))
|
(= (- fixnum-min 1) (min 2 4 3 (* 2 fixnum-max) (- fixnum-min 1))))
|
||||||
|
|
||||||
|
(pass-if (= big*5 (min big*5 +inf.0)))
|
||||||
|
(pass-if (= big*5 (min +inf.0 big*5)))
|
||||||
|
(pass-if (= -inf.0 (min big*5 -inf.0)))
|
||||||
|
(pass-if (= -inf.0 (min -inf.0 big*5))))
|
||||||
|
|
||||||
|
;; in gmp prior to 4.2, mpz_cmp_d ended up treating Inf as 2^1024, make
|
||||||
|
;; sure we've avoided that
|
||||||
|
(for-each (lambda (b)
|
||||||
|
(pass-if (list b +inf.0)
|
||||||
|
(= b (min b +inf.0)))
|
||||||
|
(pass-if (list +inf.0 b)
|
||||||
|
(= b (min b +inf.0)))
|
||||||
|
(pass-if (list b -inf.0)
|
||||||
|
(= -inf.0 (min b -inf.0)))
|
||||||
|
(pass-if (list -inf.0 b)
|
||||||
|
(= -inf.0 (min b -inf.0))))
|
||||||
|
(list (1- (ash 1 1024))
|
||||||
|
(ash 1 1024)
|
||||||
|
(1+ (ash 1 1024))
|
||||||
|
(- (1- (ash 1 1024)))
|
||||||
|
(- (ash 1 1024))
|
||||||
|
(- (1+ (ash 1 1024))))))
|
||||||
|
|
||||||
;;;
|
;;;
|
||||||
;;; +
|
;;; +
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue