source: project/release/4/mathh/tags/3.2.4/tests/mathh-test.scm @ 34821

Last change on this file since 34821 was 34821, checked in by Kon Lovett, 3 years ago

rel 3.2.4

File size: 4.9 KB
Line 
1;;;; mathh-test
2;;;; Kon Lovett, May '17
3
4;;;; Issues
5;;;;
6
7(require-extension test)
8
9;;;
10
11(require-extension mathh)
12
13(test-begin "mathh")
14
15;;
16
17(test-group "ISO C Functions"
18
19        (test 1.0 (bessel-j0 0.0))
20        (test 0.0 (bessel-j1 0.0))
21        (test 1.0 (bessel-jn 0 0.0))
22        (test 0.0 (bessel-jn 1 0.0))
23
24        (test 0.088256964215677 (bessel-y0 1.0))
25        (test -0.781212821300289 (bessel-y1 1.0))
26        (test 0.088256964215677 (bessel-yn 0 1.0))
27        (test -0.781212821300289 (bessel-yn 1 1.0))
28
29        (test 1.0 (cosh 0.0))
30        (test 0.0 (sinh 0.0))
31        (test 0.0 (tanh 0.0))
32
33        (test 5.0 (hypot -5.0 0))
34
35        (test 1.0 (tgamma 1.0))
36        (test 0.0 (lgamma 1.0))
37
38        (test 2.0 (log10 100.0))
39        (test 3.0 (log2 8.0))
40        (test 0.0 (log1p 0.0))
41
42        (test 0.0 (fpmod 0.0 1.0))
43
44        (test (values 5.0 0.5) (modf 5.5))
45
46        (test 20.0 (ldexp 5.0 2))
47
48        (test 20.0 (scalbn 5.0 2))
49
50        (test (values 0.536870912 -30) (frexp 5.0e-10))
51)
52
53;;
54
55(test-group "BSD Functions"
56
57        (test-assert (signbit -1.0))
58        (test-assert (not (signbit 1.0)))
59        (test-assert (signbit -0.0))
60
61        (test -1.0 (copysign 1.0 -1.0))
62        (test 1.0 (copysign -1.0 1.0))
63
64        (test 1.0 (nextafter 1.0 -1.0))
65        (test -1.0 (nextafter -1.0 1.0))
66
67        (test 2.4662 (cbrt 15.0))
68)
69
70;;
71
72(test-group "Function fpclass"
73
74        (test 'negative-infinite (fpclass -inf.0))
75        (test 'signaling-nan (fpclass -nan.0))
76        (test 'negative-zero (fpclass -0.0))
77        (test 'positive-normal (fpclass 0.741573033707865))
78        (test 'positive-normal (fpclass (fp/ 33.0 44.5)))
79)
80
81;;
82
83(test-group "Function fpclassify"
84
85        (test 'infinite (fpclassify -inf.0))
86        (test 'nan (fpclassify -nan.0))
87        (test 'zero (fpclassify -0.0))
88        (test 'normal (fpclassify 0.741573033707865))
89        (test 'normal (fpclassify (fp/ 33.0 44.5)))
90)
91
92;;;
93
94;(import (prefix mathh-consts C:))
95;(require-library mathh-consts)
96;=> C:sqrt2 C:degree C:ln2 C:log2e C:e
97(require-extension mathh-consts)
98
99(test-group "Math Constants"
100
101        ; Well, some
102        (test sqrt2 (sqrt 2.0))
103        (test degree (/ pi 180.0))
104        (test ln2 (log 2.0))
105        (test log2e (log2 e))
106)
107
108;;;
109
110(test-group "Inline failure #1340"
111  (define (factorial x)
112    (gamma (+ 1 x)) )
113  (test 362880.0 (factorial 9))
114)
115
116;;;
117
118(require-extension fp-utils)
119
120(define-constant 5eps (fp/ 9.0 1e06))
121(define-constant 4eps (fp/ 9.0 1e05))
122
123(test-group "FP Utils"
124
125  (test-assert (fpzero? 0.0))
126  (test-assert (not (fpzero? 1.0)))
127  (test-assert (not (fpzero? maximum-flonum)))
128  (test-assert (not (fpzero? minimum-flonum)))
129
130  (test-assert (not (fppositive? 0.0)))
131  (test-assert (not (fppositive? (fpneg minimum-flonum))))
132  (test-assert (fppositive? maximum-flonum))
133
134  (test-assert (fpcardinal? 0.0))
135  (test-assert (not (fpcardinal? (fpneg minimum-flonum))))
136  (test-assert (fpcardinal? maximum-flonum))
137
138  (test-assert (not (fpnegative? 0.0)))
139  (test-assert (fpnegative? (fpneg minimum-flonum)))
140  (test-assert (not (fpnegative? maximum-flonum)))
141
142        (test-assert (not (fpeven? 7.0)))
143        (test-assert (fpeven? 6.0))
144        (test-assert (not (fpodd? 6.0)))
145        (test-assert (fpodd? 7.0))
146
147        (test-assert (flonum? (fprandom)))
148        (test-assert (flonum? (fprandom 2456)))
149
150        (test 4.0 (fpadd1 3.0))
151        (test 2.0 (fpsub1 3.0))
152
153        (test 27.0 (fpcub 3.0))
154
155        (test 1.0 (fpmodulo 5.0 2.0))
156        (test 0.0 (fpmodulo 0.0 1.0))
157
158        (test 2.0 (fpquotient 5.0 2.0))
159        (test 1.0 (fpremainder 5.0 2.0))
160
161        (test-assert (fp~= 0.123456 0.123457 5eps))
162        (test-assert (fp~<= 0.123456 0.123457 5eps))
163        (test-assert (fp~>= 0.123456 0.123457 5eps))
164        (test-assert (fp~<= 0.123456 0.12346 5eps))
165        (test-assert (fp~>= 0.123456 0.12344 5eps))
166
167  (parameterize ((current-test-epsilon 4eps))
168          (test 5.6568 (fpdistance 1.0 1.0 5.0 5.0)) )
169
170        (receive (mx mn) (fpmax-and-min 1.0 -1.0 -16.0 13.0 2.0 16.0 7.0 -8.0)
171          (test "fpmax-and-min max" 16.0 mx)
172          (test "fpmax-and-min min" -16.0 mn) )
173)
174
175;;;
176
177(require-extension fx-utils)
178
179(test-group "FX Utils"
180
181  (test-assert (fxzero? 0))
182  (test-assert (not (fxzero? 1)))
183  (test-assert (not (fxzero? most-positive-fixnum)))
184  (test-assert (not (fxzero? most-negative-fixnum)))
185
186  (test-assert (not (fxpositive? 0)))
187  (test-assert (not (fxpositive? most-negative-fixnum)))
188  (test-assert (fxpositive? most-positive-fixnum))
189
190  (test-assert (fxcardinal? 0))
191  (test-assert (not (fxcardinal? most-negative-fixnum)))
192  (test-assert (fxcardinal? most-positive-fixnum))
193
194  (test-assert (not (fxnegative? 0)))
195  (test-assert (fxnegative? most-negative-fixnum))
196  (test-assert (not (fxnegative? most-positive-fixnum)))
197
198        (test-assert (fixnum? (fxrandom)))
199        (test-assert (fixnum? (fxrandom 2456)))
200
201        (test 4 (fxadd1 3))
202        (test 2 (fxsub1 3))
203
204        (test 27 (fxcub 3))
205
206        (test -1 (fxlog2 0))
207        (test 0 (fxlog2 1))
208        (test 1 (fxlog2 2))
209        (test 1 (fxlog2 3))
210        (test 2 (fxlog2 4))
211
212        (test -1 (fxpow2log2 0))
213        (test 4 (fxpow2log2 3))
214        (test 8 (fxpow2log2 7))
215        (test 16 (fxpow2log2 15))
216        (test 16 (fxpow2log2 16))
217        (test 32 (fxpow2log2 17))
218
219        (test 16 (fxdistance 1 1 5 5))
220
221        (receive (mx mn) (fxmax-and-min 1 -1 -16 13 2 16 7 -8)
222          (test "fxmax-and-min max" 16 mx)
223          (test "fxmax-and-min min" -16 mn) )
224)
225
226;;;
227
228(test-end "mathh")
229
230;;;
231
232(test-exit)
Note: See TracBrowser for help on using the repository browser.