From d86490211c986c6d7bde061dfafc62bbfec83776 Mon Sep 17 00:00:00 2001
From: pfdietz <pfdietz@localhost>
Date: Sat, 19 Jun 2004 14:05:17 +0000
Subject: [PATCH] Added tests of comparing bignums with floats.

---
 ansi-tests/number-comparison.lsp | 161 ++++++++++++++++++++++++++++++-
 1 file changed, 160 insertions(+), 1 deletion(-)

diff --git a/ansi-tests/number-comparison.lsp b/ansi-tests/number-comparison.lsp
index d40a54b4..67b8dcd8 100644
--- a/ansi-tests/number-comparison.lsp
+++ b/ansi-tests/number-comparison.lsp
@@ -197,7 +197,6 @@
 		  nil))))
   nil)
 
-
 (deftest =.order.1
   (let ((i 0) x y)
     (values
@@ -1184,3 +1183,163 @@
 (deftest compare-rationals.4
   (compare-random-rationals 6000000000 3000000000 10000)
   nil)
+
+;;;; Comparison of bignums with floats
+
+(deftest bignum.float.compare.1a
+  (loop for x in *floats*
+	when (or (<= (abs x) 1)
+		 (< (abs (log (abs x))) 10000))
+	nconc
+	(loop for r = (1+ (random (ash 1 (random 32))))
+	      repeat 200
+	      nconc
+	      (let ((i (+ r (ceiling (rational x)))))
+		(unless (< x i)
+		  (list (list x i))))))
+  nil)
+
+(deftest bignum.float.compare.1b
+  (loop for x in *floats*
+	when (or (<= (abs x) 1)
+		 (< (abs (log (abs x))) 10000))
+	nconc
+	(loop for r = (1+ (random (ash 1 (random 32))))
+	      repeat 200
+	      nconc
+	      (let ((i (- (floor (rational x)) r)))
+		(unless (< i x)
+		  (list (list x i))))))
+  nil)
+
+(deftest bignum.float.compare.2a
+  (loop for x in *floats*
+	when (or (<= (abs x) 1)
+		 (< (abs (log (abs x))) 10000))
+	nconc
+	(loop for r = (1+ (random (ash 1 (random 32))))
+	      repeat 200
+	      nconc
+	      (let ((i (+ r (ceiling (rational x)))))
+		(unless (> i x)
+		  (list (list x i))))))
+  nil)
+
+(deftest bignum.float.compare.2b
+  (loop for x in *floats*
+	when (or (<= (abs x) 1)
+		 (< (abs (log (abs x))) 10000))
+	nconc
+	(loop for r = (1+ (random (ash 1 (random 32))))
+	      repeat 200
+	      nconc
+	      (let ((i (- (floor (rational x)) r)))
+		(unless (> x i)
+		  (list (list x i))))))
+  nil)
+
+(deftest bignum.float.compare.3a
+  (loop for x in *floats*
+	when (or (<= (abs x) 1)
+		 (< (abs (log (abs x))) 10000))
+	nconc
+	(loop for r = (1+ (random (ash 1 (random 32))))
+	      repeat 200
+	      nconc
+	      (let ((i (+ r (ceiling (rational x)))))
+		(when (or (= x i) (= i x))
+		  (list (list x i))))))
+  nil)
+
+(deftest bignum.float.compare.3b
+  (loop for x in *floats*
+	when (or (<= (abs x) 1)
+		 (< (abs (log (abs x))) 10000))
+	nconc
+	(loop for r = (1+ (random (ash 1 (random 32))))
+	      repeat 200
+	      nconc
+	      (let ((i (- (floor (rational x)) r)))
+		(when (or (= x i) (= i x))
+		  (list (list x i))))))
+  nil)
+
+(deftest bignum.float.compare.4a
+  (loop for x in *floats*
+	when (or (<= (abs x) 1)
+		 (< (abs (log (abs x))) 10000))
+	nconc
+	(loop for r = (1+ (random (ash 1 (random 32))))
+	      repeat 200
+	      nconc
+	      (let ((i (+ r (ceiling (rational x)))))
+		(unless (and (/= i x) (/= x i))
+		  (list (list x i))))))
+  nil)
+
+(deftest bignum.float.compare.4b
+  (loop for x in *floats*
+	when (or (<= (abs x) 1)
+		 (< (abs (log (abs x))) 10000))
+	nconc
+	(loop for r = (1+ (random (ash 1 (random 32))))
+	      repeat 200
+	      nconc
+	      (let ((i (- (floor (rational x)) r)))
+		(unless (and (/= i x) (/= x i))
+		  (list (list x i))))))
+  nil)
+
+(deftest bignum.float.compare.5a
+  (loop for x in *floats*
+	when (or (<= (abs x) 1)
+		 (< (abs (log (abs x))) 10000))
+	nconc
+	(loop for r = (1+ (random (ash 1 (random 32))))
+	      repeat 200
+	      nconc
+	      (let ((i (+ r (ceiling (rational x)))))
+		(unless (<= x i)
+		  (list (list x i))))))
+  nil)
+
+(deftest bignum.float.compare.5b
+  (loop for x in *floats*
+	when (or (<= (abs x) 1)
+		 (< (abs (log (abs x))) 10000))
+	nconc
+	(loop for r = (1+ (random (ash 1 (random 32))))
+	      repeat 200
+	      nconc
+	      (let ((i (- (floor (rational x)) r)))
+		(unless (<= i x)
+		  (list (list x i))))))
+  nil)
+
+(deftest bignum.float.compare.6a
+  (loop for x in *floats*
+	when (or (<= (abs x) 1)
+		 (< (abs (log (abs x))) 10000))
+	nconc
+	(loop for r = (1+ (random (ash 1 (random 32))))
+	      repeat 200
+	      nconc
+	      (let ((i (+ r (ceiling (rational x)))))
+		(unless (>= i x)
+		  (list (list x i))))))
+  nil)
+
+(deftest bignum.float.compare.6b
+  (loop for x in *floats*
+	when (or (<= (abs x) 1)
+		 (< (abs (log (abs x))) 10000))
+	nconc
+	(loop for r = (1+ (random (ash 1 (random 32))))
+	      repeat 200
+	      nconc
+	      (let ((i (- (floor (rational x)) r)))
+		(unless (>= x i)
+		  (list (list x i))))))
+  nil)
+
+;;; To add ... comparisons of large rationals with floats
\ No newline at end of file
-- 
GitLab