diff --git a/ansi-tests/gclload2.lsp b/ansi-tests/gclload2.lsp
index 10e0f85eacc8bfcb45cdc4e3b3f028be55c4ab2d..70bf291c05b5f60c780a8e04f5b99590418ecabc 100644
--- a/ansi-tests/gclload2.lsp
+++ b/ansi-tests/gclload2.lsp
@@ -256,6 +256,7 @@
 (load "subtypep-integer.lsp")
 (load "subtypep-float.lsp")
 (load "subtypep-rational.lsp")
+(load "subtypep-real.lsp")
 (load "subtypep-cons.lsp")
 (load "subtypep-member.lsp")
 (load "subtypep-eql.lsp")
diff --git a/ansi-tests/subtypep-cons.lsp b/ansi-tests/subtypep-cons.lsp
index 04cf9c97634803f7c60edf9f3f388befbfea5abd..b5063e832ea513d7baf4161d2db979f78397cc45 100644
--- a/ansi-tests/subtypep-cons.lsp
+++ b/ansi-tests/subtypep-cons.lsp
@@ -47,3 +47,18 @@
 	(cons * (not symbol))))
   nil)
 
+(deftest subtypep.cons.6
+  (check-equivalence
+   '(or (cons integer symbol) (cons integer integer)
+	(cons symbol integer) (cons symbol symbol))
+   '(cons (or integer symbol) (or integer symbol)))
+  nil)
+
+(deftest subtypep.cons.7
+  (check-equivalence
+   '(or (cons (integer 0 8) (integer 5 15))
+	(cons (integer 0 7) (integer 0 6))
+	(cons (integer 6 15) (integer 0 9))
+	(cons (integer 3 15) (integer 4 15)))
+   '(cons (integer 0 15) (integer 0 15)))
+  nil)
diff --git a/ansi-tests/subtypep-rational.lsp b/ansi-tests/subtypep-rational.lsp
index 2685f809d6d549aad21ee66f3f4dbf0ba7bf3218..05aa35a5d0650bd00220a1fdefcbc65c7d009438 100644
--- a/ansi-tests/subtypep-rational.lsp
+++ b/ansi-tests/subtypep-rational.lsp
@@ -143,9 +143,22 @@
    '(member 0 10))
   nil)
 
