2
;;;; Author: Paul Dietz
3
;;;; Created: Mon Feb 9 20:20:46 2004
4
;;;; Contains: Tests for SIN
9
(loop for i from -1000 to 1000
10
for rlist = (multiple-value-list (sin i))
12
always (and (null (cdr rlist))
14
(or (rationalp y) (typep y 'single-float))))
18
(loop for x = (- (random 2000.0s0) 1000.0s0)
19
for rlist = (multiple-value-list (sin x))
22
always (and (null (cdr rlist))
24
(typep y 'short-float)))
28
(loop for x = (- (random 2000.0f0) 1000.0f0)
29
for rlist = (multiple-value-list (sin x))
32
always (and (null (cdr rlist))
34
(typep y 'single-float)))
38
(loop for x = (- (random 2000.0d0) 1000.0d0)
39
for rlist = (multiple-value-list (sin x))
42
always (and (null (cdr rlist))
44
(typep y 'double-float)))
48
(loop for x = (- (random 2000.0l0) 1000.0l0)
49
for rlist = (multiple-value-list (sin x))
52
always (and (null (cdr rlist))
54
(typep y 'long-float)))
59
(or (eqlt r 0) (eqlt r 0.0)))
79
(loop for i from 1 to 100
80
unless (approx= (sin i) (sin (coerce i 'single-float)))
85
(approx= (sin (coerce (/ pi 2) 'single-float)) 1.0)
89
(approx= (sin (coerce (/ pi -2) 'single-float)) -1.0)
93
(approx= (sin (coerce (/ pi 2) 'short-float)) 1.0s0)
97
(approx= (sin (coerce (/ pi -2) 'short-float)) -1.0s0)
101
(approx= (sin (coerce (/ pi 2) 'double-float)) 1.0d0)
105
(approx= (sin (coerce (/ pi -2) 'double-float)) -1.0d0)
109
(approx= (sin (coerce (/ pi 2) 'long-float)) 1.0l0)
113
(approx= (sin (coerce (/ pi -2) 'long-float)) -1.0l0)
117
(loop for r = (- (random 2000) 1000)
118
for i = (- (random 20) 10)
119
for y = (sin (complex r i))
125
(loop for r = (- (random 2000.0s0) 1000.0s0)
126
for i = (- (random 20.0s0) 10.0s0)
127
for y = (sin (complex r i))
133
(loop for r = (- (random 2000.0f0) 1000.0f0)
134
for i = (- (random 20.0f0) 10.0f0)
135
for y = (sin (complex r i))
141
(loop for r = (- (random 2000.0d0) 1000.0d0)
142
for i = (- (random 20.0d0) 10.0d0)
143
for y = (sin (complex r i))
149
(loop for r = (- (random 2000.0l0) 1000.0l0)
150
for i = (- (random 20.0l0) 10.0l0)
151
for y = (sin (complex r i))
157
;;; More accuracy tests here
162
(signals-error (sin) program-error)
166
(signals-error (sin 0.0 0.0) program-error)
170
(loop for x in *mini-universe*
171
unless (or (numberp x)
172
(eval `(signals-error (sin ',x) type-error)))