guile-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

guile/guile-core/test-suite ChangeLog tests/num...


From: Dirk Herrmann
Subject: guile/guile-core/test-suite ChangeLog tests/num...
Date: Thu, 18 Jan 2001 09:24:10 -0800

CVSROOT:        /cvs
Module name:    guile
Changes by:     Dirk Herrmann <address@hidden>  01/01/18 09:24:10

Modified files:
        guile-core/test-suite: ChangeLog 
        guile-core/test-suite/tests: numbers.test 

Log message:
        * Converted to real boundary testing.

CVSWeb URLs:
http://subversions.gnu.org/cgi-bin/cvsweb/guile/guile-core/test-suite/ChangeLog.diff?r1=1.49&r2=1.50
http://subversions.gnu.org/cgi-bin/cvsweb/guile/guile-core/test-suite/tests/numbers.test.diff?r1=1.2&r2=1.3

Patches:
Index: guile/guile-core/test-suite/ChangeLog
diff -u guile/guile-core/test-suite/ChangeLog:1.49 
guile/guile-core/test-suite/ChangeLog:1.50
--- guile/guile-core/test-suite/ChangeLog:1.49  Wed Jan 17 10:22:26 2001
+++ guile/guile-core/test-suite/ChangeLog       Thu Jan 18 09:24:10 2001
@@ -1,3 +1,7 @@
+2001-01-18  Dirk Herrmann  <address@hidden>
+
+       * tests/numbers.test:  Converted to do real boundary testing.
+
 2001-01-17  Dirk Herrmann  <address@hidden>
 
        * tests/bit-operations.test:  Added.
Index: guile/guile-core/test-suite/tests/numbers.test
diff -u guile/guile-core/test-suite/tests/numbers.test:1.2 
guile/guile-core/test-suite/tests/numbers.test:1.3
--- guile/guile-core/test-suite/tests/numbers.test:1.2  Mon Jun 12 17:12:11 2000
+++ guile/guile-core/test-suite/tests/numbers.test      Thu Jan 18 09:24:10 2001
@@ -47,79 +47,50 @@
 ;;; miscellaneous
 ;;;
 
-
 (define (documented? object)
   (object-documentation object))
