acosh.lsp 1.97 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
;-*- 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)))
pfdietz's avatar
pfdietz committed
68
	 collect (list x1 x2 rlist)))
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
  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
85
  (check-type-error #'acosh #'numberp)
86 87 88 89 90 91 92 93 94 95 96
  nil)