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