Initialize libbullet git in 2.0_beta.
[platform/upstream/libbullet.git] / Extras / vectormathlibrary / tests / test3_soa_c.c
1 /*
2   Copyright (C) 2006, 2007 Sony Computer Entertainment Inc.
3   All rights reserved.
4
5   Redistribution and use in source and binary forms,
6   with or without modification, are permitted provided that the
7   following conditions are met:
8    * Redistributions of source code must retain the above copyright
9      notice, this list of conditions and the following disclaimer.
10    * Redistributions in binary form must reproduce the above copyright
11      notice, this list of conditions and the following disclaimer in the
12      documentation and/or other materials provided with the distribution.
13    * Neither the name of the Sony Computer Entertainment Inc nor the names
14      of its contributors may be used to endorse or promote products derived
15      from this software without specific prior written permission.
16
17   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27   POSSIBILITY OF SUCH DAMAGE.
28 */
29
30 #define _VECTORMATH_SOA_TEST
31
32 #include "vectormath_soa.h"
33 #include "test.h"
34
35 int iteration = 0;
36
37 void
38 Matrix3_methods_test()
39 {
40     VmathSoaMatrix3 a_Matrix3, b_Matrix3;
41     VmathSoaMatrix4 a_Matrix4, b_Matrix4;
42     VmathSoaTransform3 a_Transform3, b_Transform3;
43     VmathSoaMatrix3 tmpM3_0, tmpM3_1, tmpM3_2, tmpM3_3, tmpM3_4, tmpM3_5;
44     VmathSoaVector3 a_Vector3, b_Vector3, c_Vector3, d_Vector3;
45     VmathSoaVector4 a_Vector4, b_Vector4, c_Vector4, d_Vector4;
46     VmathSoaPoint3 a_Point3, b_Point3, c_Point3, d_Point3;
47     VmathSoaQuat a_Quat, b_Quat, c_Quat, d_Quat;
48     VmathSoaVector3 tmpV3_0;
49     vec_float4 rndflt1, rndflt2, rndflt3, rndflt4, rndflt5, rndflt6;
50     rndflt1 = randfloat();
51     rndflt2 = randfloat();
52     rndflt3 = randfloat();
53     vmathSoaV3MakeFromElems( &a_Vector3, rndflt1, rndflt2, rndflt3 );
54     rndflt4 = randfloat();
55     rndflt5 = randfloat();
56     rndflt6 = randfloat();
57     vmathSoaV3MakeFromElems( &b_Vector3, rndflt4, rndflt5, rndflt6 );
58     rndflt1 = randfloat();
59     rndflt2 = randfloat();
60     rndflt3 = randfloat();
61     vmathSoaV3MakeFromElems( &c_Vector3, rndflt1, rndflt2, rndflt3 );
62     rndflt1 = randfloat();
63     rndflt2 = randfloat();
64     rndflt3 = randfloat();
65     vmathSoaV3MakeFromElems( &d_Vector3, rndflt1, rndflt2, rndflt3 );
66     vmathSoaV3Prints( &a_Vector3, "set Vector3 with floats" );
67     vmathSoaV3Prints( &b_Vector3, "set Vector3 with floats" );
68     vmathSoaV3Prints( &c_Vector3, "set Vector3 with floats" );
69     vmathSoaV3Prints( &d_Vector3, "set Vector3 with floats" );
70     rndflt1 = randfloat();
71     rndflt2 = randfloat();
72     rndflt3 = randfloat();
73     rndflt4 = randfloat();
74     vmathSoaV4MakeFromElems( &a_Vector4, rndflt1, rndflt2, rndflt3, rndflt4 );
75     rndflt3 = randfloat();
76     rndflt4 = randfloat();
77     rndflt5 = randfloat();
78     rndflt6 = randfloat();
79     vmathSoaV4MakeFromElems( &b_Vector4, rndflt3, rndflt4, rndflt5, rndflt6 );
80     rndflt1 = randfloat();
81     rndflt2 = randfloat();
82     rndflt3 = randfloat();
83     rndflt4 = randfloat();
84     vmathSoaV4MakeFromElems( &c_Vector4, rndflt1, rndflt2, rndflt3, rndflt4 );
85     rndflt1 = randfloat();
86     rndflt2 = randfloat();
87     rndflt3 = randfloat();
88     rndflt4 = randfloat();
89     vmathSoaV4MakeFromElems( &d_Vector4, rndflt1, rndflt2, rndflt3, rndflt4 );
90     vmathSoaV4Prints( &a_Vector4, "set Vector4 with floats" );
91     vmathSoaV4Prints( &b_Vector4, "set Vector4 with floats" );
92     vmathSoaV4Prints( &c_Vector4, "set Vector4 with floats" );
93     vmathSoaV4Prints( &d_Vector4, "set Vector4 with floats" );
94     rndflt1 = randfloat();
95     rndflt2 = randfloat();
96     rndflt3 = randfloat();
97     vmathSoaP3MakeFromElems( &a_Point3, rndflt1, rndflt2, rndflt3 );
98     rndflt4 = randfloat();
99     rndflt5 = randfloat();
100     rndflt6 = randfloat();
101     vmathSoaP3MakeFromElems( &b_Point3, rndflt4, rndflt5, rndflt6 );
102     rndflt1 = randfloat();
103     rndflt2 = randfloat();
104     rndflt3 = randfloat();
105     vmathSoaP3MakeFromElems( &c_Point3, rndflt1, rndflt2, rndflt3 );
106     rndflt1 = randfloat();
107     rndflt2 = randfloat();
108     rndflt3 = randfloat();
109     vmathSoaP3MakeFromElems( &d_Point3, rndflt1, rndflt2, rndflt3 );
110     vmathSoaP3Prints( &a_Point3, "set Point3 with floats" );
111     vmathSoaP3Prints( &b_Point3, "set Point3 with floats" );
112     vmathSoaP3Prints( &c_Point3, "set Point3 with floats" );
113     vmathSoaP3Prints( &d_Point3, "set Point3 with floats" );
114     rndflt1 = randfloat();
115     rndflt2 = randfloat();
116     rndflt3 = randfloat();
117     rndflt4 = randfloat();
118     vmathSoaQMakeFromElems( &a_Quat, rndflt1, rndflt2, rndflt3, rndflt4 );
119     rndflt3 = randfloat();
120     rndflt4 = randfloat();
121     rndflt5 = randfloat();
122     rndflt6 = randfloat();
123     vmathSoaQMakeFromElems( &b_Quat, rndflt3, rndflt4, rndflt5, rndflt6 );
124     rndflt1 = randfloat();
125     rndflt2 = randfloat();
126     rndflt3 = randfloat();
127     rndflt4 = randfloat();
128     vmathSoaQMakeFromElems( &c_Quat, rndflt1, rndflt2, rndflt3, rndflt4 );
129     rndflt1 = randfloat();
130     rndflt2 = randfloat();
131     rndflt3 = randfloat();
132     rndflt4 = randfloat();
133     vmathSoaQMakeFromElems( &d_Quat, rndflt1, rndflt2, rndflt3, rndflt4 );
134     vmathSoaQPrints( &a_Quat, "set Quat with floats" );
135     vmathSoaQPrints( &b_Quat, "set Quat with floats" );
136     vmathSoaQPrints( &c_Quat, "set Quat with floats" );
137     vmathSoaQPrints( &d_Quat, "set Quat with floats" );
138     vmathSoaM3MakeFromCols( &a_Matrix3, &a_Vector3, &b_Vector3, &c_Vector3 );
139     vmathSoaM3MakeFromCols( &b_Matrix3, &d_Vector3, &a_Vector3, &b_Vector3 );
140     vmathSoaM3Prints( &a_Matrix3, "set Matrix3 columns" );
141     vmathSoaM3Prints( &b_Matrix3, "set Matrix3 columns" );
142     vmathSoaM4MakeFromCols( &a_Matrix4, &a_Vector4, &b_Vector4, &c_Vector4, &d_Vector4 );
143     vmathSoaM4MakeFromCols( &b_Matrix4, &d_Vector4, &a_Vector4, &b_Vector4, &c_Vector4 );
144     vmathSoaM4Prints( &a_Matrix4, "set Matrix4 columns" );
145     vmathSoaM4Prints( &b_Matrix4, "set Matrix4 columns" );
146     vmathSoaT3MakeFromCols( &a_Transform3, &a_Vector3, &b_Vector3, &c_Vector3, &d_Vector3 );
147     vmathSoaT3MakeFromCols( &b_Transform3, &d_Vector3, &a_Vector3, &b_Vector3, &c_Vector3 );
148     vmathSoaT3Prints( &a_Transform3, "set Transform3 columns" );
149     vmathSoaT3Prints( &b_Transform3, "set Transform3 columns" );
150     vmathSoaM3Add( &tmpM3_0, &a_Matrix3, &b_Matrix3 );
151     vmathSoaM3Prints( &tmpM3_0, "Matrix3 + Matrix3" );
152     vmathSoaM3Sub( &tmpM3_1, &a_Matrix3, &b_Matrix3 );
153     vmathSoaM3Prints( &tmpM3_1, "Matrix3 - Matrix3" );
154     vmathSoaM3Neg( &tmpM3_2, &a_Matrix3 );
155     vmathSoaM3Prints( &tmpM3_2, "-Matrix3" );
156     vmathSoaM3ScalarMul( &tmpM3_3, &a_Matrix3, randfloat() );
157     vmathSoaM3Prints( &tmpM3_3, "Matrix3 * float" );
158     vmathSoaM3ScalarMul( &tmpM3_4, &a_Matrix3, randfloat() );
159     vmathSoaM3Prints( &tmpM3_4, "float * Matrix3" );
160     vmathSoaM3MulV3( &tmpV3_0, &a_Matrix3, &a_Vector3 );
161     vmathSoaV3Prints( &tmpV3_0, "Matrix3 * Vector3" );
162     vmathSoaM3Mul( &tmpM3_5, &a_Matrix3, &b_Matrix3 );
163     vmathSoaM3Prints( &tmpM3_5, "Matrix3 * Matrix3" );
164 }
165
166 void
167 Matrix4_methods_test()
168 {
169     VmathSoaMatrix3 a_Matrix3, b_Matrix3;
170     VmathSoaMatrix4 a_Matrix4, b_Matrix4;
171     VmathSoaTransform3 a_Transform3, b_Transform3;
172     VmathSoaMatrix4 tmpM4_0, tmpM4_1, tmpM4_2, tmpM4_3, tmpM4_4, tmpM4_5, tmpM4_6;
173     VmathSoaVector3 a_Vector3, b_Vector3, c_Vector3, d_Vector3;
174     VmathSoaVector4 a_Vector4, b_Vector4, c_Vector4, d_Vector4;
175     VmathSoaPoint3 a_Point3, b_Point3, c_Point3, d_Point3;
176     VmathSoaQuat a_Quat, b_Quat, c_Quat, d_Quat;
177     VmathSoaVector4 tmpV4_0, tmpV4_1, tmpV4_2;
178     vec_float4 rndflt1, rndflt2, rndflt3, rndflt4, rndflt5, rndflt6;
179     rndflt1 = randfloat();
180     rndflt2 = randfloat();
181     rndflt3 = randfloat();
182     vmathSoaV3MakeFromElems( &a_Vector3, rndflt1, rndflt2, rndflt3 );
183     rndflt4 = randfloat();
184     rndflt5 = randfloat();
185     rndflt6 = randfloat();
186     vmathSoaV3MakeFromElems( &b_Vector3, rndflt4, rndflt5, rndflt6 );
187     rndflt1 = randfloat();
188     rndflt2 = randfloat();
189     rndflt3 = randfloat();
190     vmathSoaV3MakeFromElems( &c_Vector3, rndflt1, rndflt2, rndflt3 );
191     rndflt1 = randfloat();
192     rndflt2 = randfloat();
193     rndflt3 = randfloat();
194     vmathSoaV3MakeFromElems( &d_Vector3, rndflt1, rndflt2, rndflt3 );
195     vmathSoaV3Prints( &a_Vector3, "set Vector3 with floats" );
196     vmathSoaV3Prints( &b_Vector3, "set Vector3 with floats" );
197     vmathSoaV3Prints( &c_Vector3, "set Vector3 with floats" );
198     vmathSoaV3Prints( &d_Vector3, "set Vector3 with floats" );
199     rndflt1 = randfloat();
200     rndflt2 = randfloat();
201     rndflt3 = randfloat();
202     rndflt4 = randfloat();
203     vmathSoaV4MakeFromElems( &a_Vector4, rndflt1, rndflt2, rndflt3, rndflt4 );
204     rndflt3 = randfloat();
205     rndflt4 = randfloat();
206     rndflt5 = randfloat();
207     rndflt6 = randfloat();
208     vmathSoaV4MakeFromElems( &b_Vector4, rndflt3, rndflt4, rndflt5, rndflt6 );
209     rndflt1 = randfloat();
210     rndflt2 = randfloat();
211     rndflt3 = randfloat();
212     rndflt4 = randfloat();
213     vmathSoaV4MakeFromElems( &c_Vector4, rndflt1, rndflt2, rndflt3, rndflt4 );
214     rndflt1 = randfloat();
215     rndflt2 = randfloat();
216     rndflt3 = randfloat();
217     rndflt4 = randfloat();
218     vmathSoaV4MakeFromElems( &d_Vector4, rndflt1, rndflt2, rndflt3, rndflt4 );
219     vmathSoaV4Prints( &a_Vector4, "set Vector4 with floats" );
220     vmathSoaV4Prints( &b_Vector4, "set Vector4 with floats" );
221     vmathSoaV4Prints( &c_Vector4, "set Vector4 with floats" );
222     vmathSoaV4Prints( &d_Vector4, "set Vector4 with floats" );
223     rndflt1 = randfloat();
224     rndflt2 = randfloat();
225     rndflt3 = randfloat();
226     vmathSoaP3MakeFromElems( &a_Point3, rndflt1, rndflt2, rndflt3 );
227     rndflt4 = randfloat();
228     rndflt5 = randfloat();
229     rndflt6 = randfloat();
230     vmathSoaP3MakeFromElems( &b_Point3, rndflt4, rndflt5, rndflt6 );
231     rndflt1 = randfloat();
232     rndflt2 = randfloat();
233     rndflt3 = randfloat();
234     vmathSoaP3MakeFromElems( &c_Point3, rndflt1, rndflt2, rndflt3 );
235     rndflt1 = randfloat();
236     rndflt2 = randfloat();
237     rndflt3 = randfloat();
238     vmathSoaP3MakeFromElems( &d_Point3, rndflt1, rndflt2, rndflt3 );
239     vmathSoaP3Prints( &a_Point3, "set Point3 with floats" );
240     vmathSoaP3Prints( &b_Point3, "set Point3 with floats" );
241     vmathSoaP3Prints( &c_Point3, "set Point3 with floats" );
242     vmathSoaP3Prints( &d_Point3, "set Point3 with floats" );
243     rndflt1 = randfloat();
244     rndflt2 = randfloat();
245     rndflt3 = randfloat();
246     rndflt4 = randfloat();
247     vmathSoaQMakeFromElems( &a_Quat, rndflt1, rndflt2, rndflt3, rndflt4 );
248     rndflt3 = randfloat();
249     rndflt4 = randfloat();
250     rndflt5 = randfloat();
251     rndflt6 = randfloat();
252     vmathSoaQMakeFromElems( &b_Quat, rndflt3, rndflt4, rndflt5, rndflt6 );
253     rndflt1 = randfloat();
254     rndflt2 = randfloat();
255     rndflt3 = randfloat();
256     rndflt4 = randfloat();
257     vmathSoaQMakeFromElems( &c_Quat, rndflt1, rndflt2, rndflt3, rndflt4 );
258     rndflt1 = randfloat();
259     rndflt2 = randfloat();
260     rndflt3 = randfloat();
261     rndflt4 = randfloat();
262     vmathSoaQMakeFromElems( &d_Quat, rndflt1, rndflt2, rndflt3, rndflt4 );
263     vmathSoaQPrints( &a_Quat, "set Quat with floats" );
264     vmathSoaQPrints( &b_Quat, "set Quat with floats" );
265     vmathSoaQPrints( &c_Quat, "set Quat with floats" );
266     vmathSoaQPrints( &d_Quat, "set Quat with floats" );
267     vmathSoaM3MakeFromCols( &a_Matrix3, &a_Vector3, &b_Vector3, &c_Vector3 );
268     vmathSoaM3MakeFromCols( &b_Matrix3, &d_Vector3, &a_Vector3, &b_Vector3 );
269     vmathSoaM3Prints( &a_Matrix3, "set Matrix3 columns" );
270     vmathSoaM3Prints( &b_Matrix3, "set Matrix3 columns" );
271     vmathSoaM4MakeFromCols( &a_Matrix4, &a_Vector4, &b_Vector4, &c_Vector4, &d_Vector4 );
272     vmathSoaM4MakeFromCols( &b_Matrix4, &d_Vector4, &a_Vector4, &b_Vector4, &c_Vector4 );
273     vmathSoaM4Prints( &a_Matrix4, "set Matrix4 columns" );
274     vmathSoaM4Prints( &b_Matrix4, "set Matrix4 columns" );
275     vmathSoaT3MakeFromCols( &a_Transform3, &a_Vector3, &b_Vector3, &c_Vector3, &d_Vector3 );
276     vmathSoaT3MakeFromCols( &b_Transform3, &d_Vector3, &a_Vector3, &b_Vector3, &c_Vector3 );
277     vmathSoaT3Prints( &a_Transform3, "set Transform3 columns" );
278     vmathSoaT3Prints( &b_Transform3, "set Transform3 columns" );
279     vmathSoaM4Add( &tmpM4_0, &a_Matrix4, &b_Matrix4 );
280     vmathSoaM4Prints( &tmpM4_0, "Matrix4 + Matrix4" );
281     vmathSoaM4Sub( &tmpM4_1, &a_Matrix4, &b_Matrix4 );
282     vmathSoaM4Prints( &tmpM4_1, "Matrix4 - Matrix4" );
283     vmathSoaM4Neg( &tmpM4_2, &a_Matrix4 );
284     vmathSoaM4Prints( &tmpM4_2, "-Matrix4" );
285     vmathSoaM4ScalarMul( &tmpM4_3, &a_Matrix4, randfloat() );
286     vmathSoaM4Prints( &tmpM4_3, "Matrix4 * float" );
287     vmathSoaM4ScalarMul( &tmpM4_4, &a_Matrix4, randfloat() );
288     vmathSoaM4Prints( &tmpM4_4, "float * Matrix4" );
289     vmathSoaM4MulV4( &tmpV4_0, &a_Matrix4, &a_Vector4 );
290     vmathSoaV4Prints( &tmpV4_0, "Matrix4 * Vector4" );
291     vmathSoaM4MulV3( &tmpV4_1, &a_Matrix4, &a_Vector3 );
292     vmathSoaV4Prints( &tmpV4_1, "Matrix4 * Vector3" );
293     vmathSoaM4MulP3( &tmpV4_2, &a_Matrix4, &a_Point3 );
294     vmathSoaV4Prints( &tmpV4_2, "Matrix4 * Point3" );
295     vmathSoaM4Mul( &tmpM4_5, &a_Matrix4, &b_Matrix4 );
296     vmathSoaM4Prints( &tmpM4_5, "Matrix4 * Matrix4" );
297     vmathSoaM4MulT3( &tmpM4_6, &a_Matrix4, &b_Transform3 );
298     vmathSoaM4Prints( &tmpM4_6, "Matrix4 * Transform3" );
299 }
300
301 void
302 Transform3_methods_test()
303 {
304     VmathSoaMatrix3 a_Matrix3, b_Matrix3;
305     VmathSoaMatrix4 a_Matrix4, b_Matrix4;
306     VmathSoaTransform3 a_Transform3, b_Transform3, tmpT3_0;
307     VmathSoaVector3 a_Vector3, b_Vector3, c_Vector3, d_Vector3;
308     VmathSoaVector4 a_Vector4, b_Vector4, c_Vector4, d_Vector4;
309     VmathSoaPoint3 a_Point3, b_Point3, c_Point3, d_Point3;
310     VmathSoaQuat a_Quat, b_Quat, c_Quat, d_Quat;
311     VmathSoaVector3 tmpV3_0;
312     VmathSoaPoint3 tmpP3_0;
313     vec_float4 rndflt1, rndflt2, rndflt3, rndflt4, rndflt5, rndflt6;
314     rndflt1 = randfloat();
315     rndflt2 = randfloat();
316     rndflt3 = randfloat();
317     vmathSoaV3MakeFromElems( &a_Vector3, rndflt1, rndflt2, rndflt3 );
318     rndflt4 = randfloat();
319     rndflt5 = randfloat();
320     rndflt6 = randfloat();
321     vmathSoaV3MakeFromElems( &b_Vector3, rndflt4, rndflt5, rndflt6 );
322     rndflt1 = randfloat();
323     rndflt2 = randfloat();
324     rndflt3 = randfloat();
325     vmathSoaV3MakeFromElems( &c_Vector3, rndflt1, rndflt2, rndflt3 );
326     rndflt1 = randfloat();
327     rndflt2 = randfloat();
328     rndflt3 = randfloat();
329     vmathSoaV3MakeFromElems( &d_Vector3, rndflt1, rndflt2, rndflt3 );
330     vmathSoaV3Prints( &a_Vector3, "set Vector3 with floats" );
331     vmathSoaV3Prints( &b_Vector3, "set Vector3 with floats" );
332     vmathSoaV3Prints( &c_Vector3, "set Vector3 with floats" );
333     vmathSoaV3Prints( &d_Vector3, "set Vector3 with floats" );
334     rndflt1 = randfloat();
335     rndflt2 = randfloat();
336     rndflt3 = randfloat();
337     rndflt4 = randfloat();
338     vmathSoaV4MakeFromElems( &a_Vector4, rndflt1, rndflt2, rndflt3, rndflt4 );
339     rndflt3 = randfloat();
340     rndflt4 = randfloat();
341     rndflt5 = randfloat();
342     rndflt6 = randfloat();
343     vmathSoaV4MakeFromElems( &b_Vector4, rndflt3, rndflt4, rndflt5, rndflt6 );
344     rndflt1 = randfloat();
345     rndflt2 = randfloat();
346     rndflt3 = randfloat();
347     rndflt4 = randfloat();
348     vmathSoaV4MakeFromElems( &c_Vector4, rndflt1, rndflt2, rndflt3, rndflt4 );
349     rndflt1 = randfloat();
350     rndflt2 = randfloat();
351     rndflt3 = randfloat();
352     rndflt4 = randfloat();
353     vmathSoaV4MakeFromElems( &d_Vector4, rndflt1, rndflt2, rndflt3, rndflt4 );
354     vmathSoaV4Prints( &a_Vector4, "set Vector4 with floats" );
355     vmathSoaV4Prints( &b_Vector4, "set Vector4 with floats" );
356     vmathSoaV4Prints( &c_Vector4, "set Vector4 with floats" );
357     vmathSoaV4Prints( &d_Vector4, "set Vector4 with floats" );
358     rndflt1 = randfloat();
359     rndflt2 = randfloat();
360     rndflt3 = randfloat();
361     vmathSoaP3MakeFromElems( &a_Point3, rndflt1, rndflt2, rndflt3 );
362     rndflt4 = randfloat();
363     rndflt5 = randfloat();
364     rndflt6 = randfloat();
365     vmathSoaP3MakeFromElems( &b_Point3, rndflt4, rndflt5, rndflt6 );
366     rndflt1 = randfloat();
367     rndflt2 = randfloat();
368     rndflt3 = randfloat();
369     vmathSoaP3MakeFromElems( &c_Point3, rndflt1, rndflt2, rndflt3 );
370     rndflt1 = randfloat();
371     rndflt2 = randfloat();
372     rndflt3 = randfloat();
373     vmathSoaP3MakeFromElems( &d_Point3, rndflt1, rndflt2, rndflt3 );
374     vmathSoaP3Prints( &a_Point3, "set Point3 with floats" );
375     vmathSoaP3Prints( &b_Point3, "set Point3 with floats" );
376     vmathSoaP3Prints( &c_Point3, "set Point3 with floats" );
377     vmathSoaP3Prints( &d_Point3, "set Point3 with floats" );
378     rndflt1 = randfloat();
379     rndflt2 = randfloat();
380     rndflt3 = randfloat();
381     rndflt4 = randfloat();
382     vmathSoaQMakeFromElems( &a_Quat, rndflt1, rndflt2, rndflt3, rndflt4 );
383     rndflt3 = randfloat();
384     rndflt4 = randfloat();
385     rndflt5 = randfloat();
386     rndflt6 = randfloat();
387     vmathSoaQMakeFromElems( &b_Quat, rndflt3, rndflt4, rndflt5, rndflt6 );
388     rndflt1 = randfloat();
389     rndflt2 = randfloat();
390     rndflt3 = randfloat();
391     rndflt4 = randfloat();
392     vmathSoaQMakeFromElems( &c_Quat, rndflt1, rndflt2, rndflt3, rndflt4 );
393     rndflt1 = randfloat();
394     rndflt2 = randfloat();
395     rndflt3 = randfloat();
396     rndflt4 = randfloat();
397     vmathSoaQMakeFromElems( &d_Quat, rndflt1, rndflt2, rndflt3, rndflt4 );
398     vmathSoaQPrints( &a_Quat, "set Quat with floats" );
399     vmathSoaQPrints( &b_Quat, "set Quat with floats" );
400     vmathSoaQPrints( &c_Quat, "set Quat with floats" );
401     vmathSoaQPrints( &d_Quat, "set Quat with floats" );
402     vmathSoaM3MakeFromCols( &a_Matrix3, &a_Vector3, &b_Vector3, &c_Vector3 );
403     vmathSoaM3MakeFromCols( &b_Matrix3, &d_Vector3, &a_Vector3, &b_Vector3 );
404     vmathSoaM3Prints( &a_Matrix3, "set Matrix3 columns" );
405     vmathSoaM3Prints( &b_Matrix3, "set Matrix3 columns" );
406     vmathSoaM4MakeFromCols( &a_Matrix4, &a_Vector4, &b_Vector4, &c_Vector4, &d_Vector4 );
407     vmathSoaM4MakeFromCols( &b_Matrix4, &d_Vector4, &a_Vector4, &b_Vector4, &c_Vector4 );
408     vmathSoaM4Prints( &a_Matrix4, "set Matrix4 columns" );
409     vmathSoaM4Prints( &b_Matrix4, "set Matrix4 columns" );
410     vmathSoaT3MakeFromCols( &a_Transform3, &a_Vector3, &b_Vector3, &c_Vector3, &d_Vector3 );
411     vmathSoaT3MakeFromCols( &b_Transform3, &d_Vector3, &a_Vector3, &b_Vector3, &c_Vector3 );
412     vmathSoaT3Prints( &a_Transform3, "set Transform3 columns" );
413     vmathSoaT3Prints( &b_Transform3, "set Transform3 columns" );
414     vmathSoaT3MulV3( &tmpV3_0, &a_Transform3, &a_Vector3 );
415     vmathSoaV3Prints( &tmpV3_0, "Transform3 * Vector3" );
416     vmathSoaT3MulP3( &tmpP3_0, &a_Transform3, &a_Point3 );
417     vmathSoaP3Prints( &tmpP3_0, "Transform3 * Point3" );
418     vmathSoaT3Mul( &tmpT3_0, &a_Transform3, &b_Transform3 );
419     vmathSoaT3Prints( &tmpT3_0, "Transform3 * Transform3" );
420 }
421
422 int main()
423 {
424     int i;
425     printf("\n __begin__ \n");
426     for ( i = 0; i < 2; i++ ) {
427         Matrix3_methods_test();
428         Matrix4_methods_test();
429         Transform3_methods_test();
430     }
431     printf("\n __end__ \n");
432     return 0;
433 }