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)