acosh.lsp 2.36 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
;-*- 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)
sds's avatar
sds committed
11
        (eqlt result 0.0)))
12
13
14
15
  t)

(deftest acosh.2
  (loop for type in '(short-float single-float double-float long-float)
sds's avatar
sds committed
16
17
18
19
20
        for zero = (coerce 0 type)
        for one = (coerce 1 type)
        unless (equal (multiple-value-list (acosh one))
                      (list zero))
        collect type)
21
22
23
24
  nil)

(deftest acosh.3
  (loop for type in '(short-float single-float double-float long-float)
sds's avatar
sds committed
25
26
27
28
29
        for zero = (coerce 0 `(complex ,type))
        for one = (coerce 1 `(complex ,type))
        unless (equal (multiple-value-list (acosh one))
                      (list zero))
        collect type)
30
31
32
33
  nil)

(deftest acosh.4
  (loop for den = (1+ (random 10000))
sds's avatar
sds committed
34
35
36
37
38
39
40
41
        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))
42
43
44
45
  nil)

(deftest acosh.5
  (loop for type in '(short-float single-float double-float long-float)
sds's avatar
sds committed
46
47
48
49
50
51
52
53
54
        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)))
55
56
57
58
  nil)

(deftest acosh.6
  (loop for type in '(short-float single-float double-float long-float)
sds's avatar
sds committed
59
60
61
62
63
64
65
66
67
68
        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 x1 x2 rlist)))
69
70
  nil)

71
72
73
74
(deftest acosh.7
  (macrolet ((%m (z) z)) (not (not (complexp (acosh (expand-in-current-env (%m 0)))))))
  t)

75
76
77
78
79
80
81
82
83
84
85
86
87
88
;;; 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
89
  (check-type-error #'acosh #'numberp)
90
91
92
93
94
95
  nil)





sds's avatar
sds committed
96
97
98



99
100