diff --git a/ansi-tests/number-comparison.lsp b/ansi-tests/number-comparison.lsp
index a267b1e82f642a9543bb4db0d5ac637a6a2f7cfa..d40a54b4ebd251bd0ab95495c47d5057bd6b5bf6 100644
--- a/ansi-tests/number-comparison.lsp
+++ b/ansi-tests/number-comparison.lsp
@@ -157,6 +157,47 @@
 	  collect (list a b c d)))
   nil)
 
+;;; Comparison of a rational with a float
+
+(deftest =.17
+  (loop for x in '(1.0s0 1.0f0 1.0d0 1.0l0)
+	for eps in (list short-float-epsilon single-float-epsilon
+			 double-float-epsilon long-float-epsilon)
+	for exp = (nth-value 1 (decode-float eps))
+	for radix = (float-radix eps)
+	when (< (* (log radix 2) exp) 1000)
+	nconc
+	(let* ((rat (rational eps))
+	       (xrat (rational x)))
+	  (loop for i from 2 to 100
+		for rat/i = (/ rat i)
+		for xrat+rat/i = (+ xrat rat/i)
+		nconc
+		(if (= x xrat+rat/i)
+		    (list (list x i  xrat+rat/i))
+		  nil))))
+  nil)
+
+(deftest =.18
+  (loop for x in '(1.0s0 1.0f0 1.0d0 1.0l0)
+	for eps in (list short-float-negative-epsilon single-float-negative-epsilon
+			 double-float-negative-epsilon long-float-negative-epsilon)
+	for exp = (nth-value 1 (decode-float eps))
+	for radix = (float-radix eps)
+	when (< (* (log radix 2) exp) 1000)
+	nconc
+	(let* ((rat (rational eps))
+	       (xrat (rational x)))
+	  (loop for i from 2 to 100
+		for rat/i = (/ rat i)
+		for xrat-rat/i = (- xrat rat/i)
+		nconc
+		(if (= x xrat-rat/i)
+		    (list (list x i xrat-rat/i))
+		  nil))))
+  nil)
+
+
 (deftest =.order.1
   (let ((i 0) x y)
     (values
@@ -300,6 +341,45 @@
 		collect (list x y))))
   nil)
 
+(deftest /=.17
+  (loop for x in '(1.0s0 1.0f0 1.0d0 1.0l0)
+	for eps in (list short-float-epsilon single-float-epsilon
+			 double-float-epsilon long-float-epsilon)
+	for exp = (nth-value 1 (decode-float eps))
+	for radix = (float-radix eps)
+	when (< (* (log radix 2) exp) 1000)
+	nconc
+	(let* ((rat (rational eps))
+	       (xrat (rational x)))
+	  (loop for i from 2 to 100
+		for rat/i = (/ rat i)
+		for xrat+rat/i = (+ xrat rat/i)
+		nconc
+		(if (/= x xrat+rat/i)
+		    nil
+		    (list (list x i  xrat+rat/i))))))
+  nil)
+
+(deftest /=.18
+  (loop for x in '(1.0s0 1.0f0 1.0d0 1.0l0)
+	for eps in (list short-float-negative-epsilon single-float-negative-epsilon
+			 double-float-negative-epsilon long-float-negative-epsilon)
+	for exp = (nth-value 1 (decode-float eps))
+	for radix = (float-radix eps)
+	when (< (* (log radix 2) exp) 1000)
+	nconc
+	(let* ((rat (rational eps))
+	       (xrat (rational x)))
+	  (loop for i from 2 to 100
+		for rat/i = (/ rat i)
+		for xrat-rat/i = (- xrat rat/i)
+		nconc
+		(if (/= x xrat-rat/i)
+		    nil
+		    (list (list x i xrat-rat/i))))))
+  nil)
+
+
 (deftest /=.order.1
   (let ((i 0) x y)
     (values
@@ -511,6 +591,45 @@
 		  (< x (- x))))
   t)
 
+(deftest <.17
+  (loop for x in '(1.0s0 1.0f0 1.0d0 1.0l0)
+	for eps in (list short-float-epsilon single-float-epsilon
+			 double-float-epsilon long-float-epsilon)
+	for exp = (nth-value 1 (decode-float eps))
+	for radix = (float-radix eps)
+	when (< (* (log radix 2) exp) 1000)
+	nconc
+	(let* ((rat (rational eps))
+	       (xrat (rational x)))
+	  (loop for i from 2 to 100
+		for rat/i = (/ rat i)
+		for xrat+rat/i = (+ xrat rat/i)
+		nconc
+		(if (< x xrat+rat/i)
+		    nil
+		    (list (list x i  xrat+rat/i))))))
+  nil)
+
+(deftest <.18
+  (loop for x in '(1.0s0 1.0f0 1.0d0 1.0l0)
+	for eps in (list short-float-negative-epsilon single-float-negative-epsilon
+			 double-float-negative-epsilon long-float-negative-epsilon)
+	for exp = (nth-value 1 (decode-float eps))
+	for radix = (float-radix eps)
+	when (< (* (log radix 2) exp) 1000)
+	nconc
+	(let* ((rat (rational eps))
+	       (xrat (rational x)))
+	  (loop for i from 2 to 100
+		for rat/i = (/ rat i)
+		for xrat-rat/i = (- xrat rat/i)
+		nconc
+		(if (< x xrat-rat/i)
+		    (list (list x i xrat-rat/i))
+		  nil))))
+  nil)
+
+
 (deftest <.order.1
   (let ((i 0) x y)
     (values
@@ -718,6 +837,44 @@
 		    (<= x (- x))))
   t)
 
