]> gitweb.factorcode.org Git - factor.git/blob - extra/math/matrices/simd/simd-tests.factor
Update some copyright headers to follow the current convention
[factor.git] / extra / math / matrices / simd / simd-tests.factor
1 ! Copyright (C) 2009, 2010 Joe Groff.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: classes.struct math.matrices.simd math.vectors.simd math
4 literals math.constants math.functions specialized-arrays tools.test ;
5 QUALIFIED-WITH: alien.c-types c
6 FROM: math.matrices => m~ ;
7 SPECIALIZED-ARRAY: float-4
8 IN: math.matrices.simd.tests
9
10 {
11     S{ matrix4 f
12         float-4-array{
13             float-4{ 3.0 0.0 0.0 0.0 }
14             float-4{ 0.0 4.0 0.0 0.0 }
15             float-4{ 0.0 0.0 2.0 0.0 }
16             float-4{ 0.0 0.0 0.0 1.0 }
17         }
18     }
19 } [ float-4{ 3.0 4.0 2.0 0.0 } scale-matrix4 ] unit-test
20
21 {
22     S{ matrix4 f
23         float-4-array{
24             float-4{ 1/8. 0.0  0.0  0.0 }
25             float-4{ 0.0  1/4. 0.0  0.0 }
26             float-4{ 0.0  0.0  1/2. 0.0 }
27             float-4{ 0.0  0.0  0.0  1.0 }
28         }
29     }
30 } [ float-4{ 8.0 4.0 2.0 0.0 } ortho-matrix4 ] unit-test
31
32 {
33     S{ matrix4 f
34         float-4-array{
35             float-4{ 0.0 0.0 -1.0 0.0 }
36             float-4{ 1.0 0.0  0.0 0.0 }
37             float-4{ 0.0 1.0  0.0 0.0 }
38             float-4{ 3.0 4.0  2.0 1.0 }
39         }
40     }
41 } [
42     S{ matrix4 f
43         float-4-array{
44             float-4{  0.0 1.0 0.0 3.0 }
45             float-4{  0.0 0.0 1.0 4.0 }
46             float-4{ -1.0 0.0 0.0 2.0 }
47             float-4{  0.0 0.0 0.0 1.0 }
48         }
49     } transpose-matrix4
50 ] unit-test
51
52 {
53     S{ matrix4 f
54         float-4-array{
55             float-4{ 1.0 0.0 0.0 0.0 }
56             float-4{ 0.0 1.0 0.0 0.0 }
57             float-4{ 0.0 0.0 1.0 0.0 }
58             float-4{ 3.0 4.0 2.0 1.0 }
59         }
60     }
61 } [ float-4{ 3.0 4.0 2.0 0.0 } translation-matrix4 ] unit-test
62
63 { t } [
64     float-4{ $[ 1/2. sqrt ] 0.0 $[ 1/2. sqrt ] 0.0 } pi rotation-matrix4
65     S{ matrix4 f
66         float-4-array{
67             float-4{  0.0  0.0  1.0 0.0 }
68             float-4{  0.0 -1.0  0.0 0.0 }
69             float-4{  1.0  0.0  0.0 0.0 }
70             float-4{  0.0  0.0  0.0 1.0 }
71         }
72     }
73     1.0e-7 m~
74 ] unit-test
75
76 { t } [
77     float-4{ 0.0 1.0 0.0 1.0 } pi 1/2. * rotation-matrix4
78     S{ matrix4 f
79         float-4-array{
80             float-4{  0.0  0.0 -1.0 0.0 }
81             float-4{  0.0  1.0  0.0 0.0 }
82             float-4{  1.0  0.0  0.0 0.0 }
83             float-4{  0.0  0.0  0.0 1.0 }
84         }
85     }
86     1.0e-7 m~
87 ] unit-test
88
89 {
90     S{ matrix4 f
91         float-4-array{
92             float-4{  2.0  0.0  0.0  0.0 }
93             float-4{  0.0  3.0  0.0  0.0 }
94             float-4{  0.0  0.0  4.0  0.0 }
95             float-4{ 10.0 18.0 28.0  1.0 }
96         }
97     }
98 } [
99     S{ matrix4 f
100         float-4-array{
101             float-4{ 2.0 0.0 0.0 0.0 }
102             float-4{ 0.0 3.0 0.0 0.0 }
103             float-4{ 0.0 0.0 4.0 0.0 }
104             float-4{ 0.0 0.0 0.0 1.0 }
105         }
106     }
107     S{ matrix4 f
108         float-4-array{
109             float-4{ 1.0 0.0 0.0 0.0 }
110             float-4{ 0.0 1.0 0.0 0.0 }
111             float-4{ 0.0 0.0 1.0 0.0 }
112             float-4{ 5.0 6.0 7.0 1.0 }
113         }
114     }
115     m4.
116 ] unit-test
117
118 {
119     S{ matrix4 f
120         float-4-array{
121             float-4{ 3.0 0.0 0.0 0.0 }
122             float-4{ 0.0 4.0 0.0 0.0 }
123             float-4{ 0.0 0.0 5.0 0.0 }
124             float-4{ 5.0 6.0 7.0 2.0 }
125         }
126     }
127 } [
128     S{ matrix4 f
129         float-4-array{
130             float-4{ 2.0 0.0 0.0 0.0 }
131             float-4{ 0.0 3.0 0.0 0.0 }
132             float-4{ 0.0 0.0 4.0 0.0 }
133             float-4{ 0.0 0.0 0.0 1.0 }
134         }
135     }
136     S{ matrix4 f
137         float-4-array{
138             float-4{ 1.0 0.0 0.0 0.0 }
139             float-4{ 0.0 1.0 0.0 0.0 }
140             float-4{ 0.0 0.0 1.0 0.0 }
141             float-4{ 5.0 6.0 7.0 1.0 }
142         }
143     }
144     m4+
145 ] unit-test
146
147 {
148     S{ matrix4 f
149         float-4-array{
150             float-4{  1.0  0.0  0.0 0.0 }
151             float-4{  0.0  2.0  0.0 0.0 }
152             float-4{  0.0  0.0  3.0 0.0 }
153             float-4{ -5.0 -6.0 -7.0 0.0 }
154         }
155     }
156 } [
157     S{ matrix4 f
158         float-4-array{
159             float-4{ 2.0 0.0 0.0 0.0 }
160             float-4{ 0.0 3.0 0.0 0.0 }
161             float-4{ 0.0 0.0 4.0 0.0 }
162             float-4{ 0.0 0.0 0.0 1.0 }
163         }
164     }
165     S{ matrix4 f
166         float-4-array{
167             float-4{ 1.0 0.0 0.0 0.0 }
168             float-4{ 0.0 1.0 0.0 0.0 }
169             float-4{ 0.0 0.0 1.0 0.0 }
170             float-4{ 5.0 6.0 7.0 1.0 }
171         }
172     }
173     m4-
174 ] unit-test
175
176 {
177     S{ matrix4 f
178         float-4-array{
179             float-4{ 3.0 0.0 0.0 15.0 }
180             float-4{ 0.0 3.0 0.0 18.0 }
181             float-4{ 0.0 0.0 3.0 21.0 }
182             float-4{ 0.0 0.0 0.0  3.0 }
183         }
184     }
185 } [
186     S{ matrix4 f
187         float-4-array{
188             float-4{ 1.0 0.0 0.0 5.0 }
189             float-4{ 0.0 1.0 0.0 6.0 }
190             float-4{ 0.0 0.0 1.0 7.0 }
191             float-4{ 0.0 0.0 0.0 1.0 }
192         }
193     }
194     3.0 m4*n
195 ] unit-test
196
197 {
198     S{ matrix4 f
199         float-4-array{
200             float-4{ 3.0 0.0 0.0 15.0 }
201             float-4{ 0.0 3.0 0.0 18.0 }
202             float-4{ 0.0 0.0 3.0 21.0 }
203             float-4{ 0.0 0.0 0.0  3.0 }
204         }
205     }
206 } [
207     3.0
208     S{ matrix4 f
209         float-4-array{
210             float-4{ 1.0 0.0 0.0 5.0 }
211             float-4{ 0.0 1.0 0.0 6.0 }
212             float-4{ 0.0 0.0 1.0 7.0 }
213             float-4{ 0.0 0.0 0.0 1.0 }
214         }
215     }
216     n*m4
217 ] unit-test
218
219 {
220     S{ matrix4 f
221         float-4-array{
222             float-4{ 1/2. 0.0   0.0   0.0 }
223             float-4{ 0.0  1/2.  0.0   0.0 }
224             float-4{ 0.0  0.0  -6/4. -1.0 }
225             float-4{ 0.0  0.0 -10/4.  0.0 }
226         }
227     }
228 } [
229     float-4{ 2.0 2.0 0.0 0.0 } 1.0 5.0
230     frustum-matrix4
231 ] unit-test
232
233 { float-4{ 3.0 4.0 5.0 1.0 } }
234 [ float-4{ 1.0 1.0 1.0 1.0 } translation-matrix4 float-4{ 2.0 3.0 4.0 1.0 } m4.v ] unit-test
235
236 { float-4{ 2.0 2.5 3.0 1.0 } }
237 [
238     float-4{ 1.0 1.0 1.0 1.0 } translation-matrix4
239     float-4{ 0.5 0.5 0.5 1.0 } scale-matrix4 m4.
240     float-4{ 2.0 3.0 4.0 1.0 } m4.v
241 ] unit-test
242
243 {
244     S{ matrix4 f
245         float-4-array{
246             float-4{ 1.0  0.0  0.0  0.0 }
247             float-4{ 0.0  1.0  0.0  0.0 }
248             float-4{ 0.0  0.0  1.0  0.0 }
249             float-4{ 0.0  0.0  0.0  1.0 }
250         }
251     }
252 } [
253     float-4{ 1.0 0.0 0.0 0.0 } q>matrix4
254 ] unit-test
255
256 { t } [
257     pi 0.5 * 0.0 0.0 euler4 q>matrix4
258     S{ matrix4 f
259         float-4-array{
260             float-4{ 1.0  0.0  0.0  0.0 }
261             float-4{ 0.0  0.0  1.0  0.0 }
262             float-4{ 0.0 -1.0  0.0  0.0 }
263             float-4{ 0.0  0.0  0.0  1.0 }
264         }
265     }
266     1.0e-7 m~
267 ] unit-test
268
269 { t } [
270     0.0 pi 0.25 * 0.0 euler4 q>matrix4
271     S{ matrix4 f
272         float-4-array{
273             float-4{ $[ 1/2. sqrt ] 0.0 $[ 1/2. sqrt neg ] 0.0 }
274             float-4{ 0.0            1.0 0.0                0.0 }
275             float-4{ $[ 1/2. sqrt ] 0.0 $[ 1/2. sqrt     ] 0.0 }
276             float-4{ 0.0            0.0 0.0                1.0 }
277         }
278     }
279     1.0e-7 m~
280 ] unit-test