diff --git a/ansi-tests/acosh.lsp b/ansi-tests/acosh.lsp
new file mode 100644
index 0000000000000000000000000000000000000000..4173b926c3e542ba56a6a179fae7514e7c2decb4
--- /dev/null
+++ b/ansi-tests/acosh.lsp
@@ -0,0 +1,99 @@
+;-*- Mode:     Lisp -*-
+;;;; Author:   Paul Dietz
+;;;; Created:  Wed Feb 11 19:20:53 2004
+;;;; Contains: Tests of ACOSH
+
+(in-package :cl-test)
+
+(deftest acosh.1
+  (let ((result (acosh 1)))
+    (or (eqlt result 0)
+	(eqlt result 0.0)))
+  t)
+
+(deftest acosh.2
+  (loop for type in '(short-float single-float double-float long-float)
+	for zero = (coerce 0 type)
+	for one = (coerce 1 type)
+	unless (equal (multiple-value-list (acosh one))
+		      (list zero))
+	collect type)
+  nil)
+
+(deftest acosh.3
+  (loop for type in '(short-float single-float double-float long-float)
+	for zero = (coerce 0 `(complex ,type))
+	for one = (coerce 1 `(complex ,type))
+	unless (equal (multiple-value-list (acosh one))
+		      (list zero))
+	collect type)
+  nil)
+
+(deftest acosh.4
+  (loop for den = (1+ (random 10000))
+	for num = (random (* 10 den))
+	for x = (/ num den)
+	for rlist = (multiple-value-list (acosh x))
+	for y = (car rlist)
+	repeat 1000
+	unless (and (null (cdr rlist))
+		    (numberp y))
+	collect (list x rlist))
+  nil)
+
+(deftest acosh.5
+  (loop for type in '(short-float single-float double-float long-float)
+	nconc
+	(loop
+	 for x = (1+ (random (coerce 1000 type)))
+	 for rlist = (multiple-value-list (acosh x))
+	 for y = (car rlist)
+	 repeat 1000
+	 unless (and (null (cdr rlist))
+		     (typep y type))
+	 collect (list x rlist)))
+  nil)
+
+(deftest acosh.6
+  (loop for type in '(short-float single-float double-float long-float)
+	nconc
+	(loop
+	 for x1 = (- (random (coerce 20 type)) 10)
+	 for x2 = (- (random (coerce 20 type)) 10)
+	 for rlist = (multiple-value-list (acosh (complex x1 x2)))
+	 for y = (car rlist)
+	 repeat 1000
+	 unless (and (null (cdr rlist))
+		     (typep y `(complex ,type)))
+	 collect (list x rlist)))
+  nil)
+
+;;; FIXME
+;;; Add accuracy tests here
+
+;;; Error tests
+
+(deftest acosh.error.1
+  (signals-error (acosh) program-error)
+  t)
+
+(deftest acosh.error.2
+  (signals-error (acosh 1.0 1.0) program-error)
+  t)
+
+(deftest acosh.error.3
+  (loop for x in *mini-universe*
+	unless (or (numberp x)
+		   (eval `(signals-error (acosh ',x) type-error)))
+	collect x)
+  nil)
+
+
+
+
+
+  
+			    
+  
+
+
diff --git a/ansi-tests/asinh.lsp b/ansi-tests/asinh.lsp
new file mode 100644
index 0000000000000000000000000000000000000000..8749f8849b1a50982b33657a3507911f885172c4
--- /dev/null
+++ b/ansi-tests/asinh.lsp
@@ -0,0 +1,96 @@
+;-*- Mode:     Lisp -*-
+;;;; Author:   Paul Dietz
+;;;; Created:  Wed Feb 11 19:19:02 2004
+;;;; Contains: Tests of ASINH
+
+(in-package :cl-test)
+
+(deftest asinh.1
+  (let ((result (asinh 0)))
+    (or (eqlt result 0)
+	(eqlt result 0.0)))
+  t)
+
+(deftest asinh.2
+  (loop for type in '(short-float single-float double-float long-float)
+	for zero = (coerce 0 type)
+	unless (equal (multiple-value-list (asinh zero))
+		      (list zero))
+	collect type)
+  nil)
+
+(deftest asinh.3
+  (loop for type in '(short-float single-float double-float long-float)
+	for zero = (coerce 0 `(complex ,type))
+	unless (equal (multiple-value-list (asinh zero))
+		      (list zero))
+	collect type)
+  nil)
+
+(deftest asinh.4
+  (loop for den = (1+ (random 10000))
+	for num = (random (* 10 den))
+	for x = (/ num den)
+	for rlist = (multiple-value-list (asinh x))
+	for y = (car rlist)
+	repeat 1000
+	unless (and (null (cdr rlist))
+		    (numberp y))
+	collect (list x rlist))
+  nil)
+
+(deftest asinh.5
+  (loop for type in '(short-float single-float double-float long-float)
+	nconc
+	(loop
+	 for x = (- (random (coerce 20 type)) 10)
+	 for rlist = (multiple-value-list (asinh x))
+	 for y = (car rlist)
+	 repeat 1000
+	 unless (and (null (cdr rlist))
+		     (typep y type))
+	 collect (list x rlist)))
+  nil)
+
+(deftest asinh.6
+  (loop for type in '(short-float single-float double-float long-float)
+	nconc
+	(loop
+	 for x1 = (- (random (coerce 20 type)) 10)
+	 for x2 = (- (random (coerce 20 type)) 10)
+	 for rlist = (multiple-value-list (asinh (complex x1 x2)))
+	 for y = (car rlist)
+	 repeat 1000
+	 unless (and (null (cdr rlist))
+		     (typep y `(complex ,type)))
+	 collect (list x rlist)))
+  nil)
+
+;;; FIXME
+;;; Add accuracy tests here
+
+;;; Error tests
+
+(deftest asinh.error.1
+  (signals-error (asinh) program-error)
+  t)
+
+(deftest asinh.error.2
+  (signals-error (asinh 1.0 1.0) program-error)
+  t)
+
+(deftest asinh.error.3
+  (loop for x in *mini-universe*
+	unless (or (numberp x)
+		   (eval `(signals-error (asinh ',x) type-error)))
+	collect x)
+  nil)
+
+
+
+
+
+  
+			    
+  
+
diff --git a/ansi-tests/atanh.lsp b/ansi-tests/atanh.lsp
new file mode 100644
index 0000000000000000000000000000000000000000..c0f3e95d05634a26b999f970f68de06260671928
--- /dev/null
+++ b/ansi-tests/atanh.lsp
@@ -0,0 +1,126 @@
+;-*- Mode:     Lisp -*-
+;;;; Author:   Paul Dietz
+;;;; Created:  Wed Feb 11 19:26:25 2004
+;;;; Contains: Tests of ATANH
+
+(in-package :cl-test)
+
+(deftest atanh.1
+  (let ((result (atanh 0)))
+    (or (eqlt result 0)
+	(eqlt result 0.0)))
+  t)
+
+(deftest atanh.2
+  (loop for type in '(short-float single-float double-float long-float)
+	for zero = (coerce 0 type)
+	unless (equal (multiple-value-list (atanh zero))
+		      (list zero))
+	collect type)
+  nil)
+
+(deftest atanh.3
+  (loop for type in '(short-float single-float double-float long-float)
+	for zero = (coerce 0 `(complex ,type))
+	unless (equal (multiple-value-list (atanh zero))
+		      (list zero))
+	collect type)
+  nil)
+
+(deftest atanh.4
+  (loop for den = (1+ (random 10000))
+	for num = (random den)
+	for x = (/ num den)
+	for rlist = (multiple-value-list (atanh x))
+	for y = (car rlist)
+	repeat 1000
+	unless (and (null (cdr rlist))
+		    (numberp y))
+	collect (list x rlist))
+  nil)
+
+(deftest atanh.5
+  (loop for type in '(short-float single-float double-float long-float)
+	nconc
+	(loop
+	 for x = (if (eql (random 2) 0)
+		     (+ 2 (random (coerce 1000 type)))
+		   (- -2 (random (coerce 1000 type))))
+	 for rlist = (multiple-value-list (atanh x))
+	 for y = (car rlist)
+	 repeat 1000
+	 unless (and (null (cdr rlist))
+		     (typep y `(complex ,type)))
+	 collect (list x rlist)))
+  nil)
+
+(deftest atanh.5a
+  (loop for type in '(short-float single-float double-float long-float)
+	nconc
+	(loop
+	 for x = (- (random (coerce 1.9998s0 type)) 0.9999s0)
+	 for rlist = (multiple-value-list (atanh x))
+	 for y = (car rlist)
+	 repeat 1000
+	 unless (and (null (cdr rlist))
+		     (typep y type))
+	 collect (list x rlist)))
+  nil)
+
+(deftest atanh.6
+  (loop for type in '(short-float single-float double-float long-float)
+	nconc
+	(loop
+	 for x1 = (- (random (coerce 1.9998s0 type)) 0.9999s0)
+	 for rlist = (multiple-value-list (atanh (complex x1 0.0s0)))
+	 for y = (car rlist)
+	 repeat 1000
+	 unless (and (null (cdr rlist))
+		     (typep y `(complex ,type)))
+	 collect (list x rlist)))
+  nil)
+
+(deftest atanh.7
+  (loop for type in '(short-float single-float double-float long-float)
+	nconc
+	(loop
+	 for x1 = (- (random (coerce 1.9998s0 type)) 0.9999s0)
+	 for rlist = (multiple-value-list (atanh (complex 0.0s0 x1)))
+	 for y = (car rlist)
+	 repeat 1000
+	 unless (and (null (cdr rlist))
+		     (typep y `(complex ,type)))
+	 collect (list x rlist)))
+  nil)
+
+
+
+;;; FIXME
+;;; Add accuracy tests here
+
+;;; Error tests
+
+(deftest atanh.error.1
+  (signals-error (atanh) program-error)
+  t)
+
+(deftest atanh.error.2
+  (signals-error (atanh 1.0 1.0) program-error)
+  t)
+
+(deftest atanh.error.3
+  (loop for x in *mini-universe*
+	unless (or (numberp x)
+		   (eval `(signals-error (atanh ',x) type-error)))
+	collect x)
+  nil)
+
+
+
+
+
+  
+			    
+  
+
+
diff --git a/ansi-tests/cos.lsp b/ansi-tests/cos.lsp
index 512183387b6dd4e15a09f50c104b4b54335717ba..cec1cf7c9d049e3a7cde00879c77d351b4640cf9 100644
--- a/ansi-tests/cos.lsp
+++ b/ansi-tests/cos.lsp
@@ -153,6 +153,9 @@
 	always (numberp y))
   t)
 
+;;; FIXME
+;;; More accuracy tests here
+
 ;;; Error tests
 
 (deftest cos.error.1
diff --git a/ansi-tests/load-numbers.lsp b/ansi-tests/load-numbers.lsp
index d0aa2067e248b19fb1a5a2f69ff5ac292dd07564..a3a64e6ef638753cb05cfb038a0bb4c8cfee4210 100644
--- a/ansi-tests/load-numbers.lsp
+++ b/ansi-tests/load-numbers.lsp
@@ -33,7 +33,10 @@
 
 (load "sinh.lsp")
 (load "cosh.lsp")
-
+(load "tanh.lsp")
+(load "asinh.lsp")
+(load "acosh.lsp")
+(load "atanh.lsp")
 
 (load "times.lsp")
 (load "plus.lsp")
diff --git a/ansi-tests/numbers-aux.lsp b/ansi-tests/numbers-aux.lsp
index 8979984a5986f432dbe85045117065791d87a33c..cd5bdd5ddc8c265e13dbdc257ee329dca2136e9b 100644
--- a/ansi-tests/numbers-aux.lsp
+++ b/ansi-tests/numbers-aux.lsp
@@ -265,6 +265,7 @@
 
 (defun epsilon (number)
   (etypecase number
+    (complex (* 2 (epsilon (realpart number)))) ;; crude
     (short-float short-float-epsilon)
     (single-float single-float-epsilon)
     (double-float double-float-epsilon)
@@ -273,6 +274,7 @@
 
 (defun negative-epsilon (number)
   (etypecase number
+    (complex (* 2 (negative-epsilon (realpart number)))) ;; crude
     (short-float short-float-negative-epsilon)
     (single-float single-float-negative-epsilon)
     (double-float double-float-negative-epsilon)
diff --git a/ansi-tests/sin.lsp b/ansi-tests/sin.lsp
index b03c8852f62a1cb6aa6d37c67fd9ad632ef65f32..723dc36d7e16d79f98243ecb7098adb9b7c5994d 100644
--- a/ansi-tests/sin.lsp
+++ b/ansi-tests/sin.lsp
@@ -153,6 +153,9 @@
 	always (numberp y))
   t)
 
+;;; FIXME
+;;; More accuracy tests here
+
 ;;; Error tests
 
 (deftest sin.error.1
diff --git a/ansi-tests/tan.lsp b/ansi-tests/tan.lsp
index f6532ff8134d04a273839aab64b1d562665729e2..fa2764ae62c43d73c2eab67f6909340532831126 100644
--- a/ansi-tests/tan.lsp
+++ b/ansi-tests/tan.lsp
@@ -140,6 +140,9 @@
 	always (numberp y))
   t)
 
+;;; FIXME
+;;; More accuracy tests here
+
 ;;; Error tests
 
 (deftest tan.error.1
diff --git a/ansi-tests/tanh.lsp b/ansi-tests/tanh.lsp
new file mode 100644
index 0000000000000000000000000000000000000000..b9fa3e7eb23d7a2496f3d8e5d4d90739f6f6f201
--- /dev/null
+++ b/ansi-tests/tanh.lsp
@@ -0,0 +1,87 @@
+;-*- Mode:     Lisp -*-
+;;;; Author:   Paul Dietz
+;;;; Created:  Wed Feb 11 19:16:35 2004
+;;;; Contains: Tests of TANH
+
+(in-package :cl-test)
+
+(deftest tanh.1
+  (let ((result (tanh 0)))
+    (or (eqlt result 0)
+	(eqlt result 0.0)))
+  t)
+
+(deftest tanh.2
+  (loop for type in '(short-float single-float double-float long-float)
+	for zero = (coerce 0 type)
+	unless (equal (multiple-value-list (tanh zero))
+		      (list zero))
+	collect type)
+  nil)
+
+(deftest tanh.3
+  (loop for type in '(short-float single-float double-float long-float)
+	for zero = (coerce 0 `(complex ,type))
+	unless (equal (multiple-value-list (tanh zero))
+		      (list zero))
+	collect type)
+  nil)
+
+(deftest tanh.4
+  (loop for den = (1+ (random 10000))
+	for num = (random (* 10 den))
+	for x = (/ num den)
+	for rlist = (multiple-value-list (tanh x))
+	for y = (car rlist)
+	repeat 1000
+	unless (and (null (cdr rlist))
+		    (numberp y))
+	collect (list x rlist))
+  nil)
+
+(deftest tanh.5
+  (loop for type in '(short-float single-float double-float long-float)
+	nconc
+	(loop
+	 for x = (- (random (coerce 20 type)) 10)
+	 for rlist = (multiple-value-list (tanh x))
+	 for y = (car rlist)
+	 repeat 1000
+	 unless (and (null (cdr rlist))
+		     (typep y type))
+	 collect (list x rlist)))
+  nil)
+
+(deftest tanh.6
+  (loop for type in '(short-float single-float double-float long-float)
+	nconc
+	(loop
+	 for x1 = (- (random (coerce 20 type)) 10)
+	 for x2 = (- (random (coerce 20 type)) 10)
+	 for rlist = (multiple-value-list (tanh (complex x1 x2)))
+	 for y = (car rlist)
+	 repeat 1000
+	 unless (and (null (cdr rlist))
+		     (typep y `(complex ,type)))
+	 collect (list x rlist)))
+  nil)
+
+;;; FIXME
+;;; Add accuracy tests here
+
+;;; Error tests
+
+(deftest tanh.error.1
+  (signals-error (tanh) program-error)
+  t)
+
+(deftest tanh.error.2
+  (signals-error (tanh 1.0 1.0) program-error)
+  t)
+
+(deftest tanh.error.3
+  (loop for x in *mini-universe*
+	unless (or (numberp x)
+		   (eval `(signals-error (tanh ',x) type-error)))
+	collect x)
+  nil)