+(deftest <=.17
+  (loop for x in '(1.0s0 1.0f0 1.0d0 1.0l0)
+	for eps in (list short-float-epsilon single-float-epsilon
+			 double-float-epsilon long-float-epsilon)
+	for exp = (nth-value 1 (decode-float eps))
+	for radix = (float-radix eps)
+	when (< (* (log radix 2) exp) 1000)
+	nconc
+	(let* ((rat (rational eps))
+	       (xrat (rational x)))
+	  (loop for i from 2 to 100
+		for rat/i = (/ rat i)
+		for xrat+rat/i = (+ xrat rat/i)
+		nconc
+		(if (<= x xrat+rat/i)
+		    nil
+		    (list (list x i  xrat+rat/i))))))
+  nil)
+
+(deftest <=.18
+  (loop for x in '(1.0s0 1.0f0 1.0d0 1.0l0)
+	for eps in (list short-float-negative-epsilon single-float-negative-epsilon
+			 double-float-negative-epsilon long-float-negative-epsilon)
+	for exp = (nth-value 1 (decode-float eps))
+	for radix = (float-radix eps)
+	when (< (* (log radix 2) exp) 1000)
+	nconc
+	(let* ((rat (rational eps))
+	       (xrat (rational x)))
+	  (loop for i from 2 to 100
+		for rat/i = (/ rat i)
+		for xrat-rat/i = (- xrat rat/i)
+		nconc
+		(if (<= x xrat-rat/i)
+		    (list (list x i xrat-rat/i))
+		  nil))))
+  nil)
+
 (deftest <=.order.1
   (let ((i 0) x y)
     (values
@@ -808,6 +965,44 @@
 		  (> x (- x))))
   t)
 
+(deftest >.17
+  (loop for x in '(1.0s0 1.0f0 1.0d0 1.0l0)
+	for eps in (list short-float-epsilon single-float-epsilon
+			 double-float-epsilon long-float-epsilon)
+	for exp = (nth-value 1 (decode-float eps))
+	for radix = (float-radix eps)
+	when (< (* (log radix 2) exp) 1000)
+	nconc
+	(let* ((rat (rational eps))
+	       (xrat (rational x)))
+	  (loop for i from 2 to 100
+		for rat/i = (/ rat i)
+		for xrat+rat/i = (+ xrat rat/i)
+		nconc
+		(if (> x xrat+rat/i)
+		    (list (list x i  xrat+rat/i))
+		  nil))))
+  nil)
+
+(deftest >.18
+  (loop for x in '(1.0s0 1.0f0 1.0d0 1.0l0)
+	for eps in (list short-float-negative-epsilon single-float-negative-epsilon
+			 double-float-negative-epsilon long-float-negative-epsilon)
+	for exp = (nth-value 1 (decode-float eps))
+	for radix = (float-radix eps)
+	when (< (* (log radix 2) exp) 1000)
+	nconc
+	(let* ((rat (rational eps))
+	       (xrat (rational x)))
+	  (loop for i from 2 to 100
+		for rat/i = (/ rat i)
+		for xrat-rat/i = (- xrat rat/i)
+		nconc
+		(if (> x xrat-rat/i)
+		    nil
+		    (list (list x i  xrat-rat/i))))))
+  nil)
+
 (deftest >.order.1
   (let ((i 0) x y)
     (values
@@ -900,6 +1095,45 @@
 		    (>= x (- x))))
   t)
 
+
+(deftest >=.17
+  (loop for x in '(1.0s0 1.0f0 1.0d0 1.0l0)
+	for eps in (list short-float-epsilon single-float-epsilon
+			 double-float-epsilon long-float-epsilon)
+	for exp = (nth-value 1 (decode-float eps))
+	for radix = (float-radix eps)
+	when (< (* (log radix 2) exp) 1000)
+	nconc
+	(let* ((rat (rational eps))
+	       (xrat (rational x)))
+	  (loop for i from 2 to 100
+		for rat/i = (/ rat i)
+		for xrat+rat/i = (+ xrat rat/i)
+		nconc
+		(if (>= x xrat+rat/i)
+		    (list (list x i  xrat+rat/i))
+		  nil))))
+  nil)
+
+(deftest >=.18
+  (loop for x in '(1.0s0 1.0f0 1.0d0 1.0l0)
+	for eps in (list short-float-negative-epsilon single-float-negative-epsilon
+			 double-float-negative-epsilon long-float-negative-epsilon)
+	for exp = (nth-value 1 (decode-float eps))
+	for radix = (float-radix eps)
+	when (< (* (log radix 2) exp) 1000)
+	nconc
+	(let* ((rat (rational eps))
+	       (xrat (rational x)))
+	  (loop for i from 2 to 100
+		for rat/i = (/ rat i)
+		for xrat-rat/i = (- xrat rat/i)
+		nconc
+		(if (>= x xrat-rat/i)
+		    nil
+		    (list (list x i xrat-rat/i))))))
+  nil)
+
 (deftest >=.order.1
   (let ((i 0) x y)
     (values