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