+(deftest subtypep.rational.13
+  (check-equivalence '(and integer (rational -1/2 1/2))
+		     '(integer 0 0))
+  nil)
 
+(deftest subtypep.rational.14
+  (check-equivalence '(and integer (rational -1/2 1/2))
+		     '(eql 0))
+  nil)
 
+(deftest subtypep.rational.15
+  (check-equivalence '(and integer (rational (-1/2) 1/2))
+		     '(integer 0 0))
+  nil)
 
-
-
-
+(deftest subtypep.rational.16
+  (check-equivalence '(and integer (rational (-1/2) (1/2)))
+		     '(integer 0 0))
+  nil)
\ No newline at end of file
diff --git a/ansi-tests/subtypep-real.lsp b/ansi-tests/subtypep-real.lsp
new file mode 100644
index 0000000000000000000000000000000000000000..16b7ab842a170cb7e1e05c29e202fa7815aca763
--- /dev/null
+++ b/ansi-tests/subtypep-real.lsp
@@ -0,0 +1,191 @@
+;-*- Mode:     Lisp -*-
+;;;; Author:   Paul Dietz
+;;;; Created:  Tue Feb 18 18:38:55 2003
+;;;; Contains: Tests of SUBTYPEP on REAL types.
+
+(in-package :cl-test)
+
+;;; SUBTYPEP on real types
+
+(deftest subtypep.real.1
+  (loop for tp1 in '((real 10) (real 10 *)
+		     (real 10 20)
+		     (real (10) 20)
+		     (real 10 (20))
+		     (real (10) (20))
+		     (real 10 1000000000000000)
+		     (real (10)) (real (10) *))
+	append
+	(loop for tp2 in '(real (real) (real *)
+			   (real * *) (real 10) (real 10 *)
+			   (real 0) (real 0 *)
+			   (real 19/2) (real 19/2 *)
+			   (real 9.5) (real 9.5 *)
+			   (real -1000000000000000))
+	      unless (equal (multiple-value-list
+			     (subtypep* tp1 tp2))
+			    '(t t))
+	      collect (list tp1 tp2)))
+  nil)
+
+(deftest subtypep.real.2
+  (loop for tp1 in '((real * 10)
+		     (real 0 10)
+		     (real 0 (10))
+		     (real (0) 10)
+		     (real (0) (10))
+		     (real -1000000000000000 10)
+		     (real * (10)))
+	append
+	(loop for tp2 in '(real (real) (real *)
+			   (real * *) (real * 10)
+			   (real * 21/2)
+			   (real * 10.5)
+			   (real * 1000000000000000))
+	      unless (equal (multiple-value-list
+			     (subtypep* tp1 tp2))
+			    '(t t))
+	      collect (list tp1 tp2)))
+  nil)
+
+(deftest subtypep.real.3
+  (loop for tp1 in '((real 10) (real 10 *)
+		     (real 10 20)
+		     (real 10 (21))
+		     (real 10 1000000000000000))
+	append
+	(loop for tp2 in '((real 11) (real 11 *)
+			   (real (10)) (real (10) *)
+			   (integer 10) (integer 10 *)
+			   (real 11)
+			   (real (10))
+			   (real 11 *)
+			   (real (10) *)
+			   (real * (20))
+			   (real * 19)
+			   (real * (20))
+			   (real * 19))
+	      unless (equal (multiple-value-list
+			     (subtypep* tp1 tp2))
+			    '(nil t))
+	      collect (list tp1 tp2)))
+  nil)
+
+(deftest subtypep.real.4
+  (loop for tp1 in '((real * 10)
+		     (real 0 10)
+		     (real (0) 10)
+		     (real -1000000000000000 10))
+	append
+	(loop for tp2 in '((real * 9)
+			   (real * (10))
+			   (integer * 10)
+			   (real * 9)
+			   (real * (10)))
+	      unless (equal (multiple-value-list
+			     (subtypep* tp1 tp2))
+			    '(nil t))
+	      collect (list tp1 tp2)))
+  nil)
+
+(deftest subtypep.real.5
+  (check-equivalence
+   '(or (eql 0) (real (0)))
+   '(real 0))
+  nil)
+
+(deftest subtypep.real.6
+  (check-equivalence
+   '(and (real 0 10) (real 5 15))
+   '(real 5 10))
+  nil)
+
+(deftest subtypep.real.7
+  (check-equivalence
+   '(and (real (0) 10) (real 5 15))
+   '(real 5 10))
+  nil)
+
+(deftest subtypep.real.8
+  (check-equivalence
+   '(and (real 0 (10)) (real 5 15))
+   '(real 5 (10)))
+  nil)
+
+(deftest subtypep.real.9
+  (check-equivalence
+   '(and (real (0) (10)) (real 5 15))
+   '(real 5 (10)))
+  nil)
+
+(deftest subtypep.real.10
+  (check-equivalence
+   '(and (real 0 10) (real (5) 15))
+   '(real (5) 10))
+  nil)
+
+(deftest subtypep.real.11
+  (check-equivalence
+   '(and (real 0 (10)) (real (5) 15))
+   '(real (5) (10)))
+  nil)
+
+(deftest subtypep.real.12
+  (check-equivalence
+   '(and (real 0 10) (not (real (0) (10))))
+   '(member 0 10))
+  nil)
+
+(deftest subtypep.real.13
+  (check-equivalence '(and integer (real -1/2 1/2))
+		     '(integer 0 0))
+  nil)
+
+(deftest subtypep.real.14
+  (check-equivalence '(and integer (real -1/2 1/2))
+		     '(eql 0))
+  nil)
+
+(deftest subtypep.real.15
+  (check-equivalence '(and integer (real (-1/2) 1/2))
+		     '(integer 0 0))
+  nil)
+
+(deftest subtypep.real.16
+  (check-equivalence '(and integer (real (-1/2) (1/2)))
+		     '(integer 0 0))
+  nil)
+
+(deftest subtypep.real.17
+  (check-equivalence '(real 0 10) '(real 0.0 10.0))
+  nil)
+
+(deftest subtypep.real.18
+  (check-equivalence '(and rational (real 0 10))
+		     '(rational 0 10))
+  nil)
+
+(deftest subtypep.real.19
+  (check-equivalence '(and rational (real 0 (10)))
+		     '(rational 0 (10)))
+  nil)
+
+(deftest subtypep.real.20
+  (check-equivalence '(and rational (real (0) (10)))
+		     '(rational (0) (10)))
+  nil)
+
+(deftest subtypep.real.21
+  (check-equivalence '(and rational (real 1/2 7/3))
+		     '(rational 1/2 7/3))
+  nil)
+
+(deftest subtypep.real.22
+  (check-equivalence '(and rational (real (1/11) (8/37)))
+		     '(rational (1/11) (8/37)))
+  nil)
+
+
+
+
+