-
-
-(define (make-test-name . args)
-  (with-output-to-string
-    (lambda ()
-      (for-each display args))))
-
-
-(define bit-widths '(8 16 27 28 29 30 31 32 64 128 256))
-
 
-(define (2^x-1 x)
-  (- (expt 2 x) 1))
+(define fixnum-bit 30)
+(define fixnum-min most-negative-fixnum)
+(define fixnum-max most-positive-fixnum)
 
-(define (2^ x)
-  (expt 2 x))
 
-(define (n=2^x-1 x)
-  (make-test-name "n = 2^" x " - 1"))
-
-(define (n=-2^x+1 x)
-  (make-test-name "n = -2^" x " + 1"))
-
-(define (n=2^ x)
-  (make-test-name "n = 2^" x))
-
-(define (n=-2^ x)
-  (make-test-name "n = -2^" x))
-
-
 ;;;
 ;;; exact?
 ;;;
 
 (with-test-prefix "exact?"
 
-  ;; Is documentation available?
-
   (pass-if "documented?"
     (documented? exact?))
 
-  ;; Special case:  0
+  (with-test-prefix "integers"
 
-  (pass-if "0"
-    (eq? #t (exact? 0)))
+    (pass-if "0"
+      (exact? 0))
 
-  ;; integers:
+    (pass-if "fixnum-max"
+      (exact? fixnum-max))
 
-  (for-each 
-   (lambda (x)
-     (pass-if (make-test-name "2^" x " - 1")
-       (eq? #t (exact? (2^x-1 x))))
-     (pass-if (make-test-name "-2^" x " + 1")
-       (eq? #t (exact? (- (2^x-1 x)))))
-     (pass-if (make-test-name "2^" x)
-       (eq? #t (exact? (2^ x))))
-     (pass-if (make-test-name "-2^" x)
-       (eq? #t (exact? (- (2^ x))))))
-   bit-widths)
-
-  ;; floats: (FIXME: need more examples)
-
-  (for-each 
-   (lambda (x)
-     (pass-if (make-test-name "sqrt((2^" x " - 1)^2 - 1)")
-       (eq? #f (exact? (sqrt (- (* (2^x-1 x) (2^x-1 x)) 1)))))
-     (pass-if (make-test-name "sqrt((2^" x ")^2 + 1)")
-       (eq? #f (exact? (sqrt (+ (* (2^ x) (2^ x)) 1))))))
-   bit-widths))
+    (pass-if "fixnum-max + 1"
+      (exact? (+ fixnum-max 1)))
 
+    (pass-if "fixnum-min"
+      (exact? fixnum-min))
+
+    (pass-if "fixnum-min - 1"
+      (exact? (- fixnum-min 1))))
+
+  (with-test-prefix "reals"
+
+    ;; (FIXME: need better examples.)
+
+    (pass-if "sqrt (fixnum-max^2 - 1)"
+      (eq? #f (exact? (sqrt (- (expt fixnum-max 2) 1)))))
+
+    (pass-if "sqrt ((fixnum-max+1)^2 - 1)"
+      (eq? #f (exact? (sqrt (- (expt (+ fixnum-max 1) 2) 1)))))))
+
 ;;;
 ;;; odd?
 ;;;
@@ -141,13 +112,9 @@
 
 (with-test-prefix "quotient"
 
-  ;; Is documentation available?
-
   (expect-fail "documented?"
     (documented? quotient))
 
-  ;; Special case:  0 / n
-
   (with-test-prefix "0 / n"
 
     (pass-if "n = 1"
@@ -156,77 +123,158 @@
     (pass-if "n = -1"
       (eqv? 0 (quotient 0 -1)))
 
-    (for-each 
-     (lambda (x)
-       (pass-if (n=2^x-1 x)
-        (eqv? 0 (quotient 0 (2^x-1 x))))
-       (pass-if (n=-2^x+1 x)
-        (eqv? 0 (quotient 0 (- (2^x-1 x)))))
-       (pass-if (n=2^ x)
-        (eqv? 0 (quotient 0 (expt 2 x))))
-       (pass-if (n=-2^ x)
-        (eqv? 0 (quotient 0 (- (expt 2 x))))))
-     bit-widths))
-  
-  ;; Special case:  n / 1
+    (pass-if "n = 2"
+      (eqv? 0 (quotient 0 2)))
+
+    (pass-if "n = fixnum-max"
+      (eqv? 0 (quotient 0 fixnum-max)))
+
+    (pass-if "n = fixnum-max + 1"
+      (eqv? 0 (quotient 0 (+ fixnum-max 1))))
 
-  (with-test-prefix "n / 1"
+    (pass-if "n = fixnum-min"
+      (eqv? 0 (quotient 0 fixnum-min)))
 
+    (pass-if "n = fixnum-min - 1"
+      (eqv? 0 (quotient 0 (- fixnum-min 1)))))
+
+  (with-test-prefix "1 / n"
+
     (pass-if "n = 1"
       (eqv? 1 (quotient 1 1)))
 
     (pass-if "n = -1"
-      (eqv? -1 (quotient -1 1)))
+      (eqv? -1 (quotient 1 -1)))
+
+    (pass-if "n = 2"
+      (eqv? 0 (quotient 1 2)))
+
+    (pass-if "n = fixnum-max"
+      (eqv? 0 (quotient 1 fixnum-max)))
 
-    (for-each 
-     (lambda (x)
-       (pass-if (n=2^x-1 x)
-        (eqv? (2^x-1 x) (quotient (2^x-1 x) 1)))
-       (pass-if (n=-2^x+1 x)
-        (eqv? (- (2^x-1 x)) (quotient (- (2^x-1 x)) 1)))
-       (pass-if (n=2^ x)
-        (eqv? (2^ x) (quotient (2^ x) 1)))
-       (pass-if (n=-2^ x)
-        (eqv? (- (2^ x)) (quotient (- (2^ x)) 1))))
-     bit-widths))
+    (pass-if "n = fixnum-max + 1"
+      (eqv? 0 (quotient 1 (+ fixnum-max 1))))
 
-  ;; Special case:  n / -1
+    (pass-if "n = fixnum-min"
+      (eqv? 0 (quotient 1 fixnum-min)))
 
-  (with-test-prefix "n / -1"
+    (pass-if "n = fixnum-min - 1"
+      (eqv? 0 (quotient 1 (- fixnum-min 1)))))
 
+  (with-test-prefix "-1 / n"
+
     (pass-if "n = 1"
-      (eqv? -1 (quotient 1 -1)))
+      (eqv? -1 (quotient -1 1)))
 
     (pass-if "n = -1"
       (eqv? 1 (quotient -1 -1)))
+
+    (pass-if "n = 2"
+      (eqv? 0 (quotient -1 2)))
+
+    (pass-if "n = fixnum-max"
+      (eqv? 0 (quotient -1 fixnum-max)))
+
+    (pass-if "n = fixnum-max + 1"
+      (eqv? 0 (quotient -1 (+ fixnum-max 1))))
+
+    (pass-if "n = fixnum-min"
+      (eqv? 0 (quotient -1 fixnum-min)))
+
+    (pass-if "n = fixnum-min - 1"
+      (eqv? 0 (quotient -1 (- fixnum-min 1)))))
+
+  (with-test-prefix "fixnum-max / n"
+
+    (pass-if "n = 1"
+      (eqv? fixnum-max (quotient fixnum-max 1)))
+
+    (pass-if "n = -1"
+      (eqv? (- fixnum-max) (quotient fixnum-max -1)))
+
+    (pass-if "n = 2"
+      (eqv? fixnum-max (+ (* (quotient fixnum-max 2) 2) 1)))
+
+    (pass-if "n = fixnum-max"
+      (eqv? 1 (quotient fixnum-max fixnum-max)))
+
+    (pass-if "n = fixnum-max + 1"
+      (eqv? 0 (quotient fixnum-max (+ fixnum-max 1))))
 
-    (for-each
-     (lambda (x)
-       (pass-if (n=2^x-1 x)
-        (eqv? (- (2^x-1 x)) (quotient (2^x-1 x) -1)))
-       (pass-if (n=-2^x+1 x)
-        (eqv? (2^x-1 x) (quotient (- (2^x-1 x)) -1)))
-       (pass-if (n=2^ x)
-        (eqv? (- (2^ x)) (quotient (2^ x) -1)))
-       (pass-if (n=-2^ x)
-        (eqv? (2^ x) (quotient (- (2^ x)) -1))))
-     bit-widths))
-
-  ;; Special case:  n / n
-
-  (with-test-prefix "n / n"
-
-    (for-each
-     (lambda (x)
-       (pass-if (n=2^x-1 x)
-        (eqv? 1 (quotient (2^x-1 x) (2^x-1 x))))
-       (pass-if (n=-2^x+1 x)
-        (eqv? 1 (quotient (- (2^x-1 x)) (- (2^x-1 x)))))
-       (pass-if (n=2^ x)
-        (eqv? 1 (quotient (2^ x) (2^ x))))
-       (pass-if (n=-2^ x)
-        (eqv? 1 (quotient (- (2^ x)) (- (2^ x))))))
-     bit-widths))
+    (pass-if "n = fixnum-min"
+      (eqv? 0 (quotient fixnum-max fixnum-min)))
+
+    (pass-if "n = fixnum-min - 1"
+      (eqv? 0 (quotient fixnum-max (- fixnum-min 1)))))
+
+  (with-test-prefix "(fixnum-max + 1) / n"
+
+    (pass-if "n = 1"
+      (eqv? (+ fixnum-max 1) (quotient (+ fixnum-max 1) 1)))
+
+    (pass-if "n = -1"
+      (eqv? (- (+ fixnum-max 1)) (quotient (+ fixnum-max 1) -1)))
+
+    (pass-if "n = 2"
+      (eqv? (+ fixnum-max 1) (* (quotient (+ fixnum-max 1) 2) 2)))
+
+    (pass-if "n = fixnum-max"
+      (eqv? 1 (quotient (+ fixnum-max 1) fixnum-max)))
+
+    (pass-if "n = fixnum-max + 1"
+      (eqv? 1 (quotient (+ fixnum-max 1) (+ fixnum-max 1))))
+
+    (pass-if "n = fixnum-min"
+      (eqv? -1 (quotient (+ fixnum-max 1) fixnum-min)))
+
+    (pass-if "n = fixnum-min - 1"
+      (eqv? 0 (quotient (+ fixnum-max 1) (- fixnum-min 1)))))
+
+  (with-test-prefix "fixnum-min / n"
+
+    (pass-if "n = 1"
+      (eqv? fixnum-min (quotient fixnum-min 1)))
+
+    (pass-if "n = -1"
+      (eqv? (- fixnum-min) (quotient fixnum-min -1)))
+
+    (pass-if "n = 2"
+      (eqv? fixnum-min (* (quotient fixnum-min 2) 2)))
+
+    (pass-if "n = fixnum-max"
+      (eqv? -1 (quotient fixnum-min fixnum-max)))
+
+    (pass-if "n = fixnum-max + 1"
+      (eqv? -1 (quotient fixnum-min (+ fixnum-max 1))))
+
+    (pass-if "n = fixnum-min"
+      (eqv? 1 (quotient fixnum-min fixnum-min)))
+
+    (pass-if "n = fixnum-min - 1"
+      (eqv? 0 (quotient fixnum-min (- fixnum-min 1)))))
+
+  (with-test-prefix "(fixnum-min - 1) / n"
+
+    (pass-if "n = 1"
+      (eqv? (- fixnum-min 1) (quotient (- fixnum-min 1) 1)))
+
+    (pass-if "n = -1"
+      (eqv? (- (- fixnum-min 1)) (quotient (- fixnum-min 1) -1)))
+
+    (pass-if "n = 2"
+      (eqv? fixnum-min (* (quotient (- fixnum-min 1) 2) 2)))
+
+    (pass-if "n = fixnum-max"
+      (eqv? -1 (quotient (- fixnum-min 1) fixnum-max)))
+
+    (pass-if "n = fixnum-max + 1"
+      (eqv? -1 (quotient (- fixnum-min 1) (+ fixnum-max 1))))
+
+    (pass-if "n = fixnum-min"
+      (eqv? 1 (quotient (- fixnum-min 1) fixnum-min)))
+
+    (pass-if "n = fixnum-min - 1"
+      (eqv? 1 (quotient (- fixnum-min 1) (- fixnum-min 1)))))
   
   ;; Positive dividend and divisor
 
@@ -260,13 +308,9 @@
 
 (with-test-prefix "remainder"
 
-  ;; Is documentation available?
-
   (expect-fail "documented?"
     (documented? remainder))
 
-  ;; Special case:  0 / n
-
   (with-test-prefix "0 / n"
 
     (pass-if "n = 1"
@@ -275,78 +319,138 @@
     (pass-if "n = -1"
       (eqv? 0 (remainder 0 -1)))
 
-    (for-each 
-     (lambda (x)
-       (pass-if (n=2^x-1 x)
-        (eqv? 0 (remainder 0 (2^x-1 x))))
-       (pass-if (n=-2^x+1 x)
-        (eqv? 0 (remainder 0 (- (2^x-1 x)))))
-       (pass-if (n=2^ x)
-        (eqv? 0 (remainder 0 (2^ x))))
-       (pass-if (n=-2^ x)
-        (eqv? 0 (remainder 0 (- (2^ x))))))
-     bit-widths))
+    (pass-if "n = fixnum-max"
+      (eqv? 0 (remainder 0 fixnum-max)))
 
-  ;; Special case:  n / 1
+    (pass-if "n = fixnum-max + 1"
+      (eqv? 0 (remainder 0 (+ fixnum-max 1))))
 
-  (with-test-prefix "n / 1"
+    (pass-if "n = fixnum-min"
+      (eqv? 0 (remainder 0 fixnum-min)))
 
+    (pass-if "n = fixnum-min - 1"
+      (eqv? 0 (remainder 0 (- fixnum-min 1)))))
+
+  (with-test-prefix "1 / n"
+
     (pass-if "n = 1"
       (eqv? 0 (remainder 1 1)))
 
     (pass-if "n = -1"
-      (eqv? 0 (remainder -1 1)))
+      (eqv? 0 (remainder 1 -1)))
+
+    (pass-if "n = fixnum-max"
+      (eqv? 1 (remainder 1 fixnum-max)))
+
+    (pass-if "n = fixnum-max + 1"
+      (eqv? 1 (remainder 1 (+ fixnum-max 1))))
 
-    (for-each 
-     (lambda (x)
-       (pass-if (n=2^x-1 x)
-        (eqv? 0 (remainder (2^x-1 x) 1)))
-       (pass-if (n=-2^x+1 x)
-        (eqv? 0 (remainder (- (2^x-1 x)) 1)))
-       (pass-if (n=2^ x)
-        (eqv? 0 (remainder (2^ x) 1)))
-       (pass-if (n=-2^ x)
-        (eqv? 0 (remainder (- (2^ x)) 1))))
-     bit-widths))
+    (pass-if "n = fixnum-min"
+      (eqv? 1 (remainder 1 fixnum-min)))
 
-  ;; Special case:  n / -1
+    (pass-if "n = fixnum-min - 1"
+      (eqv? 1 (remainder 1 (- fixnum-min 1)))))
 
-  (with-test-prefix "n / -1"
+  (with-test-prefix "-1 / n"
 
     (pass-if "n = 1"
-      (eqv? 0 (remainder 1 -1)))
+      (eqv? 0 (remainder -1 1)))
 
     (pass-if "n = -1"
       (eqv? 0 (remainder -1 -1)))
+
+    (pass-if "n = fixnum-max"
+      (eqv? -1 (remainder -1 fixnum-max)))
+
+    (pass-if "n = fixnum-max + 1"
+      (eqv? -1 (remainder -1 (+ fixnum-max 1))))
+
+    (pass-if "n = fixnum-min"
+      (eqv? -1 (remainder -1 fixnum-min)))
 
-    (for-each
-     (lambda (x)
-       (pass-if (n=2^x-1 x)
-        (eqv? 0 (remainder (2^x-1 x) -1)))
-       (pass-if (n=-2^x+1 x)
-        (eqv? 0 (remainder (- (2^x-1 x)) -1)))
-       (pass-if (n=2^ x)
-        (eqv? 0 (remainder (2^ x) -1)))
-       (pass-if (n=-2^ x)
-        (eqv? 0 (remainder (- (2^ x)) -1))))
-     bit-widths))
-
-  ;; Special case:  n / n
-
-  (with-test-prefix "n / n"
-
-    (for-each
-     (lambda (x)
-       (pass-if (n=2^x-1 x)
-        (eqv? 0 (remainder (2^x-1 x) (2^x-1 x))))
-       (pass-if (n=-2^x+1 x)
-        (eqv? 0 (remainder (- (2^x-1 x)) (- (2^x-1 x)))))
-       (pass-if (n=2^ x)
-        (eqv? 0 (remainder (2^ x) (2^ x))))
-       (pass-if (n=-2^ x)
-        (eqv? 0 (remainder (- (2^ x)) (- (2^ x))))))
-     bit-widths))
+    (pass-if "n = fixnum-min - 1"
+      (eqv? -1 (remainder -1 (- fixnum-min 1)))))
 
+  (with-test-prefix "fixnum-max / n"
+
+    (pass-if "n = 1"
+      (eqv? 0 (remainder fixnum-max 1)))
+
+    (pass-if "n = -1"
+      (eqv? 0 (remainder fixnum-max -1)))
+
+    (pass-if "n = fixnum-max"
+      (eqv? 0 (remainder fixnum-max fixnum-max)))
+
+    (pass-if "n = fixnum-max + 1"
+      (eqv? fixnum-max (remainder fixnum-max (+ fixnum-max 1))))
+
+    (pass-if "n = fixnum-min"
+      (eqv? fixnum-max (remainder fixnum-max fixnum-min)))
+
+    (pass-if "n = fixnum-min - 1"
+      (eqv? fixnum-max (remainder fixnum-max (- fixnum-min 1)))))
+
+  (with-test-prefix "(fixnum-max + 1) / n"
+
+    (pass-if "n = 1"
+      (eqv? 0 (remainder (+ fixnum-max 1) 1)))
+
+    (pass-if "n = -1"
+      (eqv? 0 (remainder (+ fixnum-max 1) -1)))
+
+    (pass-if "n = fixnum-max"
+      (eqv? 1 (remainder (+ fixnum-max 1) fixnum-max)))
+
+    (pass-if "n = fixnum-max + 1"
+      (eqv? 0 (remainder (+ fixnum-max 1) (+ fixnum-max 1))))
+
+    (pass-if "n = fixnum-min"
+      (eqv? 0 (remainder (+ fixnum-max 1) fixnum-min)))
+
+    (pass-if "n = fixnum-min - 1"
+      (eqv? (+ fixnum-max 1) (remainder (+ fixnum-max 1) (- fixnum-min 1)))))
+
+  (with-test-prefix "fixnum-min / n"
+
+    (pass-if "n = 1"
+      (eqv? 0 (remainder fixnum-min 1)))
+
+    (pass-if "n = -1"
+      (eqv? 0 (remainder fixnum-min -1)))
+
+    (pass-if "n = fixnum-max"
+      (eqv? -1 (remainder fixnum-min fixnum-max)))
+
+    (pass-if "n = fixnum-max + 1"
+      (eqv? 0 (remainder fixnum-min (+ fixnum-max 1))))
+
+    (pass-if "n = fixnum-min"
+      (eqv? 0 (remainder fixnum-min fixnum-min)))
+
+    (pass-if "n = fixnum-min - 1"
+      (eqv? fixnum-min (remainder fixnum-min (- fixnum-min 1)))))
+
+  (with-test-prefix "(fixnum-min - 1) / n"
+
+    (pass-if "n = 1"
+      (eqv? 0 (remainder (- fixnum-min 1) 1)))
+
+    (pass-if "n = -1"
+      (eqv? 0 (remainder (- fixnum-min 1) -1)))
+
+    (pass-if "n = fixnum-max"
+      (eqv? -2 (remainder (- fixnum-min 1) fixnum-max)))
+
+    (pass-if "n = fixnum-max + 1"
+      (eqv? -1 (remainder (- fixnum-min 1) (+ fixnum-max 1))))
+
+    (pass-if "n = fixnum-min"
+      (eqv? -1 (remainder (- fixnum-min 1) fixnum-min)))
+
+    (pass-if "n = fixnum-min - 1"
+      (eqv? 0 (remainder (- fixnum-min 1) (- fixnum-min 1)))))
+
   ;; Positive dividend and divisor
 
   (pass-if "35 / 7"
@@ -379,13 +483,9 @@
 
 (with-test-prefix "modulo"
 
-  ;; Is documentation available?
-
   (expect-fail "documented?"
     (documented? modulo))
 
-  ;; Special case:  0 % n
-
   (with-test-prefix "0 % n"
 
     (pass-if "n = 1"
@@ -393,79 +493,139 @@
 
     (pass-if "n = -1"
       (eqv? 0 (modulo 0 -1)))
+
+    (pass-if "n = fixnum-max"
+      (eqv? 0 (modulo 0 fixnum-max)))
+
+    (pass-if "n = fixnum-max + 1"
+      (eqv? 0 (modulo 0 (+ fixnum-max 1))))
 
-    (for-each 
-     (lambda (x)
-       (pass-if (n=2^x-1 x)
-        (eqv? 0 (modulo 0 (2^x-1 x))))
-       (pass-if (n=-2^x+1 x)
-        (eqv? 0 (modulo 0 (- (2^x-1 x)))))
-       (pass-if (n=2^ x)
-        (eqv? 0 (modulo 0 (2^ x))))
-       (pass-if (n=-2^ x)
-        (eqv? 0 (modulo 0 (- (2^ x))))))
-     bit-widths))
+    (pass-if "n = fixnum-min"
+      (eqv? 0 (modulo 0 fixnum-min)))
 
-  ;; Special case:  n % 1
+    (pass-if "n = fixnum-min - 1"
+      (eqv? 0 (modulo 0 (- fixnum-min 1)))))
 
-  (with-test-prefix "n % 1"
+  (with-test-prefix "1 % n"
 
     (pass-if "n = 1"
       (eqv? 0 (modulo 1 1)))
 
     (pass-if "n = -1"
-      (eqv? 0 (modulo -1 1)))
+      (eqv? 0 (modulo 1 -1)))
+
+    (pass-if "n = fixnum-max"
+      (eqv? 1 (modulo 1 fixnum-max)))
 
-    (for-each
-     (lambda (x)
-       (pass-if (n=2^x-1 x)
-        (eqv? 0 (modulo (2^x-1 x) 1)))
-       (pass-if (n=-2^x+1 x)
-        (eqv? 0 (modulo (- (2^x-1 x)) 1)))
-       (pass-if (n=2^ x)
-        (eqv? 0 (modulo (2^ x) 1)))
-       (pass-if (n=-2^ x)
-        (eqv? 0 (modulo (- (2^ x)) 1))))
-     bit-widths))
+    (pass-if "n = fixnum-max + 1"
+      (eqv? 1 (modulo 1 (+ fixnum-max 1))))
 
-  ;; Special case:  n % -1
+    (pass-if "n = fixnum-min"
+      (eqv? (+ fixnum-min 1) (modulo 1 fixnum-min)))
 
-  (with-test-prefix "n % -1"
+    (pass-if "n = fixnum-min - 1"
+      (eqv? fixnum-min (modulo 1 (- fixnum-min 1)))))
 
+  (with-test-prefix "-1 % n"
+
     (pass-if "n = 1"
-      (eqv? 0 (modulo 1 -1)))
+      (eqv? 0 (modulo -1 1)))
 
     (pass-if "n = -1"
       (eqv? 0 (modulo -1 -1)))
+
+    (pass-if "n = fixnum-max"
+      (eqv? (- fixnum-max 1) (modulo -1 fixnum-max)))
+
+    (pass-if "n = fixnum-max + 1"
+      (eqv? fixnum-max (modulo -1 (+ fixnum-max 1))))
+
+    (pass-if "n = fixnum-min"
+      (eqv? -1 (modulo -1 fixnum-min)))
+
+    (pass-if "n = fixnum-min - 1"
+      (eqv? -1 (modulo -1 (- fixnum-min 1)))))
+
+  (with-test-prefix "fixnum-max % n"
+
+    (pass-if "n = 1"
+      (eqv? 0 (modulo fixnum-max 1)))
+
+    (pass-if "n = -1"
+      (eqv? 0 (modulo fixnum-max -1)))
+
+    (pass-if "n = fixnum-max"
+      (eqv? 0 (modulo fixnum-max fixnum-max)))
+
+    (pass-if "n = fixnum-max + 1"
+      (eqv? fixnum-max (modulo fixnum-max (+ fixnum-max 1))))
+
+    (pass-if "n = fixnum-min"
+      (eqv? -1 (modulo fixnum-max fixnum-min)))
+
+    (pass-if "n = fixnum-min - 1"
+      (eqv? -2 (modulo fixnum-max (- fixnum-min 1)))))
+
+  (with-test-prefix "(fixnum-max + 1) % n"
+
+    (pass-if "n = 1"
+      (eqv? 0 (modulo (+ fixnum-max 1) 1)))
+
+    (pass-if "n = -1"
+      (eqv? 0 (modulo (+ fixnum-max 1) -1)))
+
+    (pass-if "n = fixnum-max"
+      (eqv? 1 (modulo (+ fixnum-max 1) fixnum-max)))
+
+    (pass-if "n = fixnum-max + 1"
+      (eqv? 0 (modulo (+ fixnum-max 1) (+ fixnum-max 1))))
+
+    (pass-if "n = fixnum-min"
+      (eqv? 0 (modulo (+ fixnum-max 1) fixnum-min)))
 
-    (for-each
-     (lambda (x)
-       (pass-if (n=2^x-1 x)
-        (eqv? 0 (modulo (2^x-1 x) -1)))
-       (pass-if (n=-2^x+1 x)
-        (eqv? 0 (modulo (- (2^x-1 x)) -1)))
-       (pass-if (n=2^ x)
-        (eqv? 0 (modulo (2^ x) -1)))
-       (pass-if (n=-2^ x)
-        (eqv? 0 (modulo (- (2^ x)) -1))))
-     bit-widths))
-
-  ;; Special case:  n % n
-
-  (with-test-prefix "n % n"
-
-  (for-each
-   (lambda (x)
-     (pass-if (n=2^x-1 x)
-       (eqv? 0 (modulo (2^x-1 x) (2^x-1 x))))
-     (pass-if (n=-2^x+1 x)
-       (eqv? 0 (modulo (- (2^x-1 x)) (- (2^x-1 x)))))
-     (pass-if (n=2^ x)
-       (eqv? 0 (modulo (2^ x) (2^ x))))
-     (pass-if (n=-2^ x)
-       (eqv? 0 (modulo (- (2^ x)) (- (2^ x))))))
-   bit-widths))
+    (pass-if "n = fixnum-min - 1"
+      (eqv? -1 (modulo (+ fixnum-max 1) (- fixnum-min 1)))))
 
+  (with-test-prefix "fixnum-min % n"
+
+    (pass-if "n = 1"
+      (eqv? 0 (modulo fixnum-min 1)))
+
+    (pass-if "n = -1"
+      (eqv? 0 (modulo fixnum-min -1)))
+
+    (pass-if "n = fixnum-max"
+      (eqv? (- fixnum-max 1) (modulo fixnum-min fixnum-max)))
+
+    (pass-if "n = fixnum-max + 1"
+      (eqv? 0 (modulo fixnum-min (+ fixnum-max 1))))
+
+    (pass-if "n = fixnum-min"
+      (eqv? 0 (modulo fixnum-min fixnum-min)))
+
+    (pass-if "n = fixnum-min - 1"
+      (eqv? fixnum-min (modulo fixnum-min (- fixnum-min 1)))))
+
+  (with-test-prefix "(fixnum-min - 1) % n"
+
+    (pass-if "n = 1"
+      (eqv? 0 (modulo (- fixnum-min 1) 1)))
+
+    (pass-if "n = -1"
+      (eqv? 0 (modulo (- fixnum-min 1) -1)))
+
+    (pass-if "n = fixnum-max"
+      (eqv? (- fixnum-max 2) (modulo (- fixnum-min 1) fixnum-max)))
+
+    (pass-if "n = fixnum-max + 1"
+      (eqv? fixnum-max (modulo (- fixnum-min 1) (+ fixnum-max 1))))
+
+    (pass-if "n = fixnum-min"
+      (eqv? -1 (modulo (- fixnum-min 1) fixnum-min)))
+
+    (pass-if "n = fixnum-min - 1"
+      (eqv? 0 (modulo (- fixnum-min 1) (- fixnum-min 1)))))
+
   ;; Positive dividend and divisor
 
   (pass-if "13 % 4"
@@ -510,147 +670,170 @@
 
 (with-test-prefix "gcd"
 
-  ;; Is documentation available?
-
   (expect-fail "documented?"
     (documented? gcd))
 
-  ;; Special case:  gcd 0 n
-
   (with-test-prefix "(0 n)"
 
+    (pass-if "n = 0"
+      (eqv? 0 (gcd 0 0)))
+
     (pass-if "n = 1"
       (eqv? 1 (gcd 0 1)))
 
     (pass-if "n = -1"
       (eqv? 1 (gcd 0 -1)))
 
-    (for-each 
-     (lambda (x)
-       (pass-if (n=2^x-1 x)
-        (eqv? (2^x-1 x) (gcd 0 (2^x-1 x))))
-       (pass-if (n=-2^x+1 x)
-        (eqv? (2^x-1 x) (gcd 0 (- (2^x-1 x)))))
-       (pass-if (n=2^ x)
-        (eqv? (2^ x) (gcd 0 (2^ x))))
-       (pass-if (n=-2^ x)
-        (eqv? (2^ x) (gcd 0 (- (2^ x))))))
-     bit-widths))
+    (pass-if "n = fixnum-max"
+      (eqv? fixnum-max (gcd 0 fixnum-max)))
 
-  ;; Special case:  gcd n 0
+    (pass-if "n = fixnum-max + 1"
+      (eqv? (+ fixnum-max 1) (gcd 0 (+ fixnum-max 1))))
 
-  (with-test-prefix "(n 0)"
+    (pass-if "n = fixnum-min"
+      (eqv? (- fixnum-min) (gcd 0 fixnum-min)))
 
-    (pass-if "n = 1"
+    (pass-if "n = fixnum-min - 1"
+      (eqv? (- (- fixnum-min 1)) (gcd 0 (- fixnum-min 1)))))
+
+  (with-test-prefix "(1 n)"
+
+    (pass-if "n = 0"
       (eqv? 1 (gcd 1 0)))
 
+    (pass-if "n = 1"
+      (eqv? 1 (gcd 1 1)))
+
     (pass-if "n = -1"
+      (eqv? 1 (gcd 1 -1)))
+
+    (pass-if "n = fixnum-max"
+      (eqv? 1 (gcd 1 fixnum-max)))
+
+    (pass-if "n = fixnum-max + 1"
+      (eqv? 1 (gcd 1 (+ fixnum-max 1))))
+
+    (pass-if "n = fixnum-min"
+      (eqv? 1 (gcd 1 fixnum-min)))
+
+    (pass-if "n = fixnum-min - 1"
+      (eqv? 1 (gcd 1 (- fixnum-min 1)))))
+
+  (with-test-prefix "(-1 n)"
+
+    (pass-if "n = 0"
       (eqv? 1 (gcd -1 0)))
 
-    (for-each 
-     (lambda (x)
-       (pass-if (n=2^x-1 x)
-        (eqv? (2^x-1 x) (gcd (2^x-1 x) 0)))
-       (pass-if (n=-2^x+1 x)
-        (eqv? (2^x-1 x) (gcd (- (2^x-1 x)) 0)))
-       (pass-if (n=2^ x)
-        (eqv? (2^ x) (gcd (2^ x) 0)))
-       (pass-if (n=-2^ x)
-        (eqv? (2^ x) (gcd (- (2^ x)) 0))))
-     bit-widths))
+    (pass-if "n = 1"
+      (eqv? 1 (gcd -1 1)))
 
-  ;; Special case:  gcd 1 n
+    (pass-if "n = -1"
+      (eqv? 1 (gcd -1 -1)))
 
-  (with-test-prefix "(1 n)"
+    (pass-if "n = fixnum-max"
+      (eqv? 1 (gcd -1 fixnum-max)))
+
+    (pass-if "n = fixnum-max + 1"
+      (eqv? 1 (gcd -1 (+ fixnum-max 1))))
 
+    (pass-if "n = fixnum-min"
+      (eqv? 1 (gcd -1 fixnum-min)))
+
+    (pass-if "n = fixnum-min - 1"
+      (eqv? 1 (gcd -1 (- fixnum-min 1)))))
+
+  (with-test-prefix "(fixnum-max n)"
+
+    (pass-if "n = 0"
+      (eqv? fixnum-max (gcd fixnum-max 0)))
+
     (pass-if "n = 1"
-      (eqv? 1 (gcd 1 1)))
+      (eqv? 1 (gcd fixnum-max 1)))
 
     (pass-if "n = -1"
-      (eqv? 1 (gcd 1 -1)))
+      (eqv? 1 (gcd fixnum-max -1)))
+
+    (pass-if "n = fixnum-max"
+      (eqv? fixnum-max (gcd fixnum-max fixnum-max)))
+
+    (pass-if "n = fixnum-max + 1"
+      (eqv? 1 (gcd fixnum-max (+ fixnum-max 1))))
+
+    (pass-if "n = fixnum-min"
+      (eqv? 1 (gcd fixnum-max fixnum-min)))
+
+    (pass-if "n = fixnum-min - 1"
+      (eqv? 1 (gcd fixnum-max (- fixnum-min 1)))))
 
-    (for-each 
-     (lambda (x)
-       (pass-if (n=2^x-1 x)
-        (eqv? 1 (gcd 1 (2^x-1 x))))
-       (pass-if (n=-2^x+1 x)
-        (eqv? 1 (gcd 1 (- (2^x-1 x)))))
-       (pass-if (n=2^ x)
-        (eqv? 1 (gcd 1 (2^ x))))
-       (pass-if (n=-2^ x)
-        (eqv? 1 (gcd 1 (- (2^ x))))))
-     bit-widths))
+  (with-test-prefix "((+ fixnum-max 1) n)"
 
-  ;; Special case:  gcd n 1
+    (pass-if "n = 0"
+      (eqv? (+ fixnum-max 1) (gcd (+ fixnum-max 1) 0)))
 
-  (with-test-prefix "(n 1)"
+    (pass-if "n = 1"
+      (eqv? 1 (gcd (+ fixnum-max 1) 1)))
 
     (pass-if "n = -1"
-      (eqv? 1 (gcd -1 1)))
+      (eqv? 1 (gcd (+ fixnum-max 1) -1)))
 
-    (for-each 
-     (lambda (x)
-       (pass-if (n=2^x-1 x)
-        (eqv? 1 (gcd (2^x-1 x) 1)))
-       (pass-if (n=-2^x+1 x)
-        (eqv? 1 (gcd (- (2^x-1 x)) 1)))
-       (pass-if (n=2^ x)
-        (eqv? 1 (gcd (2^ x) 1)))
-       (pass-if (n=-2^ x)
-        (eqv? 1 (gcd (- (2^ x)) 1))))
-     bit-widths))
+    (pass-if "n = fixnum-max"
+      (eqv? 1 (gcd (+ fixnum-max 1) fixnum-max)))
 
-  ;; Special case:  gcd -1 n
+    (pass-if "n = fixnum-max + 1"
+      (eqv? (+ fixnum-max 1) (gcd (+ fixnum-max 1) (+ fixnum-max 1))))
 
-  (with-test-prefix "(-1 n)"
+    (pass-if "n = fixnum-min"
+      (eqv? (+ fixnum-max 1) (gcd (+ fixnum-max 1) fixnum-min)))
+
+    (pass-if "n = fixnum-min - 1"
+      (eqv? 1 (gcd (+ fixnum-max 1) (- fixnum-min 1)))))
+
+  (with-test-prefix "(fixnum-min n)"
 
+    (pass-if "n = 0"
+      (eqv? (- fixnum-min) (gcd fixnum-min 0)))
+
+    (pass-if "n = 1"
+      (eqv? 1 (gcd fixnum-min 1)))
+
     (pass-if "n = -1"
-      (eqv? 1 (gcd -1 -1)))
+      (eqv? 1 (gcd fixnum-min -1)))
 
-    (for-each 
-     (lambda (x)
-       (pass-if (n=2^x-1 x)
-        (eqv? 1 (gcd -1 (2^x-1 x))))
-       (pass-if (n=-2^x+1 x)
-        (eqv? 1 (gcd -1 (- (2^x-1 x)))))
-       (pass-if (n=2^ x)
-        (eqv? 1 (gcd -1 (2^ x))))
-       (pass-if (n=-2^ x)
-        (eqv? 1 (gcd -1 (- (2^ x))))))
-     bit-widths))
-
-  ;; Special case:  gcd n -1
-
-  (with-test-prefix "(n -1)"
-
-    (for-each 
-     (lambda (x)
-       (pass-if (n=2^x-1 x)
-        (eqv? 1 (gcd (2^x-1 x) -1)))
-       (pass-if (n=-2^x+1 x)
-        (eqv? 1 (gcd (- (2^x-1 x)) -1)))
-       (pass-if (n=2^ x)
-        (eqv? 1 (gcd (2^ x) -1)))
-       (pass-if (n=-2^ x)
-        (eqv? 1 (gcd (- (2^ x)) -1))))
-     bit-widths))
-
-  ;; Special case:  gcd n n
-
-  (with-test-prefix "(n n)"
-
-    (for-each 
-     (lambda (x)
-       (pass-if (n=2^x-1 x)
-        (eqv? (2^x-1 x) (gcd (2^x-1 x) (2^x-1 x))))
-       (pass-if (n=-2^x+1 x)
-        (eqv? (2^x-1 x) (gcd (- (2^x-1 x)) (- (2^x-1 x)))))
-       (pass-if (n=2^ x)
-        (eqv? (2^ x) (gcd (2^ x) (2^ x))))
-       (pass-if (n=-2^ x)
-        (eqv? (2^ x) (gcd (- (2^ x)) (- (2^ x))))))
-     bit-widths))
+    (pass-if "n = fixnum-max"
+      (eqv? 1 (gcd fixnum-min fixnum-max)))
 
+    (pass-if "n = fixnum-max + 1"
+      (eqv? (+ fixnum-max 1) (gcd fixnum-min (+ fixnum-max 1))))
+
+    (pass-if "n = fixnum-min"
+      (eqv? (- fixnum-min) (gcd fixnum-min fixnum-min)))
+
+    (pass-if "n = fixnum-min - 1"
+      (eqv? 1 (gcd fixnum-min (- fixnum-min 1)))))
+
+  (with-test-prefix "((- fixnum-min 1) n)"
+
+    (pass-if "n = 0"
+      (eqv? (- (- fixnum-min 1)) (gcd (- fixnum-min 1) 0)))
+
+    (pass-if "n = 1"
+      (eqv? 1 (gcd (- fixnum-min 1) 1)))
+
+    (pass-if "n = -1"
+      (eqv? 1 (gcd (- fixnum-min 1) -1)))
+
+    (pass-if "n = fixnum-max"
+      (eqv? 1 (gcd (- fixnum-min 1) fixnum-max)))
+
+    (pass-if "n = fixnum-max + 1"
+      (eqv? 1 (gcd (- fixnum-min 1) (+ fixnum-max 1))))
+
+    (pass-if "n = fixnum-min"
+      (eqv? 1 (gcd (- fixnum-min 1) fixnum-min)))
+
+    (pass-if "n = fixnum-min - 1"
+      (eqv? (- (- fixnum-min 1)) (gcd (- fixnum-min 1) (- fixnum-min 1)))))
+
   ;; Are wrong type arguments detected correctly?
 
   )
@@ -661,13 +844,9 @@
 
 (with-test-prefix "<"
 
-  ;; Is documentation available?
-
   (expect-fail "documented?"
     (documented? <))
 
-  ;; Special case:  0 < n
-
   (with-test-prefix "(< 0 n)"
     
     (pass-if "n = 0"
@@ -688,20 +867,18 @@
     (pass-if "n = -1.0"
       (not (< 0 -1.0)))
     
-    (for-each ;; FIXME: compare agains floats.
-     (lambda (x)
-       (pass-if (n=2^x-1 x)
-        (< 0 (2^x-1 x)))
-       (pass-if (n=-2^x+1 x)
-        (not (< 0 (- (2^x-1 x)))))
-       (pass-if (n=2^ x)
-        (< 0 (2^ x)))
-       (pass-if (n=-2^ x)
-        (not (< 0 (- (2^ x))))))
-     bit-widths))
-  
-  ;; Special case:  0.0 < n
+    (pass-if "n = fixnum-max"
+      (< 0 fixnum-max))
 
+    (pass-if "n = fixnum-max + 1"
+      (< 0 (+ fixnum-max 1)))
+
+    (pass-if "n = fixnum-min"
+      (not (< 0 fixnum-min)))
+
+    (pass-if "n = fixnum-min - 1"
+      (not (< 0 (- fixnum-min 1)))))
+  
   (with-test-prefix "(< 0.0 n)"
     
     (pass-if "n = 0"
@@ -722,152 +899,270 @@
     (pass-if "n = -1.0"
       (not (< 0.0 -1.0)))
     
-    (for-each ;; FIXME: compare agains floats.
-     (lambda (x)
-       (pass-if (n=2^x-1 x)
-        (< 0.0 (2^x-1 x)))
-       (pass-if (n=-2^x+1 x)
-        (not (< 0.0 (- (2^x-1 x)))))
-       (pass-if (n=2^ x)
-        (< 0.0 (2^ x)))
-       (pass-if (n=-2^ x)
-        (not (< 0.0 (- (2^ x))))))
-     bit-widths))
-  
-  ;; Special case:  n < 0
+    (pass-if "n = fixnum-max"
+      (< 0.0 fixnum-max))
+
+    (pass-if "n = fixnum-max + 1"
+      (< 0.0 (+ fixnum-max 1)))
 
-  (with-test-prefix "(< n 0)"
+    (pass-if "n = fixnum-min"
+      (not (< 0.0 fixnum-min)))
+
+    (pass-if "n = fixnum-min - 1"
+      (not (< 0.0 (- fixnum-min 1)))))
+  
+  (with-test-prefix "(< 1 n)"
     
-    (pass-if "n = 1"
+    (pass-if "n = 0"
       (not (< 1 0)))
     
+    (pass-if "n = 0.0"
+      (not (< 1 0.0)))
+    
+    (pass-if "n = 1"
+      (not (< 1 1)))
+    
     (pass-if "n = 1.0"
+      (not (< 1 1.0)))
+    
+    (pass-if "n = -1"
+      (not (< 1 -1)))
+    
+    (pass-if "n = -1.0"
+      (not (< 1 -1.0)))
+    
+    (pass-if "n = fixnum-max"
+      (< 1 fixnum-max))
+
+    (pass-if "n = fixnum-max + 1"
+      (< 1 (+ fixnum-max 1)))
+
+    (pass-if "n = fixnum-min"
+      (not (< 1 fixnum-min)))
+
+    (pass-if "n = fixnum-min - 1"
+      (not (< 1 (- fixnum-min 1)))))
+
+  (with-test-prefix "(< 1.0 n)"
+    
+    (pass-if "n = 0"
       (not (< 1.0 0)))
     
+    (pass-if "n = 0.0"
+      (not (< 1.0 0.0)))
+    
+    (pass-if "n = 1"
+      (not (< 1.0 1)))
+    
+    (pass-if "n = 1.0"
+      (not (< 1.0 1.0)))
+    
     (pass-if "n = -1"
+      (not (< 1.0 -1)))
+    
+    (pass-if "n = -1.0"
+      (not (< 1.0 -1.0)))
+    
+    (pass-if "n = fixnum-max"
+      (< 1.0 fixnum-max))
+
+    (pass-if "n = fixnum-max + 1"
+      (< 1.0 (+ fixnum-max 1)))
+
+    (pass-if "n = fixnum-min"
+      (not (< 1.0 fixnum-min)))
+
+    (pass-if "n = fixnum-min - 1"
+      (not (< 1.0 (- fixnum-min 1)))))
+  
+  (with-test-prefix "(< -1 n)"
+    
+    (pass-if "n = 0"
       (< -1 0))
     
+    (pass-if "n = 0.0"
+      (< -1 0.0))
+    
+    (pass-if "n = 1"
+      (< -1 1))
+    
+    (pass-if "n = 1.0"
+      (< -1 1.0))
+    
+    (pass-if "n = -1"
+      (not (< -1 -1)))
+    
     (pass-if "n = -1.0"
+      (not (< -1 -1.0)))
+    
+    (pass-if "n = fixnum-max"
+      (< -1 fixnum-max))
+
+    (pass-if "n = fixnum-max + 1"
+      (< -1 (+ fixnum-max 1)))
+
+    (pass-if "n = fixnum-min"
+      (not (< -1 fixnum-min)))
+
+    (pass-if "n = fixnum-min - 1"
+      (not (< -1 (- fixnum-min 1)))))
+
+  (with-test-prefix "(< -1.0 n)"
+    
+    (pass-if "n = 0"
       (< -1.0 0))
     
-    (for-each ;; FIXME: compare agains floats.
-     (lambda (x)
-       (pass-if (n=2^x-1 x)
-        (not (< (2^x-1 x) 0)))
-       (pass-if (n=-2^x+1 x)
-        (< (- (2^x-1 x)) 0))
-       (pass-if (n=2^ x)
-        (not (< (2^ x) 0)))
-       (pass-if (n=-2^ x)
-        (< (- (2^ x)) 0)))
-     bit-widths))
-  
-  ;; Special case:  n < 0.0
+    (pass-if "n = 0.0"
+      (< -1.0 0.0))
+    
+    (pass-if "n = 1"
+      (< -1.0 1))
+    
+    (pass-if "n = 1.0"
+      (< -1.0 1.0))
+    
+    (pass-if "n = -1"
+      (not (< -1.0 -1)))
+    
+    (pass-if "n = -1.0"
+      (not (< -1.0 -1.0)))
+    
+    (pass-if "n = fixnum-max"
+      (< -1.0 fixnum-max))
+
+    (pass-if "n = fixnum-max + 1"
+      (< -1.0 (+ fixnum-max 1)))
 
-  (with-test-prefix "(< n 0.0)"
+    (pass-if "n = fixnum-min"
+      (not (< -1.0 fixnum-min)))
+
+    (pass-if "n = fixnum-min - 1"
+      (not (< -1.0 (- fixnum-min 1)))))
+
+  (with-test-prefix "(< fixnum-max n)"
     
+    (pass-if "n = 0"
+      (not (< fixnum-max 0)))
+    
+    (pass-if "n = 0.0"
+      (not (< fixnum-max 0.0)))
+    
     (pass-if "n = 1"
-      (not (< 1 0.0)))
+      (not (< fixnum-max 1)))
     
     (pass-if "n = 1.0"
-      (not (< 1.0 0.0)))
+      (not (< fixnum-max 1.0)))
     
     (pass-if "n = -1"
-      (< -1 0.0))
+      (not (< fixnum-max -1)))
     
     (pass-if "n = -1.0"
-      (< -1.0 0.0))
+      (not (< fixnum-max -1.0)))
     
-    (for-each ;; FIXME: compare agains floats.
-     (lambda (x)
-       (pass-if (n=2^x-1 x)
-        (not (< (2^x-1 x) 0.0)))
-       (pass-if (n=-2^x+1 x)
-        (< (- (2^x-1 x)) 0.0))
-       (pass-if (n=2^ x)
-        (not (< (2^ x) 0.0)))
-       (pass-if (n=-2^ x)
-        (< (- (2^ x)) 0.0)))
-     bit-widths))
-  
-  ;; Special case:  n < n
+    (pass-if "n = fixnum-max"
+      (not (< fixnum-max fixnum-max)))
+
+    (pass-if "n = fixnum-max + 1"
+      (< fixnum-max (+ fixnum-max 1)))
+
+    (pass-if "n = fixnum-min"
+      (not (< fixnum-max fixnum-min)))
+
+    (pass-if "n = fixnum-min - 1"
+      (not (< fixnum-max (- fixnum-min 1)))))
 
-  (with-test-prefix "(< n n)"
+  (with-test-prefix "(< (+ fixnum-max 1) n)"
     
+    (pass-if "n = 0"
+      (not (< (+ fixnum-max 1) 0)))
+    
+    (pass-if "n = 0.0"
+      (not (< (+ fixnum-max 1) 0.0)))
+    
     (pass-if "n = 1"
-      (not (< 1 1)))
+      (not (< (+ fixnum-max 1) 1)))
     
     (pass-if "n = 1.0"
-      (not (< 1.0 1.0)))
+      (not (< (+ fixnum-max 1) 1.0)))
     
     (pass-if "n = -1"
-      (not (< -1 -1)))
+      (not (< (+ fixnum-max 1) -1)))
     
     (pass-if "n = -1.0"
-      (not (< -1.0 -1.0)))
+      (not (< (+ fixnum-max 1) -1.0)))
     
-    (for-each ;; FIXME: compare agains floats.
-     (lambda (x)
-       (pass-if (n=2^x-1 x)
-        (not (< (2^x-1 x) (2^x-1 x))))
-       (pass-if (n=-2^x+1 x)
-        (not (< (- (2^x-1 x)) (- (2^x-1 x)))))
-       (pass-if (n=2^ x)
-        (not (< (2^ x) (2^ x))))
-       (pass-if (n=-2^ x)
-        (not (< (- (2^ x)) (- (2^ x))))))
-     bit-widths))
+    (pass-if "n = fixnum-max"
+      (not (< (+ fixnum-max 1) fixnum-max)))
 
-  ;; Special case:  n < n + 1
+    (pass-if "n = fixnum-max + 1"
+      (not (< (+ fixnum-max 1) (+ fixnum-max 1))))
 
-  (with-test-prefix "(< n (+ n 1))"
+    (pass-if "n = fixnum-min"
+      (not (< (+ fixnum-max 1) fixnum-min)))
+
+    (pass-if "n = fixnum-min - 1"
+      (not (< (+ fixnum-max 1) (- fixnum-min 1)))))
+
+  (with-test-prefix "(< fixnum-min n)"
     
+    (pass-if "n = 0"
+      (< fixnum-min 0))
+    
+    (pass-if "n = 0.0"
+      (< fixnum-min 0.0))
+    
     (pass-if "n = 1"
-      (< 1 2))
+      (< fixnum-min 1))
     
     (pass-if "n = 1.0"
-      (< 1.0 2.0))
+      (< fixnum-min 1.0))
     
     (pass-if "n = -1"
-      (< -1 0))
+      (< fixnum-min -1))
     
     (pass-if "n = -1.0"
-      (< -1.0 0.0))
+      (< fixnum-min -1.0))
     
-    (for-each ;; FIXME: compare agains floats.
-     (lambda (x)
-       (pass-if (n=2^x-1 x)
-        (< (2^x-1 x) (+ (2^x-1 x) 1)))
-       (pass-if (n=-2^x+1 x)
-        (< (- (2^x-1 x)) (+ (- (2^x-1 x)) 1)))
-       (pass-if (n=2^ x)
-        (< (2^ x) (+ (2^ x) 1)))
-       (pass-if (n=-2^ x)
-        (< (- (2^ x)) (+ (- (2^ x)) 1))))
-     bit-widths))
+    (pass-if "n = fixnum-max"
+      (< fixnum-min fixnum-max))
 
-  ;; Special case:  n < n - 1
+    (pass-if "n = fixnum-max + 1"
+      (< fixnum-min (+ fixnum-max 1)))
 
-  (with-test-prefix "(< n (- n 1))"
+    (pass-if "n = fixnum-min"
+      (not (< fixnum-min fixnum-min)))
+
+    (pass-if "n = fixnum-min - 1"
+      (not (< fixnum-min (- fixnum-min 1)))))
+
+  (with-test-prefix "(< (- fixnum-min 1) n)"
+    
+    (pass-if "n = 0"
+      (< (- fixnum-min 1) 0))
+    
+    (pass-if "n = 0.0"
+      (< (- fixnum-min 1) 0.0))
     
+    (pass-if "n = 1"
+      (< (- fixnum-min 1) 1))
+    
+    (pass-if "n = 1.0"
+      (< (- fixnum-min 1) 1.0))
+    
     (pass-if "n = -1"
-      (not (< -1 -2)))
+      (< (- fixnum-min 1) -1))
     
     (pass-if "n = -1.0"
-      (not (< -1.0 -2.0)))
+      (< (- fixnum-min 1) -1.0))
     
-    (for-each ;; FIXME: compare agains floats.
-     (lambda (x)
-       (pass-if (n=2^x-1 x)
-        (not (< (2^x-1 x) (- (2^x-1 x) 1))))
-       (pass-if (n=-2^x+1 x)
-        (not (< (- (2^x-1 x)) (- (- (2^x-1 x)) 1))))
-       (pass-if (n=2^ x)
-        (not (< (2^ x) (- (2^ x) 1))))
-       (pass-if (n=-2^ x)
-        (not (< (- (2^ x)) (- (- (2^ x)) 1)))))
-     bit-widths))
+    (pass-if "n = fixnum-max"
+      (< (- fixnum-min 1) fixnum-max))
+
+    (pass-if "n = fixnum-max + 1"
+      (< (- fixnum-min 1) (+ fixnum-max 1)))
 
-  ;; Special case:  
+    (pass-if "n = fixnum-min"
+      (< (- fixnum-min 1) fixnum-min))
 
-  )
\ No newline at end of file
+    (pass-if "n = fixnum-min - 1"
+      (not (< (- fixnum-min 1) (- fixnum-min 1))))))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]