]> gitweb.factorcode.org Git - factor.git/blob - basis/math/functions/functions-tests.factor
Merge branch 'master' of https://github.com/yac/factor
[factor.git] / basis / math / functions / functions-tests.factor
1 USING: kernel math math.constants math.functions math.order
2 math.private math.libm tools.test ;
3 IN: math.functions.tests
4
5 [ t ] [ 4 4 .00000001 ~ ] unit-test
6 [ t ] [ 4.0000001 4.0000001 .000001 ~ ] unit-test
7 [ f ] [ -4.0000001 4.0000001 .00001 ~ ] unit-test
8 [ t ] [ -.0000000000001 0 .0000000001 ~ ] unit-test
9 [ t ] [ 100 101 -.9 ~ ] unit-test
10 [ f ] [ 100 120 -.09 ~ ] unit-test
11 [ t ] [ 0 0 -.9 ~ ] unit-test
12 [ f ] [ 0 10 -.9 ~ ] unit-test
13
14 ! Lets get the argument order correct, eh?
15 [ 0.0 ] [ 0.0 1.0 fatan2 ] unit-test
16 [ 0.25 ] [ 2.0 -2.0 fpow ] unit-test
17
18 [ 4.0 ] [ 16 sqrt ] unit-test
19 [ 2.0 ] [ 4.0 0.5 ^ ] unit-test
20 [ C{ 0.0 4.0 } ] [ -16 sqrt ] unit-test
21
22 [ 4 ] [ 2 2 ^ ] unit-test
23 [ 1/4 ] [ 2 -2 ^ ] unit-test
24 [ t ] [ 2 0.5 ^ 2 ^ 2 2.00001 between? ] unit-test
25 [ t ] [ e pi i* ^ real-part -1.0 = ] unit-test
26 [ t ] [ e pi i* ^ imaginary-part -0.00001 0.00001 between? ] unit-test
27
28 [ 1/0. ] [ 2.0 1024 ^ ] unit-test
29 [ HEX: 1.0p-1024 ] [ 2.0 -1024 ^ ] unit-test
30
31 [ t ] [ 0 0 ^ fp-nan? ] unit-test
32 [ 0.0 ] [ 0.0 1.0 ^ ] unit-test
33 [ 1/0. ] [ 0 -2 ^ ] unit-test
34 [ t ] [ 0 0.0 ^ fp-nan? ] unit-test
35 [ t ] [ 0.0 0.0 ^ fp-nan? ] unit-test
36 [ 1/0. ] [ 0 -2.0 ^ ] unit-test
37 [ 0 ] [ 0 3.0 ^ ] unit-test
38 [ 0 ] [ 0 3 ^ ] unit-test
39
40 [ 0.0 ] [ 1 log ] unit-test
41 [ 0.0 ] [ 1.0 log ] unit-test
42 [ 1.0 ] [ e log ] unit-test
43
44 [ 0.0 ] [ 1.0 log10 ] unit-test
45 [ 1.0 ] [ 10.0 log10 ] unit-test
46 [ 2.0 ] [ 100.0 log10 ] unit-test
47 [ 3.0 ] [ 1000.0 log10 ] unit-test
48 [ 4.0 ] [ 10000.0 log10 ] unit-test
49
50 [ t ] [ 1 exp e 1.e-10 ~ ] unit-test
51 [ f ] [ 1 exp 0/0. 1.e-10 ~ ] unit-test
52 [ f ] [ 0/0. 1 exp 1.e-10 ~ ] unit-test
53 [ t ] [ 1.0 exp e 1.e-10 ~ ] unit-test
54 [ t ] [ -1 exp e * 1.0 1.e-10 ~ ] unit-test
55 [ f ] [ 1/0. 1/0. 1.e-10 ~ ] unit-test
56 [ f ] [ 1/0. -1/0. 1.e-10 ~ ] unit-test
57 [ f ] [ 1/0. 0/0. 1.e-10 ~ ] unit-test
58 [ f ] [ 0/0. -1/0. 1.e-10 ~ ] unit-test
59
60 [ 1.0 ] [ 0 cosh ] unit-test
61 [ 1.0 ] [ 0.0 cosh ] unit-test
62 [ 0.0 ] [ 1 acosh ] unit-test
63 [ 0.0 ] [ 1.0 acosh ] unit-test
64
65 [ 1.0 ] [ 0 cos ] unit-test
66 [ 1.0 ] [ 0.0 cos ] unit-test
67 [ 0.0 ] [ 1 acos ] unit-test
68 [ 0.0 ] [ 1.0 acos ] unit-test
69
70 [ 0.0 ] [ 0 sinh ] unit-test
71 [ 0.0 ] [ 0.0 sinh ] unit-test
72 [ 0.0 ] [ 0 asinh ] unit-test
73 [ 0.0 ] [ 0.0 asinh ] unit-test
74
75 [ 0.0 ] [ 0 sin ] unit-test
76 [ 0.0 ] [ 0.0 sin ] unit-test
77 [ 0.0 ] [ 0 asin ] unit-test
78 [ 0.0 ] [ 0.0 asin ] unit-test
79
80 [ 0.0 ] [ 0 tan ] unit-test
81 [ t ] [ pi 2 / tan 1.e10 > ] unit-test
82
83 [ t ] [ 10 atan real? ] unit-test
84 [ t ] [ 10.0 atan real? ] unit-test
85 [ f ] [ 10 atanh real? ] unit-test
86 [ f ] [ 10.0 atanh real? ] unit-test
87
88 [ t ] [ 10 asin sin 10 1.e-10 ~ ] unit-test
89 [ t ] [ -1 sqrt neg dup acos cos 1.e-10 ~ ] unit-test
90 [ t ] [ -100 atan tan -100 1.e-10 ~ ] unit-test
91 [ t ] [ 10 asinh sinh 10 1.e-10 ~ ] unit-test
92 [ t ] [ 10 atanh tanh 10 1.e-10 ~ ] unit-test
93 [ t ] [ 0.5 atanh tanh 0.5 1.e-10 ~ ] unit-test
94
95 [ 100 ] [ 100 100 gcd nip ] unit-test
96 [ 100 ] [ 1000 100 gcd nip ] unit-test
97 [ 100 ] [ 100 1000 gcd nip ] unit-test
98 [ 4 ] [ 132 64 gcd nip ] unit-test
99 [ 4 ] [ -132 64 gcd nip ] unit-test
100 [ 4 ] [ -132 -64 gcd nip ] unit-test
101 [ 4 ] [ 132 -64 gcd nip ] unit-test
102 [ 4 ] [ -132 -64 gcd nip ] unit-test
103
104 [ 100 ] [ 100 >bignum 100 >bignum gcd nip ] unit-test
105 [ 100 ] [ 1000 >bignum 100 >bignum gcd nip ] unit-test
106 [ 100 ] [ 100 >bignum 1000 >bignum gcd nip ] unit-test
107 [ 4 ] [ 132 >bignum 64 >bignum gcd nip ] unit-test
108 [ 4 ] [ -132 >bignum 64 >bignum gcd nip ] unit-test
109 [ 4 ] [ -132 >bignum -64 >bignum gcd nip ] unit-test
110 [ 4 ] [ 132 >bignum -64 >bignum gcd nip ] unit-test
111 [ 4 ] [ -132 >bignum -64 >bignum gcd nip ] unit-test
112
113 [ 6 ] [
114     1326264299060955293181542400000006
115     1591517158873146351817850880000000
116     gcd nip
117 ] unit-test
118
119 [ 11 ] [
120     13262642990609552931815424
121     159151715887314635181785
122     gcd nip
123 ] unit-test
124
125 [ 3 ] [
126     13262642990609552931
127     1591517158873146351
128     gcd nip
129 ] unit-test
130
131 [ 26525285981219 ] [
132     132626429906095
133     159151715887314
134     gcd nip
135 ] unit-test
136
137
138 : verify-gcd ( a b -- ? )
139     2dup gcd
140     [ rot * swap rem ] dip = ;
141
142 [ t ] [ 123 124 verify-gcd ] unit-test
143 [ t ] [ 50 120 verify-gcd ] unit-test
144
145 [ t ] [ 0 42 divisor? ] unit-test
146 [ t ] [ 42 7 divisor? ] unit-test
147 [ t ] [ 42 -7 divisor? ] unit-test
148 [ t ] [ 42 42 divisor? ] unit-test
149 [ f ] [ 42 16 divisor? ] unit-test
150
151 [ 3 ] [ 5 7 mod-inv ] unit-test
152 [ 78572682077 ] [ 234829342 342389423843 mod-inv ] unit-test
153
154 [ 2 10 mod-inv ] must-fail
155
156 [ t ] [ 0 0 ^ fp-nan? ] unit-test
157 [ 1 ] [ 10 0 ^ ] unit-test
158 [ 1/8 ] [ 1/2 3 ^ ] unit-test
159 [ 1/8 ] [ 2 -3 ^ ] unit-test
160 [ t ] [ 1 100 shift 2 100 ^ = ] unit-test
161
162 [ 1 ] [ 7/8 ceiling ] unit-test
163 [ 2 ] [ 3/2 ceiling ] unit-test
164 [ 0 ] [ -7/8 ceiling ] unit-test
165 [ -1 ] [ -3/2 ceiling ] unit-test
166
167 [ 4.0 ] [ 4.5 truncate ] unit-test
168 [ 4.0 ] [ 4.5 floor ] unit-test
169 [ 5.0 ] [ 4.5 ceiling ] unit-test
170
171 [ -4.0 ] [ -4.5 truncate ] unit-test
172 [ -5.0 ] [ -4.5 floor ] unit-test
173 [ -4.0 ] [ -4.5 ceiling ] unit-test
174
175 [ -4.0 ] [ -4.0 truncate ] unit-test
176 [ -4.0 ] [ -4.0 floor ] unit-test
177 [ -4.0 ] [ -4.0 ceiling ] unit-test
178
179 [ -5.0 ] [ -4.5 round ] unit-test
180 [ -4.0 ] [ -4.4 round ] unit-test
181 [ 5.0 ] [ 4.5 round ] unit-test
182 [ 4.0 ] [ 4.4 round ] unit-test
183
184 [ 6 59967 ] [ 3837888 factor-2s ] unit-test
185 [ 6 -59967 ] [ -3837888 factor-2s ] unit-test
186
187 [ 1 ] [
188     183009416410801897
189     1067811677921310779
190     2135623355842621559
191     ^mod
192 ] unit-test
193
194 [ 1 ] [
195     183009416410801897
196     1067811677921310779
197     2135623355842621559
198     [ >bignum ] tri@ ^mod
199 ] unit-test
200
201 [ 1.0  ] [ 1.0 2.5 0.0 lerp ] unit-test
202 [ 2.5  ] [ 1.0 2.5 1.0 lerp ] unit-test
203 [ 1.75 ] [ 1.0 2.5 0.5 lerp ] unit-test
204
205 [ C{ 1 2 } ] [ C{ 1 2 } 1 ^ ] unit-test