1646 |
;;; |
;;; |
1647 |
|
|
1648 |
(with-test-prefix "max" |
(with-test-prefix "max" |
1649 |
|
(pass-if (= 456.0 (max 123.0 456.0))) |
1650 |
|
(pass-if (= 456.0 (max 456.0 123.0))) |
1651 |
|
|
1652 |
(let ((big*2 (* fixnum-max 2)) |
(let ((big*2 (* fixnum-max 2)) |
1653 |
(big*3 (* fixnum-max 3)) |
(big*3 (* fixnum-max 3)) |
1654 |
(big*4 (* fixnum-max 4)) |
(big*4 (* fixnum-max 4)) |
1657 |
(pass-if (= +inf.0 (max big*5 +inf.0))) |
(pass-if (= +inf.0 (max big*5 +inf.0))) |
1658 |
(pass-if (= +inf.0 (max +inf.0 big*5))) |
(pass-if (= +inf.0 (max +inf.0 big*5))) |
1659 |
(pass-if (= big*5 (max big*5 -inf.0))) |
(pass-if (= big*5 (max big*5 -inf.0))) |
1660 |
(pass-if (= big*5 (max -inf.0 big*5)))) |
(pass-if (= big*5 (max -inf.0 big*5))) |
1661 |
|
|
1662 |
|
(pass-if (nan? (max 123 +nan.0))) |
1663 |
|
(pass-if (nan? (max big*5 +nan.0))) |
1664 |
|
(pass-if (nan? (max 123.0 +nan.0))) |
1665 |
|
(pass-if (nan? (max +nan.0 123))) |
1666 |
|
(pass-if (nan? (max +nan.0 big*5))) |
1667 |
|
(pass-if (nan? (max +nan.0 123.0))) |
1668 |
|
(pass-if (nan? (max +nan.0 +nan.0)))) |
1669 |
|
|
1670 |
;; in gmp prior to 4.2, mpz_cmp_d ended up treating Inf as 2^1024, make |
;; in gmp prior to 4.2, mpz_cmp_d ended up treating Inf as 2^1024, make |
1671 |
;; sure we've avoided that |
;; sure we've avoided that |
1683 |
(1+ (ash 1 1024)) |
(1+ (ash 1 1024)) |
1684 |
(- (1- (ash 1 1024))) |
(- (1- (ash 1 1024))) |
1685 |
(- (ash 1 1024)) |
(- (ash 1 1024)) |
1686 |
(- (1+ (ash 1 1024)))))) |
(- (1+ (ash 1 1024))))) |
1687 |
|
|
1688 |
|
;; in gmp prior to 4.2, mpz_cmp_d ended up treating NaN as 3*2^1023, make |
1689 |
|
;; sure we've avoided that |
1690 |
|
(pass-if (nan? (max (ash 1 2048) +nan.0))) |
1691 |
|
(pass-if (nan? (max +nan.0 (ash 1 2048))))) |
1692 |
|
|
1693 |
;;; |
;;; |
1694 |
;;; min |
;;; min |
1697 |
;; FIXME: unfinished... |
;; FIXME: unfinished... |
1698 |
|
|
1699 |
(with-test-prefix "min" |
(with-test-prefix "min" |
1700 |
|
(pass-if (= 123.0 (min 123.0 456.0))) |
1701 |
|
(pass-if (= 123.0 (min 456.0 123.0))) |
1702 |
|
|
1703 |
(let ((big*2 (* fixnum-max 2)) |
(let ((big*2 (* fixnum-max 2)) |
1704 |
(big*3 (* fixnum-max 3)) |
(big*3 (* fixnum-max 3)) |
1705 |
(big*4 (* fixnum-max 4)) |
(big*4 (* fixnum-max 4)) |
1725 |
(pass-if (= big*5 (min big*5 +inf.0))) |
(pass-if (= big*5 (min big*5 +inf.0))) |
1726 |
(pass-if (= big*5 (min +inf.0 big*5))) |
(pass-if (= big*5 (min +inf.0 big*5))) |
1727 |
(pass-if (= -inf.0 (min big*5 -inf.0))) |
(pass-if (= -inf.0 (min big*5 -inf.0))) |
1728 |
(pass-if (= -inf.0 (min -inf.0 big*5)))) |
(pass-if (= -inf.0 (min -inf.0 big*5))) |
1729 |
|
|
1730 |
|
(pass-if (nan? (min 123 +nan.0))) |
1731 |
|
(pass-if (nan? (min big*5 +nan.0))) |
1732 |
|
(pass-if (nan? (min 123.0 +nan.0))) |
1733 |
|
(pass-if (nan? (min +nan.0 123))) |
1734 |
|
(pass-if (nan? (min +nan.0 big*5))) |
1735 |
|
(pass-if (nan? (min +nan.0 123.0))) |
1736 |
|
(pass-if (nan? (min +nan.0 +nan.0)))) |
1737 |
|
|
1738 |
;; in gmp prior to 4.2, mpz_cmp_d ended up treating Inf as 2^1024, make |
;; in gmp prior to 4.2, mpz_cmp_d ended up treating Inf as 2^1024, make |
1739 |
;; sure we've avoided that |
;; sure we've avoided that |
1751 |
(1+ (ash 1 1024)) |
(1+ (ash 1 1024)) |
1752 |
(- (1- (ash 1 1024))) |
(- (1- (ash 1 1024))) |
1753 |
(- (ash 1 1024)) |
(- (ash 1 1024)) |
1754 |
(- (1+ (ash 1 1024)))))) |
(- (1+ (ash 1 1024))))) |
1755 |
|
|
1756 |
|
;; in gmp prior to 4.2, mpz_cmp_d ended up treating NaN as 3*2^1023, make |
1757 |
|
;; sure we've avoided that |
1758 |
|
(pass-if (nan? (min (- (ash 1 2048)) (- +nan.0)))) |
1759 |
|
(pass-if (nan? (min (- +nan.0) (- (ash 1 2048)))))) |
1760 |
|
|
1761 |
;;; |
;;; |
1762 |
;;; + |
;;; + |