37 m1(1)*m2(0),m1(1)*m2(1)
44 return DMatrix3x3(m1(0)*m2(0),m1(0)*m2(1),m1(0)*m2(2),
45 m1(1)*m2(0),m1(1)*m2(1),m1(1)*m2(2),
46 m1(2)*m2(0),m1(2)*m2(1),m1(2)*m2(2)
53 return DMatrix3x3(m1(0,0)*m2(0,0)+m1(0,1)*m2(1,0),
54 m1(0,0)*m2(0,1)+m1(0,1)*m2(1,1),
55 m1(0,0)*m2(0,2)+m1(0,1)*m2(1,2),
56 m1(1,0)*m2(0,0)+m1(1,1)*m2(1,0),
57 m1(1,0)*m2(0,1)+m1(1,1)*m2(1,1),
58 m1(1,0)*m2(0,2)+m1(1,1)*m2(1,2),
59 m1(2,0)*m2(0,0)+m1(2,1)*m2(1,0),
60 m1(2,0)*m2(0,1)+m1(2,1)*m2(1,1),
61 m1(2,0)*m2(0,2)+m1(2,1)*m2(1,2)
67 return DMatrix2x3(m1(0,0)*m2(0,0)+m1(0,1)*m2(1,0),
68 m1(0,0)*m2(0,1)+m1(0,1)*m2(1,1),
69 m1(0,0)*m2(0,2)+m1(0,1)*m2(1,2),
70 m1(1,0)*m2(0,0)+m1(1,1)*m2(1,0),
71 m1(1,0)*m2(0,1)+m1(1,1)*m2(1,1),
72 m1(1,0)*m2(0,2)+m1(1,1)*m2(1,2)
80 return DMatrix4x4(m1(0,0)*m2(0,0)+m1(0,1)*m2(1,0),
81 m1(0,0)*m2(0,1)+m1(0,1)*m2(1,1),
82 m1(0,0)*m2(0,2)+m1(0,1)*m2(1,2),
83 m1(0,0)*m2(0,3)+m1(0,1)*m2(1,3),
85 m1(1,0)*m2(0,0)+m1(1,1)*m2(1,0),
86 m1(1,0)*m2(0,1)+m1(1,1)*m2(1,1),
87 m1(1,0)*m2(0,2)+m1(1,1)*m2(1,2),
88 m1(1,0)*m2(0,3)+m1(1,1)*m2(1,3),
90 m1(2,0)*m2(0,0)+m1(2,1)*m2(1,0),
91 m1(2,0)*m2(0,1)+m1(2,1)*m2(1,1),
92 m1(2,0)*m2(0,2)+m1(2,1)*m2(1,2),
93 m1(2,0)*m2(0,3)+m1(2,1)*m2(1,3),
95 m1(3,0)*m2(0,0)+m1(3,1)*m2(1,0),
96 m1(3,0)*m2(0,1)+m1(3,1)*m2(1,1),
97 m1(3,0)*m2(0,2)+m1(3,1)*m2(1,2),
98 m1(3,0)*m2(0,3)+m1(3,1)*m2(1,3)
115 a11=_mm_set1_pd(m2(0,0));
116 a12=_mm_set1_pd(m2(0,1));
117 a13=_mm_set1_pd(m2(0,2));
118 a21=_mm_set1_pd(m2(1,0));
119 a22=_mm_set1_pd(m2(1,1));
120 a23=_mm_set1_pd(m2(1,2));
122 _mm_mul_pd(m1.GetV(0,1),a21)),
123 _mm_add_pd(_mm_mul_pd(m1.GetV(0,0),a12),
124 _mm_mul_pd(m1.GetV(0,1),a22)),
125 _mm_add_pd(_mm_mul_pd(m1.GetV(0,0),a13),
126 _mm_mul_pd(m1.GetV(0,1),a23)),
127 _mm_add_pd(_mm_mul_pd(m1.GetV(1,0),a11),
128 _mm_mul_pd(m1.GetV(1,1),a21)),
129 _mm_add_pd(_mm_mul_pd(m1.GetV(1,0),a12),
130 _mm_mul_pd(m1.GetV(1,1),a22)),
131 _mm_add_pd(_mm_mul_pd(m1.GetV(1,0),a13),
132 _mm_mul_pd(m1.GetV(1,1),a23)));
137 return DMatrix2x3(_mm_add_pd(_mm_mul_pd(m1.GetV(0),_mm_set1_pd(m2(0,0))),
138 _mm_mul_pd(m1.GetV(1),_mm_set1_pd(m2(1,0)))),
139 _mm_add_pd(_mm_mul_pd(m1.GetV(0),_mm_set1_pd(m2(0,1))),
140 _mm_mul_pd(m1.GetV(1),_mm_set1_pd(m2(1,1)))),
141 _mm_add_pd(_mm_mul_pd(m1.GetV(0),_mm_set1_pd(m2(0,2))),
142 _mm_mul_pd(m1.GetV(1),_mm_set1_pd(m2(1,2)))));
163 a11=_mm_set1_pd(m2(0,0));
164 a12=_mm_set1_pd(m2(0,1));
165 a13=_mm_set1_pd(m2(0,2));
166 a14=_mm_set1_pd(m2(0,3));
167 a21=_mm_set1_pd(m2(1,0));
168 a22=_mm_set1_pd(m2(1,1));
169 a23=_mm_set1_pd(m2(1,2));
170 a24=_mm_set1_pd(m2(1,3));
172 _mm_mul_pd(m1.GetV(0,1),a21)),
173 _mm_add_pd(_mm_mul_pd(m1.GetV(0,0),a12),
174 _mm_mul_pd(m1.GetV(0,1),a22)),
175 _mm_add_pd(_mm_mul_pd(m1.GetV(0,0),a13),
176 _mm_mul_pd(m1.GetV(0,1),a23)),
177 _mm_add_pd(_mm_mul_pd(m1.GetV(0,0),a14),
178 _mm_mul_pd(m1.GetV(0,1),a24)),
179 _mm_add_pd(_mm_mul_pd(m1.GetV(1,0),a11),
180 _mm_mul_pd(m1.GetV(1,1),a21)),
181 _mm_add_pd(_mm_mul_pd(m1.GetV(1,0),a12),
182 _mm_mul_pd(m1.GetV(1,1),a22)),
183 _mm_add_pd(_mm_mul_pd(m1.GetV(1,0),a13),
184 _mm_mul_pd(m1.GetV(1,1),a23)),
185 _mm_add_pd(_mm_mul_pd(m1.GetV(1,0),a14),
186 _mm_mul_pd(m1.GetV(1,1),a24)));
191 return DMatrix2x4(_mm_add_pd(_mm_mul_pd(m1.GetV(0),_mm_set1_pd(m2(0,0))),
192 _mm_mul_pd(m1.GetV(1),_mm_set1_pd(m2(1,0)))),
193 _mm_add_pd(_mm_mul_pd(m1.GetV(0),_mm_set1_pd(m2(0,1))),
194 _mm_mul_pd(m1.GetV(1),_mm_set1_pd(m2(1,1)))),
195 _mm_add_pd(_mm_mul_pd(m1.GetV(0),_mm_set1_pd(m2(0,2))),
196 _mm_mul_pd(m1.GetV(1),_mm_set1_pd(m2(1,2)))),
197 _mm_add_pd(_mm_mul_pd(m1.GetV(0),_mm_set1_pd(m2(0,3))),
198 _mm_mul_pd(m1.GetV(1),_mm_set1_pd(m2(1,3)))));
216 for (
unsigned int i=0;i<4;i++){
217 for (
unsigned int j=0;j<4;j++){
218 temp(i,j)=m1(i)*m2(j);
228 return DMatrix2x5(M(0,0),M(1,0),M(2,0),M(3,0),M(4,0),
229 M(0,1),M(1,1),M(2,1),M(3,1),M(4,1));
235 for (
unsigned int i=0;i<5;i++){
236 for (
unsigned int j=0;j<5;j++){
237 temp(i,j)=m1(i)*m1(j);
246 for (
unsigned int i=0;i<5;i++){
247 for (
unsigned int j=0;j<5;j++){
248 temp(i,j)=m1(i)*m2(j);
257 for (
unsigned int i=0;i<5;i++){
258 for (
unsigned int j=0;j<5;j++){
259 temp(i,j)=m1(i,0)*m2(0,j)+m1(i,1)*m2(1,j);
275 b1=_mm_set1_pd(m2(0));
276 b2=_mm_set1_pd(m2(1));
277 b3=_mm_set1_pd(m2(2));
278 b4=_mm_set1_pd(m2(3));
280 _mm_mul_pd(m1.GetV(0),b3),_mm_mul_pd(m1.GetV(0),b4),
281 _mm_mul_pd(m1.GetV(1),b1),_mm_mul_pd(m1.GetV(1),b2),
282 _mm_mul_pd(m1.GetV(1),b3),_mm_mul_pd(m1.GetV(1),b4)
291 return DMatrix2x5(_mm_setr_pd(M(0,0),M(0,1)),_mm_setr_pd(M(1,0),M(1,1)),
292 _mm_setr_pd(M(2,0),M(2,1)),_mm_setr_pd(M(3,0),M(3,1)),
293 _mm_setr_pd(M(4,0),M(4,1)));
305 b1=_mm_set1_pd(m1(0));
306 b2=_mm_set1_pd(m1(1));
307 b3=_mm_set1_pd(m1(2));
308 b4=_mm_set1_pd(m1(3));
309 b5=_mm_set1_pd(m1(4));
311 _mm_mul_pd(m1.GetV(0),b3),_mm_mul_pd(m1.GetV(0),b4),
312 _mm_mul_pd(m1.GetV(0),b5),
313 _mm_mul_pd(m1.GetV(1),b1),_mm_mul_pd(m1.GetV(1),b2),
314 _mm_mul_pd(m1.GetV(1),b3),_mm_mul_pd(m1.GetV(1),b4),
315 _mm_mul_pd(m1.GetV(1),b5),
316 _mm_mul_pd(m1.GetV(2),b1),_mm_mul_pd(m1.GetV(2),b2),
317 _mm_mul_pd(m1.GetV(2),b3),_mm_mul_pd(m1.GetV(2),b4),
318 _mm_mul_pd(m1.GetV(2),b5));
329 b1=_mm_set1_pd(m2(0));
330 b2=_mm_set1_pd(m2(1));
331 b3=_mm_set1_pd(m2(2));
332 b4=_mm_set1_pd(m2(3));
333 b5=_mm_set1_pd(m2(4));
335 _mm_mul_pd(m1.GetV(0),b3),_mm_mul_pd(m1.GetV(0),b4),
336 _mm_mul_pd(m1.GetV(0),b5),
337 _mm_mul_pd(m1.GetV(1),b1),_mm_mul_pd(m1.GetV(1),b2),
338 _mm_mul_pd(m1.GetV(1),b3),_mm_mul_pd(m1.GetV(1),b4),
339 _mm_mul_pd(m1.GetV(1),b5),
340 _mm_mul_pd(m1.GetV(2),b1),_mm_mul_pd(m1.GetV(2),b2),
341 _mm_mul_pd(m1.GetV(2),b3),_mm_mul_pd(m1.GetV(2),b4),
342 _mm_mul_pd(m1.GetV(2),b5));
357 a11=_mm_set1_pd(m2(0,0));
358 a12=_mm_set1_pd(m2(0,1));
359 a13=_mm_set1_pd(m2(0,2));
360 a14=_mm_set1_pd(m2(0,3));
361 a15=_mm_set1_pd(m2(0,4));
362 a21=_mm_set1_pd(m2(1,0));
363 a22=_mm_set1_pd(m2(1,1));
364 a23=_mm_set1_pd(m2(1,2));
365 a24=_mm_set1_pd(m2(1,3));
366 a25=_mm_set1_pd(m2(1,4));
368 _mm_mul_pd(m1.GetV(0,1),a21)),
369 _mm_add_pd(_mm_mul_pd(m1.GetV(0,0),a12),
370 _mm_mul_pd(m1.GetV(0,1),a22)),
371 _mm_add_pd(_mm_mul_pd(m1.GetV(0,0),a13),
372 _mm_mul_pd(m1.GetV(0,1),a23)),
373 _mm_add_pd(_mm_mul_pd(m1.GetV(0,0),a14),
374 _mm_mul_pd(m1.GetV(0,1),a24)),
375 _mm_add_pd(_mm_mul_pd(m1.GetV(0,0),a15),
376 _mm_mul_pd(m1.GetV(0,1),a25)),
378 _mm_add_pd(_mm_mul_pd(m1.GetV(1,0),a11),
379 _mm_mul_pd(m1.GetV(1,1),a21)),
380 _mm_add_pd(_mm_mul_pd(m1.GetV(1,0),a12),
381 _mm_mul_pd(m1.GetV(1,1),a22)),
382 _mm_add_pd(_mm_mul_pd(m1.GetV(1,0),a13),
383 _mm_mul_pd(m1.GetV(1,1),a23)),
384 _mm_add_pd(_mm_mul_pd(m1.GetV(1,0),a14),
385 _mm_mul_pd(m1.GetV(1,1),a24)),
386 _mm_add_pd(_mm_mul_pd(m1.GetV(1,0),a15),
387 _mm_mul_pd(m1.GetV(1,1),a25)),
389 _mm_add_pd(_mm_mul_pd(m1.GetV(2,0),a11),
390 _mm_mul_pd(m1.GetV(2,1),a21)),
391 _mm_add_pd(_mm_mul_pd(m1.GetV(2,0),a12),
392 _mm_mul_pd(m1.GetV(2,1),a22)),
393 _mm_add_pd(_mm_mul_pd(m1.GetV(2,0),a13),
394 _mm_mul_pd(m1.GetV(2,1),a23)),
395 _mm_add_pd(_mm_mul_pd(m1.GetV(2,0),a14),
396 _mm_mul_pd(m1.GetV(2,1),a24)),
397 _mm_add_pd(_mm_mul_pd(m1.GetV(2,0),a15),
398 _mm_mul_pd(m1.GetV(2,1),a25)));
402 #endif // _DMatrixSIMD_
DMatrix2x1 operator*(const double c, const DMatrix2x1 &M)
#define ALIGNED_16_BLOCK_WITH_PTR(TYPE, NUM, PTR)
DMatrix2x5 Transpose(const DMatrix5x2 &M)
DMatrix5x5 MultiplyTranspose(const DMatrix5x1 &m1)