42 #ifndef SMALL_MATRIX_H_
43 #define SMALL_MATRIX_H_
75 result.v[0][0]=v.v[0];
return result;
105 {.v={{m1.v[0][0]* m2.v[0][0]}}};
112 {.v={{s * m.v[0][0]}}};
119 {.v={m1.v[0][0]* vec.v[0]}};
133 {.v={{vec1.v[0]* vec2.v[0]}}};
139 return (vec1.v[0]* vec2.v[0]);
145 {.v={{m1.v[0][0]+ m2.v[0][0]}}};
152 {.v={v1.v[0]+ v2.v[0]}};
159 {.v={{m1.v[0][0]- m2.v[0][0]}}};
166 {.v={v1.v[0]- v2.v[0]}};
173 {.v={{m1.v[0][0]* m2.v[0][0]}}};
180 {.v={v1.v[0]* v2.v[0]}};
187 m.v[0][0]* m.v[0][0];
206 float static inline sum1(
const vector_1_t vec) {
207 float result= vec.v[0];
213 return sum1(diag_vector1(m));
217 float static inline sqr_norm1(
const vector_1_t vec) {
218 float result= vec.v[0]* vec.v[0];
246 result.v[0][0]=v.v[0];result.v[1][1]=v.v[1];
return result;
251 vector_2_t result= {.v={m.v[row][0], m.v[row][1]}};
257 vector_2_t result= {.v={m.v[0][col], m.v[1][col]}};
263 vector_2_t result= {.v={m.v[0][0], m.v[1][1]}};
270 {.v={{m.v[0][0], m.v[1][0]},
271 {m.v[0][1], m.v[1][1]}}};
277 {.v={{m1.v[0][0]* m2.v[0][0]+m1.v[0][1]* m2.v[1][0], m1.v[0][0]* m2.v[0][1]+m1.v[0][1]* m2.v[1][1]},
278 {m1.v[1][0]* m2.v[0][0]+m1.v[1][1]* m2.v[1][0], m1.v[1][0]* m2.v[0][1]+m1.v[1][1]* m2.v[1][1]}}};
285 {.v={{s * m.v[0][0], s * m.v[0][1]},
286 {s * m.v[1][0], s * m.v[1][1]}}};
293 {.v={m1.v[0][0]* vec.v[0]+m1.v[0][1]* vec.v[1],
294 m1.v[1][0]* vec.v[0]+m1.v[1][1]* vec.v[1]}};
309 {.v={{vec1.v[0]* vec2.v[0], vec1.v[0]* vec2.v[1]},
310 {vec1.v[1]* vec2.v[0], vec1.v[1]* vec2.v[1]}}};
316 return (vec1.v[0]* vec2.v[0]+vec1.v[1]* vec2.v[1]);
322 {.v={{m1.v[0][0]+ m2.v[0][0], m1.v[0][1]+ m2.v[0][1]},
323 {m1.v[1][0]+ m2.v[1][0], m1.v[1][1]+ m2.v[1][1]}}};
330 {.v={v1.v[0]+ v2.v[0],
338 {.v={{m1.v[0][0]- m2.v[0][0], m1.v[0][1]- m2.v[0][1]},
339 {m1.v[1][0]- m2.v[1][0], m1.v[1][1]- m2.v[1][1]}}};
346 {.v={v1.v[0]- v2.v[0],
354 {.v={{m1.v[0][0]* m2.v[0][0], m1.v[0][1]* m2.v[0][1]},
355 {m1.v[1][0]* m2.v[1][0], m1.v[1][1]* m2.v[1][1]}}};
362 {.v={v1.v[0]* v2.v[0],
370 m.v[0][0]* m.v[0][0] + m.v[0][1]* m.v[0][1] +
371 m.v[1][0]* m.v[1][0] + m.v[1][1]* m.v[1][1];
378 m.v[0][0] + m.v[0][1] ,
379 m.v[1][0] + m.v[1][1]}};
386 m.v[0][0] + m.v[1][0] ,
387 m.v[0][1] + m.v[1][1]}};
392 float static inline sum2(
const vector_2_t vec) {
393 float result= vec.v[0] + vec.v[1];
399 return sum2(diag_vector2(m));
403 float static inline sqr_norm2(
const vector_2_t vec) {
404 float result= vec.v[0]* vec.v[0] + vec.v[1]* vec.v[1];
418 {.v={{0.0f, 0.0f, 0.0f},
420 {0.0f, 0.0f, 0.0f}} };
423 {.v={{1.0f, 1.0f, 1.0f},
425 {1.0f, 1.0f, 1.0f}} };
428 {.v={{1.0f, 0.0f, 0.0f},
430 {0.0f, 0.0f, 1.0f}} };
435 result.v[0][0]=v.v[0];result.v[1][1]=v.v[1];result.v[2][2]=v.v[2];
return result;
440 vector_3_t result= {.v={m.v[row][0], m.v[row][1], m.v[row][2]}};
446 vector_3_t result= {.v={m.v[0][col], m.v[1][col], m.v[2][col]}};
452 vector_3_t result= {.v={m.v[0][0], m.v[1][1], m.v[2][2]}};
459 {.v={{m.v[0][0], m.v[1][0], m.v[2][0]},
460 {m.v[0][1], m.v[1][1], m.v[2][1]},
461 {m.v[0][2], m.v[1][2], m.v[2][2]}}};
467 {.v={{m1.v[0][0]* m2.v[0][0]+m1.v[0][1]* m2.v[1][0]+m1.v[0][2]* m2.v[2][0], m1.v[0][0]* m2.v[0][1]+m1.v[0][1]* m2.v[1][1]+m1.v[0][2]* m2.v[2][1], m1.v[0][0]* m2.v[0][2]+m1.v[0][1]* m2.v[1][2]+m1.v[0][2]* m2.v[2][2]},
468 {m1.v[1][0]* m2.v[0][0]+m1.v[1][1]* m2.v[1][0]+m1.v[1][2]* m2.v[2][0], m1.v[1][0]* m2.v[0][1]+m1.v[1][1]* m2.v[1][1]+m1.v[1][2]* m2.v[2][1], m1.v[1][0]* m2.v[0][2]+m1.v[1][1]* m2.v[1][2]+m1.v[1][2]* m2.v[2][2]},
469 {m1.v[2][0]* m2.v[0][0]+m1.v[2][1]* m2.v[1][0]+m1.v[2][2]* m2.v[2][0], m1.v[2][0]* m2.v[0][1]+m1.v[2][1]* m2.v[1][1]+m1.v[2][2]* m2.v[2][1], m1.v[2][0]* m2.v[0][2]+m1.v[2][1]* m2.v[1][2]+m1.v[2][2]* m2.v[2][2]}}};
476 {.v={{s * m.v[0][0], s * m.v[0][1], s * m.v[0][2]},
477 {s * m.v[1][0], s * m.v[1][1], s * m.v[1][2]},
478 {s * m.v[2][0], s * m.v[2][1], s * m.v[2][2]}}};
485 {.v={m1.v[0][0]* vec.v[0]+m1.v[0][1]* vec.v[1]+m1.v[0][2]* vec.v[2],
486 m1.v[1][0]* vec.v[0]+m1.v[1][1]* vec.v[1]+m1.v[1][2]* vec.v[2],
487 m1.v[2][0]* vec.v[0]+m1.v[2][1]* vec.v[1]+m1.v[2][2]* vec.v[2]}};
503 {.v={{vec1.v[0]* vec2.v[0], vec1.v[0]* vec2.v[1], vec1.v[0]* vec2.v[2]},
504 {vec1.v[1]* vec2.v[0], vec1.v[1]* vec2.v[1], vec1.v[1]* vec2.v[2]},
505 {vec1.v[2]* vec2.v[0], vec1.v[2]* vec2.v[1], vec1.v[2]* vec2.v[2]}}};
511 return (vec1.v[0]* vec2.v[0]+vec1.v[1]* vec2.v[1]+vec1.v[2]* vec2.v[2]);
517 {.v={{m1.v[0][0]+ m2.v[0][0], m1.v[0][1]+ m2.v[0][1], m1.v[0][2]+ m2.v[0][2]},
518 {m1.v[1][0]+ m2.v[1][0], m1.v[1][1]+ m2.v[1][1], m1.v[1][2]+ m2.v[1][2]},
519 {m1.v[2][0]+ m2.v[2][0], m1.v[2][1]+ m2.v[2][1], m1.v[2][2]+ m2.v[2][2]}}};
526 {.v={v1.v[0]+ v2.v[0],
535 {.v={{m1.v[0][0]- m2.v[0][0], m1.v[0][1]- m2.v[0][1], m1.v[0][2]- m2.v[0][2]},
536 {m1.v[1][0]- m2.v[1][0], m1.v[1][1]- m2.v[1][1], m1.v[1][2]- m2.v[1][2]},
537 {m1.v[2][0]- m2.v[2][0], m1.v[2][1]- m2.v[2][1], m1.v[2][2]- m2.v[2][2]}}};
544 {.v={v1.v[0]- v2.v[0],
553 {.v={{m1.v[0][0]* m2.v[0][0], m1.v[0][1]* m2.v[0][1], m1.v[0][2]* m2.v[0][2]},
554 {m1.v[1][0]* m2.v[1][0], m1.v[1][1]* m2.v[1][1], m1.v[1][2]* m2.v[1][2]},
555 {m1.v[2][0]* m2.v[2][0], m1.v[2][1]* m2.v[2][1], m1.v[2][2]* m2.v[2][2]}}};
562 {.v={v1.v[0]* v2.v[0],
571 m.v[0][0]* m.v[0][0] + m.v[0][1]* m.v[0][1] + m.v[0][2]* m.v[0][2] +
572 m.v[1][0]* m.v[1][0] + m.v[1][1]* m.v[1][1] + m.v[1][2]* m.v[1][2] +
573 m.v[2][0]* m.v[2][0] + m.v[2][1]* m.v[2][1] + m.v[2][2]* m.v[2][2];
580 m.v[0][0] + m.v[0][1] + m.v[0][2] ,
581 m.v[1][0] + m.v[1][1] + m.v[1][2] ,
582 m.v[2][0] + m.v[2][1] + m.v[2][2]}};
589 m.v[0][0] + m.v[1][0] + m.v[2][0] ,
590 m.v[0][1] + m.v[1][1] + m.v[2][1] ,
591 m.v[0][2] + m.v[1][2] + m.v[2][2]}};
596 float static inline sum3(
const vector_3_t vec) {
597 float result= vec.v[0] + vec.v[1] + vec.v[2];
603 return sum3(diag_vector3(m));
607 float static inline sqr_norm3(
const vector_3_t vec) {
608 float result= vec.v[0]* vec.v[0] + vec.v[1]* vec.v[1] + vec.v[2]* vec.v[2];
622 {.v={{0.0f, 0.0f, 0.0f, 0.0f},
623 {0.0f, 0.0f, 0.0f, 0.0f},
624 {0.0f, 0.0f, 0.0f, 0.0f},
625 {0.0f, 0.0f, 0.0f, 0.0f}} };
628 {.v={{1.0f, 1.0f, 1.0f, 1.0f},
629 {1.0f, 1.0f, 1.0f, 1.0f},
630 {1.0f, 1.0f, 1.0f, 1.0f},
631 {1.0f, 1.0f, 1.0f, 1.0f}} };
634 {.v={{1.0f, 0.0f, 0.0f, 0.0f},
635 {0.0f, 1.0f, 0.0f, 0.0f},
636 {0.0f, 0.0f, 1.0f, 0.0f},
637 {0.0f, 0.0f, 0.0f, 1.0f}} };
642 result.v[0][0]=v.v[0];result.v[1][1]=v.v[1];result.v[2][2]=v.v[2];result.v[3][3]=v.v[3];
return result;
647 vector_4_t result= {.v={m.v[row][0], m.v[row][1], m.v[row][2], m.v[row][3]}};
653 vector_4_t result= {.v={m.v[0][col], m.v[1][col], m.v[2][col], m.v[3][col]}};
659 vector_4_t result= {.v={m.v[0][0], m.v[1][1], m.v[2][2], m.v[3][3]}};
666 {.v={{m.v[0][0], m.v[1][0], m.v[2][0], m.v[3][0]},
667 {m.v[0][1], m.v[1][1], m.v[2][1], m.v[3][1]},
668 {m.v[0][2], m.v[1][2], m.v[2][2], m.v[3][2]},
669 {m.v[0][3], m.v[1][3], m.v[2][3], m.v[3][3]}}};
675 {.v={{m1.v[0][0]* m2.v[0][0]+m1.v[0][1]* m2.v[1][0]+m1.v[0][2]* m2.v[2][0]+m1.v[0][3]* m2.v[3][0], m1.v[0][0]* m2.v[0][1]+m1.v[0][1]* m2.v[1][1]+m1.v[0][2]* m2.v[2][1]+m1.v[0][3]* m2.v[3][1], m1.v[0][0]* m2.v[0][2]+m1.v[0][1]* m2.v[1][2]+m1.v[0][2]* m2.v[2][2]+m1.v[0][3]* m2.v[3][2], m1.v[0][0]* m2.v[0][3]+m1.v[0][1]* m2.v[1][3]+m1.v[0][2]* m2.v[2][3]+m1.v[0][3]* m2.v[3][3]},
676 {m1.v[1][0]* m2.v[0][0]+m1.v[1][1]* m2.v[1][0]+m1.v[1][2]* m2.v[2][0]+m1.v[1][3]* m2.v[3][0], m1.v[1][0]* m2.v[0][1]+m1.v[1][1]* m2.v[1][1]+m1.v[1][2]* m2.v[2][1]+m1.v[1][3]* m2.v[3][1], m1.v[1][0]* m2.v[0][2]+m1.v[1][1]* m2.v[1][2]+m1.v[1][2]* m2.v[2][2]+m1.v[1][3]* m2.v[3][2], m1.v[1][0]* m2.v[0][3]+m1.v[1][1]* m2.v[1][3]+m1.v[1][2]* m2.v[2][3]+m1.v[1][3]* m2.v[3][3]},
677 {m1.v[2][0]* m2.v[0][0]+m1.v[2][1]* m2.v[1][0]+m1.v[2][2]* m2.v[2][0]+m1.v[2][3]* m2.v[3][0], m1.v[2][0]* m2.v[0][1]+m1.v[2][1]* m2.v[1][1]+m1.v[2][2]* m2.v[2][1]+m1.v[2][3]* m2.v[3][1], m1.v[2][0]* m2.v[0][2]+m1.v[2][1]* m2.v[1][2]+m1.v[2][2]* m2.v[2][2]+m1.v[2][3]* m2.v[3][2], m1.v[2][0]* m2.v[0][3]+m1.v[2][1]* m2.v[1][3]+m1.v[2][2]* m2.v[2][3]+m1.v[2][3]* m2.v[3][3]},
678 {m1.v[3][0]* m2.v[0][0]+m1.v[3][1]* m2.v[1][0]+m1.v[3][2]* m2.v[2][0]+m1.v[3][3]* m2.v[3][0], m1.v[3][0]* m2.v[0][1]+m1.v[3][1]* m2.v[1][1]+m1.v[3][2]* m2.v[2][1]+m1.v[3][3]* m2.v[3][1], m1.v[3][0]* m2.v[0][2]+m1.v[3][1]* m2.v[1][2]+m1.v[3][2]* m2.v[2][2]+m1.v[3][3]* m2.v[3][2], m1.v[3][0]* m2.v[0][3]+m1.v[3][1]* m2.v[1][3]+m1.v[3][2]* m2.v[2][3]+m1.v[3][3]* m2.v[3][3]}}};
685 {.v={{s * m.v[0][0], s * m.v[0][1], s * m.v[0][2], s * m.v[0][3]},
686 {s * m.v[1][0], s * m.v[1][1], s * m.v[1][2], s * m.v[1][3]},
687 {s * m.v[2][0], s * m.v[2][1], s * m.v[2][2], s * m.v[2][3]},
688 {s * m.v[3][0], s * m.v[3][1], s * m.v[3][2], s * m.v[3][3]}}};
695 {.v={m1.v[0][0]* vec.v[0]+m1.v[0][1]* vec.v[1]+m1.v[0][2]* vec.v[2]+m1.v[0][3]* vec.v[3],
696 m1.v[1][0]* vec.v[0]+m1.v[1][1]* vec.v[1]+m1.v[1][2]* vec.v[2]+m1.v[1][3]* vec.v[3],
697 m1.v[2][0]* vec.v[0]+m1.v[2][1]* vec.v[1]+m1.v[2][2]* vec.v[2]+m1.v[2][3]* vec.v[3],
698 m1.v[3][0]* vec.v[0]+m1.v[3][1]* vec.v[1]+m1.v[3][2]* vec.v[2]+m1.v[3][3]* vec.v[3]}};
715 {.v={{vec1.v[0]* vec2.v[0], vec1.v[0]* vec2.v[1], vec1.v[0]* vec2.v[2], vec1.v[0]* vec2.v[3]},
716 {vec1.v[1]* vec2.v[0], vec1.v[1]* vec2.v[1], vec1.v[1]* vec2.v[2], vec1.v[1]* vec2.v[3]},
717 {vec1.v[2]* vec2.v[0], vec1.v[2]* vec2.v[1], vec1.v[2]* vec2.v[2], vec1.v[2]* vec2.v[3]},
718 {vec1.v[3]* vec2.v[0], vec1.v[3]* vec2.v[1], vec1.v[3]* vec2.v[2], vec1.v[3]* vec2.v[3]}}};
724 return (vec1.v[0]* vec2.v[0]+vec1.v[1]* vec2.v[1]+vec1.v[2]* vec2.v[2]+vec1.v[3]* vec2.v[3]);
730 {.v={{m1.v[0][0]+ m2.v[0][0], m1.v[0][1]+ m2.v[0][1], m1.v[0][2]+ m2.v[0][2], m1.v[0][3]+ m2.v[0][3]},
731 {m1.v[1][0]+ m2.v[1][0], m1.v[1][1]+ m2.v[1][1], m1.v[1][2]+ m2.v[1][2], m1.v[1][3]+ m2.v[1][3]},
732 {m1.v[2][0]+ m2.v[2][0], m1.v[2][1]+ m2.v[2][1], m1.v[2][2]+ m2.v[2][2], m1.v[2][3]+ m2.v[2][3]},
733 {m1.v[3][0]+ m2.v[3][0], m1.v[3][1]+ m2.v[3][1], m1.v[3][2]+ m2.v[3][2], m1.v[3][3]+ m2.v[3][3]}}};
740 {.v={v1.v[0]+ v2.v[0],
750 {.v={{m1.v[0][0]- m2.v[0][0], m1.v[0][1]- m2.v[0][1], m1.v[0][2]- m2.v[0][2], m1.v[0][3]- m2.v[0][3]},
751 {m1.v[1][0]- m2.v[1][0], m1.v[1][1]- m2.v[1][1], m1.v[1][2]- m2.v[1][2], m1.v[1][3]- m2.v[1][3]},
752 {m1.v[2][0]- m2.v[2][0], m1.v[2][1]- m2.v[2][1], m1.v[2][2]- m2.v[2][2], m1.v[2][3]- m2.v[2][3]},
753 {m1.v[3][0]- m2.v[3][0], m1.v[3][1]- m2.v[3][1], m1.v[3][2]- m2.v[3][2], m1.v[3][3]- m2.v[3][3]}}};
760 {.v={v1.v[0]- v2.v[0],
770 {.v={{m1.v[0][0]* m2.v[0][0], m1.v[0][1]* m2.v[0][1], m1.v[0][2]* m2.v[0][2], m1.v[0][3]* m2.v[0][3]},
771 {m1.v[1][0]* m2.v[1][0], m1.v[1][1]* m2.v[1][1], m1.v[1][2]* m2.v[1][2], m1.v[1][3]* m2.v[1][3]},
772 {m1.v[2][0]* m2.v[2][0], m1.v[2][1]* m2.v[2][1], m1.v[2][2]* m2.v[2][2], m1.v[2][3]* m2.v[2][3]},
773 {m1.v[3][0]* m2.v[3][0], m1.v[3][1]* m2.v[3][1], m1.v[3][2]* m2.v[3][2], m1.v[3][3]* m2.v[3][3]}}};
780 {.v={v1.v[0]* v2.v[0],
790 m.v[0][0]* m.v[0][0] + m.v[0][1]* m.v[0][1] + m.v[0][2]* m.v[0][2] + m.v[0][3]* m.v[0][3] +
791 m.v[1][0]* m.v[1][0] + m.v[1][1]* m.v[1][1] + m.v[1][2]* m.v[1][2] + m.v[1][3]* m.v[1][3] +
792 m.v[2][0]* m.v[2][0] + m.v[2][1]* m.v[2][1] + m.v[2][2]* m.v[2][2] + m.v[2][3]* m.v[2][3] +
793 m.v[3][0]* m.v[3][0] + m.v[3][1]* m.v[3][1] + m.v[3][2]* m.v[3][2] + m.v[3][3]* m.v[3][3];
800 m.v[0][0] + m.v[0][1] + m.v[0][2] + m.v[0][3] ,
801 m.v[1][0] + m.v[1][1] + m.v[1][2] + m.v[1][3] ,
802 m.v[2][0] + m.v[2][1] + m.v[2][2] + m.v[2][3] ,
803 m.v[3][0] + m.v[3][1] + m.v[3][2] + m.v[3][3]}};
810 m.v[0][0] + m.v[1][0] + m.v[2][0] + m.v[3][0] ,
811 m.v[0][1] + m.v[1][1] + m.v[2][1] + m.v[3][1] ,
812 m.v[0][2] + m.v[1][2] + m.v[2][2] + m.v[3][2] ,
813 m.v[0][3] + m.v[1][3] + m.v[2][3] + m.v[3][3]}};
818 float static inline sum4(
const vector_4_t vec) {
819 float result= vec.v[0] + vec.v[1] + vec.v[2] + vec.v[3];
825 return sum4(diag_vector4(m));
829 float static inline sqr_norm4(
const vector_4_t vec) {
830 float result= vec.v[0]* vec.v[0] + vec.v[1]* vec.v[1] + vec.v[2]* vec.v[2] + vec.v[3]* vec.v[3];
844 {.v={{0.0f, 0.0f, 0.0f, 0.0f, 0.0f},
845 {0.0f, 0.0f, 0.0f, 0.0f, 0.0f},
846 {0.0f, 0.0f, 0.0f, 0.0f, 0.0f},
847 {0.0f, 0.0f, 0.0f, 0.0f, 0.0f},
848 {0.0f, 0.0f, 0.0f, 0.0f, 0.0f}} };
851 {.v={{1.0f, 1.0f, 1.0f, 1.0f, 1.0f},
852 {1.0f, 1.0f, 1.0f, 1.0f, 1.0f},
853 {1.0f, 1.0f, 1.0f, 1.0f, 1.0f},
854 {1.0f, 1.0f, 1.0f, 1.0f, 1.0f},
855 {1.0f, 1.0f, 1.0f, 1.0f, 1.0f}} };
858 {.v={{1.0f, 0.0f, 0.0f, 0.0f, 0.0f},
859 {0.0f, 1.0f, 0.0f, 0.0f, 0.0f},
860 {0.0f, 0.0f, 1.0f, 0.0f, 0.0f},
861 {0.0f, 0.0f, 0.0f, 1.0f, 0.0f},
862 {0.0f, 0.0f, 0.0f, 0.0f, 1.0f}} };
867 result.v[0][0]=v.v[0];result.v[1][1]=v.v[1];result.v[2][2]=v.v[2];result.v[3][3]=v.v[3];result.v[4][4]=v.v[4];
return result;
872 vector_5_t result= {.v={m.v[row][0], m.v[row][1], m.v[row][2], m.v[row][3], m.v[row][4]}};
878 vector_5_t result= {.v={m.v[0][col], m.v[1][col], m.v[2][col], m.v[3][col], m.v[4][col]}};
884 vector_5_t result= {.v={m.v[0][0], m.v[1][1], m.v[2][2], m.v[3][3], m.v[4][4]}};
891 {.v={{m.v[0][0], m.v[1][0], m.v[2][0], m.v[3][0], m.v[4][0]},
892 {m.v[0][1], m.v[1][1], m.v[2][1], m.v[3][1], m.v[4][1]},
893 {m.v[0][2], m.v[1][2], m.v[2][2], m.v[3][2], m.v[4][2]},
894 {m.v[0][3], m.v[1][3], m.v[2][3], m.v[3][3], m.v[4][3]},
895 {m.v[0][4], m.v[1][4], m.v[2][4], m.v[3][4], m.v[4][4]}}};
901 {.v={{m1.v[0][0]* m2.v[0][0]+m1.v[0][1]* m2.v[1][0]+m1.v[0][2]* m2.v[2][0]+m1.v[0][3]* m2.v[3][0]+m1.v[0][4]* m2.v[4][0], m1.v[0][0]* m2.v[0][1]+m1.v[0][1]* m2.v[1][1]+m1.v[0][2]* m2.v[2][1]+m1.v[0][3]* m2.v[3][1]+m1.v[0][4]* m2.v[4][1], m1.v[0][0]* m2.v[0][2]+m1.v[0][1]* m2.v[1][2]+m1.v[0][2]* m2.v[2][2]+m1.v[0][3]* m2.v[3][2]+m1.v[0][4]* m2.v[4][2], m1.v[0][0]* m2.v[0][3]+m1.v[0][1]* m2.v[1][3]+m1.v[0][2]* m2.v[2][3]+m1.v[0][3]* m2.v[3][3]+m1.v[0][4]* m2.v[4][3], m1.v[0][0]* m2.v[0][4]+m1.v[0][1]* m2.v[1][4]+m1.v[0][2]* m2.v[2][4]+m1.v[0][3]* m2.v[3][4]+m1.v[0][4]* m2.v[4][4]},
902 {m1.v[1][0]* m2.v[0][0]+m1.v[1][1]* m2.v[1][0]+m1.v[1][2]* m2.v[2][0]+m1.v[1][3]* m2.v[3][0]+m1.v[1][4]* m2.v[4][0], m1.v[1][0]* m2.v[0][1]+m1.v[1][1]* m2.v[1][1]+m1.v[1][2]* m2.v[2][1]+m1.v[1][3]* m2.v[3][1]+m1.v[1][4]* m2.v[4][1], m1.v[1][0]* m2.v[0][2]+m1.v[1][1]* m2.v[1][2]+m1.v[1][2]* m2.v[2][2]+m1.v[1][3]* m2.v[3][2]+m1.v[1][4]* m2.v[4][2], m1.v[1][0]* m2.v[0][3]+m1.v[1][1]* m2.v[1][3]+m1.v[1][2]* m2.v[2][3]+m1.v[1][3]* m2.v[3][3]+m1.v[1][4]* m2.v[4][3], m1.v[1][0]* m2.v[0][4]+m1.v[1][1]* m2.v[1][4]+m1.v[1][2]* m2.v[2][4]+m1.v[1][3]* m2.v[3][4]+m1.v[1][4]* m2.v[4][4]},
903 {m1.v[2][0]* m2.v[0][0]+m1.v[2][1]* m2.v[1][0]+m1.v[2][2]* m2.v[2][0]+m1.v[2][3]* m2.v[3][0]+m1.v[2][4]* m2.v[4][0], m1.v[2][0]* m2.v[0][1]+m1.v[2][1]* m2.v[1][1]+m1.v[2][2]* m2.v[2][1]+m1.v[2][3]* m2.v[3][1]+m1.v[2][4]* m2.v[4][1], m1.v[2][0]* m2.v[0][2]+m1.v[2][1]* m2.v[1][2]+m1.v[2][2]* m2.v[2][2]+m1.v[2][3]* m2.v[3][2]+m1.v[2][4]* m2.v[4][2], m1.v[2][0]* m2.v[0][3]+m1.v[2][1]* m2.v[1][3]+m1.v[2][2]* m2.v[2][3]+m1.v[2][3]* m2.v[3][3]+m1.v[2][4]* m2.v[4][3], m1.v[2][0]* m2.v[0][4]+m1.v[2][1]* m2.v[1][4]+m1.v[2][2]* m2.v[2][4]+m1.v[2][3]* m2.v[3][4]+m1.v[2][4]* m2.v[4][4]},
904 {m1.v[3][0]* m2.v[0][0]+m1.v[3][1]* m2.v[1][0]+m1.v[3][2]* m2.v[2][0]+m1.v[3][3]* m2.v[3][0]+m1.v[3][4]* m2.v[4][0], m1.v[3][0]* m2.v[0][1]+m1.v[3][1]* m2.v[1][1]+m1.v[3][2]* m2.v[2][1]+m1.v[3][3]* m2.v[3][1]+m1.v[3][4]* m2.v[4][1], m1.v[3][0]* m2.v[0][2]+m1.v[3][1]* m2.v[1][2]+m1.v[3][2]* m2.v[2][2]+m1.v[3][3]* m2.v[3][2]+m1.v[3][4]* m2.v[4][2], m1.v[3][0]* m2.v[0][3]+m1.v[3][1]* m2.v[1][3]+m1.v[3][2]* m2.v[2][3]+m1.v[3][3]* m2.v[3][3]+m1.v[3][4]* m2.v[4][3], m1.v[3][0]* m2.v[0][4]+m1.v[3][1]* m2.v[1][4]+m1.v[3][2]* m2.v[2][4]+m1.v[3][3]* m2.v[3][4]+m1.v[3][4]* m2.v[4][4]},
905 {m1.v[4][0]* m2.v[0][0]+m1.v[4][1]* m2.v[1][0]+m1.v[4][2]* m2.v[2][0]+m1.v[4][3]* m2.v[3][0]+m1.v[4][4]* m2.v[4][0], m1.v[4][0]* m2.v[0][1]+m1.v[4][1]* m2.v[1][1]+m1.v[4][2]* m2.v[2][1]+m1.v[4][3]* m2.v[3][1]+m1.v[4][4]* m2.v[4][1], m1.v[4][0]* m2.v[0][2]+m1.v[4][1]* m2.v[1][2]+m1.v[4][2]* m2.v[2][2]+m1.v[4][3]* m2.v[3][2]+m1.v[4][4]* m2.v[4][2], m1.v[4][0]* m2.v[0][3]+m1.v[4][1]* m2.v[1][3]+m1.v[4][2]* m2.v[2][3]+m1.v[4][3]* m2.v[3][3]+m1.v[4][4]* m2.v[4][3], m1.v[4][0]* m2.v[0][4]+m1.v[4][1]* m2.v[1][4]+m1.v[4][2]* m2.v[2][4]+m1.v[4][3]* m2.v[3][4]+m1.v[4][4]* m2.v[4][4]}}};
912 {.v={{s * m.v[0][0], s * m.v[0][1], s * m.v[0][2], s * m.v[0][3], s * m.v[0][4]},
913 {s * m.v[1][0], s * m.v[1][1], s * m.v[1][2], s * m.v[1][3], s * m.v[1][4]},
914 {s * m.v[2][0], s * m.v[2][1], s * m.v[2][2], s * m.v[2][3], s * m.v[2][4]},
915 {s * m.v[3][0], s * m.v[3][1], s * m.v[3][2], s * m.v[3][3], s * m.v[3][4]},
916 {s * m.v[4][0], s * m.v[4][1], s * m.v[4][2], s * m.v[4][3], s * m.v[4][4]}}};
923 {.v={m1.v[0][0]* vec.v[0]+m1.v[0][1]* vec.v[1]+m1.v[0][2]* vec.v[2]+m1.v[0][3]* vec.v[3]+m1.v[0][4]* vec.v[4],
924 m1.v[1][0]* vec.v[0]+m1.v[1][1]* vec.v[1]+m1.v[1][2]* vec.v[2]+m1.v[1][3]* vec.v[3]+m1.v[1][4]* vec.v[4],
925 m1.v[2][0]* vec.v[0]+m1.v[2][1]* vec.v[1]+m1.v[2][2]* vec.v[2]+m1.v[2][3]* vec.v[3]+m1.v[2][4]* vec.v[4],
926 m1.v[3][0]* vec.v[0]+m1.v[3][1]* vec.v[1]+m1.v[3][2]* vec.v[2]+m1.v[3][3]* vec.v[3]+m1.v[3][4]* vec.v[4],
927 m1.v[4][0]* vec.v[0]+m1.v[4][1]* vec.v[1]+m1.v[4][2]* vec.v[2]+m1.v[4][3]* vec.v[3]+m1.v[4][4]* vec.v[4]}};
945 {.v={{vec1.v[0]* vec2.v[0], vec1.v[0]* vec2.v[1], vec1.v[0]* vec2.v[2], vec1.v[0]* vec2.v[3], vec1.v[0]* vec2.v[4]},
946 {vec1.v[1]* vec2.v[0], vec1.v[1]* vec2.v[1], vec1.v[1]* vec2.v[2], vec1.v[1]* vec2.v[3], vec1.v[1]* vec2.v[4]},
947 {vec1.v[2]* vec2.v[0], vec1.v[2]* vec2.v[1], vec1.v[2]* vec2.v[2], vec1.v[2]* vec2.v[3], vec1.v[2]* vec2.v[4]},
948 {vec1.v[3]* vec2.v[0], vec1.v[3]* vec2.v[1], vec1.v[3]* vec2.v[2], vec1.v[3]* vec2.v[3], vec1.v[3]* vec2.v[4]},
949 {vec1.v[4]* vec2.v[0], vec1.v[4]* vec2.v[1], vec1.v[4]* vec2.v[2], vec1.v[4]* vec2.v[3], vec1.v[4]* vec2.v[4]}}};
955 return (vec1.v[0]* vec2.v[0]+vec1.v[1]* vec2.v[1]+vec1.v[2]* vec2.v[2]+vec1.v[3]* vec2.v[3]+vec1.v[4]* vec2.v[4]);
961 {.v={{m1.v[0][0]+ m2.v[0][0], m1.v[0][1]+ m2.v[0][1], m1.v[0][2]+ m2.v[0][2], m1.v[0][3]+ m2.v[0][3], m1.v[0][4]+ m2.v[0][4]},
962 {m1.v[1][0]+ m2.v[1][0], m1.v[1][1]+ m2.v[1][1], m1.v[1][2]+ m2.v[1][2], m1.v[1][3]+ m2.v[1][3], m1.v[1][4]+ m2.v[1][4]},
963 {m1.v[2][0]+ m2.v[2][0], m1.v[2][1]+ m2.v[2][1], m1.v[2][2]+ m2.v[2][2], m1.v[2][3]+ m2.v[2][3], m1.v[2][4]+ m2.v[2][4]},
964 {m1.v[3][0]+ m2.v[3][0], m1.v[3][1]+ m2.v[3][1], m1.v[3][2]+ m2.v[3][2], m1.v[3][3]+ m2.v[3][3], m1.v[3][4]+ m2.v[3][4]},
965 {m1.v[4][0]+ m2.v[4][0], m1.v[4][1]+ m2.v[4][1], m1.v[4][2]+ m2.v[4][2], m1.v[4][3]+ m2.v[4][3], m1.v[4][4]+ m2.v[4][4]}}};
972 {.v={v1.v[0]+ v2.v[0],
983 {.v={{m1.v[0][0]- m2.v[0][0], m1.v[0][1]- m2.v[0][1], m1.v[0][2]- m2.v[0][2], m1.v[0][3]- m2.v[0][3], m1.v[0][4]- m2.v[0][4]},
984 {m1.v[1][0]- m2.v[1][0], m1.v[1][1]- m2.v[1][1], m1.v[1][2]- m2.v[1][2], m1.v[1][3]- m2.v[1][3], m1.v[1][4]- m2.v[1][4]},
985 {m1.v[2][0]- m2.v[2][0], m1.v[2][1]- m2.v[2][1], m1.v[2][2]- m2.v[2][2], m1.v[2][3]- m2.v[2][3], m1.v[2][4]- m2.v[2][4]},
986 {m1.v[3][0]- m2.v[3][0], m1.v[3][1]- m2.v[3][1], m1.v[3][2]- m2.v[3][2], m1.v[3][3]- m2.v[3][3], m1.v[3][4]- m2.v[3][4]},
987 {m1.v[4][0]- m2.v[4][0], m1.v[4][1]- m2.v[4][1], m1.v[4][2]- m2.v[4][2], m1.v[4][3]- m2.v[4][3], m1.v[4][4]- m2.v[4][4]}}};
994 {.v={v1.v[0]- v2.v[0],
1005 {.v={{m1.v[0][0]* m2.v[0][0], m1.v[0][1]* m2.v[0][1], m1.v[0][2]* m2.v[0][2], m1.v[0][3]* m2.v[0][3], m1.v[0][4]* m2.v[0][4]},
1006 {m1.v[1][0]* m2.v[1][0], m1.v[1][1]* m2.v[1][1], m1.v[1][2]* m2.v[1][2], m1.v[1][3]* m2.v[1][3], m1.v[1][4]* m2.v[1][4]},
1007 {m1.v[2][0]* m2.v[2][0], m1.v[2][1]* m2.v[2][1], m1.v[2][2]* m2.v[2][2], m1.v[2][3]* m2.v[2][3], m1.v[2][4]* m2.v[2][4]},
1008 {m1.v[3][0]* m2.v[3][0], m1.v[3][1]* m2.v[3][1], m1.v[3][2]* m2.v[3][2], m1.v[3][3]* m2.v[3][3], m1.v[3][4]* m2.v[3][4]},
1009 {m1.v[4][0]* m2.v[4][0], m1.v[4][1]* m2.v[4][1], m1.v[4][2]* m2.v[4][2], m1.v[4][3]* m2.v[4][3], m1.v[4][4]* m2.v[4][4]}}};
1016 {.v={v1.v[0]* v2.v[0],
1025 float static inline sqr_f_norm5(
const matrix_5x5_t m) {
1027 m.v[0][0]* m.v[0][0] + m.v[0][1]* m.v[0][1] + m.v[0][2]* m.v[0][2] + m.v[0][3]* m.v[0][3] + m.v[0][4]* m.v[0][4] +
1028 m.v[1][0]* m.v[1][0] + m.v[1][1]* m.v[1][1] + m.v[1][2]* m.v[1][2] + m.v[1][3]* m.v[1][3] + m.v[1][4]* m.v[1][4] +
1029 m.v[2][0]* m.v[2][0] + m.v[2][1]* m.v[2][1] + m.v[2][2]* m.v[2][2] + m.v[2][3]* m.v[2][3] + m.v[2][4]* m.v[2][4] +
1030 m.v[3][0]* m.v[3][0] + m.v[3][1]* m.v[3][1] + m.v[3][2]* m.v[3][2] + m.v[3][3]* m.v[3][3] + m.v[3][4]* m.v[3][4] +
1031 m.v[4][0]* m.v[4][0] + m.v[4][1]* m.v[4][1] + m.v[4][2]* m.v[4][2] + m.v[4][3]* m.v[4][3] + m.v[4][4]* m.v[4][4];
1038 m.v[0][0] + m.v[0][1] + m.v[0][2] + m.v[0][3] + m.v[0][4] ,
1039 m.v[1][0] + m.v[1][1] + m.v[1][2] + m.v[1][3] + m.v[1][4] ,
1040 m.v[2][0] + m.v[2][1] + m.v[2][2] + m.v[2][3] + m.v[2][4] ,
1041 m.v[3][0] + m.v[3][1] + m.v[3][2] + m.v[3][3] + m.v[3][4] ,
1042 m.v[4][0] + m.v[4][1] + m.v[4][2] + m.v[4][3] + m.v[4][4]}};
1049 m.v[0][0] + m.v[1][0] + m.v[2][0] + m.v[3][0] + m.v[4][0] ,
1050 m.v[0][1] + m.v[1][1] + m.v[2][1] + m.v[3][1] + m.v[4][1] ,
1051 m.v[0][2] + m.v[1][2] + m.v[2][2] + m.v[3][2] + m.v[4][2] ,
1052 m.v[0][3] + m.v[1][3] + m.v[2][3] + m.v[3][3] + m.v[4][3] ,
1053 m.v[0][4] + m.v[1][4] + m.v[2][4] + m.v[3][4] + m.v[4][4]}};
1058 float static inline sum5(
const vector_5_t vec) {
1059 float result= vec.v[0] + vec.v[1] + vec.v[2] + vec.v[3] + vec.v[4];
1065 return sum5(diag_vector5(m));
1069 float static inline sqr_norm5(
const vector_5_t vec) {
1070 float result= vec.v[0]* vec.v[0] + vec.v[1]* vec.v[1] + vec.v[2]* vec.v[2] + vec.v[3]* vec.v[3] + vec.v[4]* vec.v[4];
1084 {.v={{0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f},
1085 {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f},
1086 {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f},
1087 {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f},
1088 {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f},
1089 {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f}} };
1092 {.v={{1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f},
1093 {1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f},
1094 {1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f},
1095 {1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f},
1096 {1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f},
1097 {1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f}} };
1100 {.v={{1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f},
1101 {0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f},
1102 {0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f},
1103 {0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f},
1104 {0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f},
1105 {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}} };
1110 result.v[0][0]=v.v[0];result.v[1][1]=v.v[1];result.v[2][2]=v.v[2];result.v[3][3]=v.v[3];result.v[4][4]=v.v[4];result.v[5][5]=v.v[5];
return result;
1115 vector_6_t result= {.v={m.v[row][0], m.v[row][1], m.v[row][2], m.v[row][3], m.v[row][4], m.v[row][5]}};
1121 vector_6_t result= {.v={m.v[0][col], m.v[1][col], m.v[2][col], m.v[3][col], m.v[4][col], m.v[5][col]}};
1127 vector_6_t result= {.v={m.v[0][0], m.v[1][1], m.v[2][2], m.v[3][3], m.v[4][4], m.v[5][5]}};
1134 {.v={{m.v[0][0], m.v[1][0], m.v[2][0], m.v[3][0], m.v[4][0], m.v[5][0]},
1135 {m.v[0][1], m.v[1][1], m.v[2][1], m.v[3][1], m.v[4][1], m.v[5][1]},
1136 {m.v[0][2], m.v[1][2], m.v[2][2], m.v[3][2], m.v[4][2], m.v[5][2]},
1137 {m.v[0][3], m.v[1][3], m.v[2][3], m.v[3][3], m.v[4][3], m.v[5][3]},
1138 {m.v[0][4], m.v[1][4], m.v[2][4], m.v[3][4], m.v[4][4], m.v[5][4]},
1139 {m.v[0][5], m.v[1][5], m.v[2][5], m.v[3][5], m.v[4][5], m.v[5][5]}}};
1145 {.v={{m1.v[0][0]* m2.v[0][0]+m1.v[0][1]* m2.v[1][0]+m1.v[0][2]* m2.v[2][0]+m1.v[0][3]* m2.v[3][0]+m1.v[0][4]* m2.v[4][0]+m1.v[0][5]* m2.v[5][0], m1.v[0][0]* m2.v[0][1]+m1.v[0][1]* m2.v[1][1]+m1.v[0][2]* m2.v[2][1]+m1.v[0][3]* m2.v[3][1]+m1.v[0][4]* m2.v[4][1]+m1.v[0][5]* m2.v[5][1], m1.v[0][0]* m2.v[0][2]+m1.v[0][1]* m2.v[1][2]+m1.v[0][2]* m2.v[2][2]+m1.v[0][3]* m2.v[3][2]+m1.v[0][4]* m2.v[4][2]+m1.v[0][5]* m2.v[5][2], m1.v[0][0]* m2.v[0][3]+m1.v[0][1]* m2.v[1][3]+m1.v[0][2]* m2.v[2][3]+m1.v[0][3]* m2.v[3][3]+m1.v[0][4]* m2.v[4][3]+m1.v[0][5]* m2.v[5][3], m1.v[0][0]* m2.v[0][4]+m1.v[0][1]* m2.v[1][4]+m1.v[0][2]* m2.v[2][4]+m1.v[0][3]* m2.v[3][4]+m1.v[0][4]* m2.v[4][4]+m1.v[0][5]* m2.v[5][4], m1.v[0][0]* m2.v[0][5]+m1.v[0][1]* m2.v[1][5]+m1.v[0][2]* m2.v[2][5]+m1.v[0][3]* m2.v[3][5]+m1.v[0][4]* m2.v[4][5]+m1.v[0][5]* m2.v[5][5]},
1146 {m1.v[1][0]* m2.v[0][0]+m1.v[1][1]* m2.v[1][0]+m1.v[1][2]* m2.v[2][0]+m1.v[1][3]* m2.v[3][0]+m1.v[1][4]* m2.v[4][0]+m1.v[1][5]* m2.v[5][0], m1.v[1][0]* m2.v[0][1]+m1.v[1][1]* m2.v[1][1]+m1.v[1][2]* m2.v[2][1]+m1.v[1][3]* m2.v[3][1]+m1.v[1][4]* m2.v[4][1]+m1.v[1][5]* m2.v[5][1], m1.v[1][0]* m2.v[0][2]+m1.v[1][1]* m2.v[1][2]+m1.v[1][2]* m2.v[2][2]+m1.v[1][3]* m2.v[3][2]+m1.v[1][4]* m2.v[4][2]+m1.v[1][5]* m2.v[5][2], m1.v[1][0]* m2.v[0][3]+m1.v[1][1]* m2.v[1][3]+m1.v[1][2]* m2.v[2][3]+m1.v[1][3]* m2.v[3][3]+m1.v[1][4]* m2.v[4][3]+m1.v[1][5]* m2.v[5][3], m1.v[1][0]* m2.v[0][4]+m1.v[1][1]* m2.v[1][4]+m1.v[1][2]* m2.v[2][4]+m1.v[1][3]* m2.v[3][4]+m1.v[1][4]* m2.v[4][4]+m1.v[1][5]* m2.v[5][4], m1.v[1][0]* m2.v[0][5]+m1.v[1][1]* m2.v[1][5]+m1.v[1][2]* m2.v[2][5]+m1.v[1][3]* m2.v[3][5]+m1.v[1][4]* m2.v[4][5]+m1.v[1][5]* m2.v[5][5]},
1147 {m1.v[2][0]* m2.v[0][0]+m1.v[2][1]* m2.v[1][0]+m1.v[2][2]* m2.v[2][0]+m1.v[2][3]* m2.v[3][0]+m1.v[2][4]* m2.v[4][0]+m1.v[2][5]* m2.v[5][0], m1.v[2][0]* m2.v[0][1]+m1.v[2][1]* m2.v[1][1]+m1.v[2][2]* m2.v[2][1]+m1.v[2][3]* m2.v[3][1]+m1.v[2][4]* m2.v[4][1]+m1.v[2][5]* m2.v[5][1], m1.v[2][0]* m2.v[0][2]+m1.v[2][1]* m2.v[1][2]+m1.v[2][2]* m2.v[2][2]+m1.v[2][3]* m2.v[3][2]+m1.v[2][4]* m2.v[4][2]+m1.v[2][5]* m2.v[5][2], m1.v[2][0]* m2.v[0][3]+m1.v[2][1]* m2.v[1][3]+m1.v[2][2]* m2.v[2][3]+m1.v[2][3]* m2.v[3][3]+m1.v[2][4]* m2.v[4][3]+m1.v[2][5]* m2.v[5][3], m1.v[2][0]* m2.v[0][4]+m1.v[2][1]* m2.v[1][4]+m1.v[2][2]* m2.v[2][4]+m1.v[2][3]* m2.v[3][4]+m1.v[2][4]* m2.v[4][4]+m1.v[2][5]* m2.v[5][4], m1.v[2][0]* m2.v[0][5]+m1.v[2][1]* m2.v[1][5]+m1.v[2][2]* m2.v[2][5]+m1.v[2][3]* m2.v[3][5]+m1.v[2][4]* m2.v[4][5]+m1.v[2][5]* m2.v[5][5]},
1148 {m1.v[3][0]* m2.v[0][0]+m1.v[3][1]* m2.v[1][0]+m1.v[3][2]* m2.v[2][0]+m1.v[3][3]* m2.v[3][0]+m1.v[3][4]* m2.v[4][0]+m1.v[3][5]* m2.v[5][0], m1.v[3][0]* m2.v[0][1]+m1.v[3][1]* m2.v[1][1]+m1.v[3][2]* m2.v[2][1]+m1.v[3][3]* m2.v[3][1]+m1.v[3][4]* m2.v[4][1]+m1.v[3][5]* m2.v[5][1], m1.v[3][0]* m2.v[0][2]+m1.v[3][1]* m2.v[1][2]+m1.v[3][2]* m2.v[2][2]+m1.v[3][3]* m2.v[3][2]+m1.v[3][4]* m2.v[4][2]+m1.v[3][5]* m2.v[5][2], m1.v[3][0]* m2.v[0][3]+m1.v[3][1]* m2.v[1][3]+m1.v[3][2]* m2.v[2][3]+m1.v[3][3]* m2.v[3][3]+m1.v[3][4]* m2.v[4][3]+m1.v[3][5]* m2.v[5][3], m1.v[3][0]* m2.v[0][4]+m1.v[3][1]* m2.v[1][4]+m1.v[3][2]* m2.v[2][4]+m1.v[3][3]* m2.v[3][4]+m1.v[3][4]* m2.v[4][4]+m1.v[3][5]* m2.v[5][4], m1.v[3][0]* m2.v[0][5]+m1.v[3][1]* m2.v[1][5]+m1.v[3][2]* m2.v[2][5]+m1.v[3][3]* m2.v[3][5]+m1.v[3][4]* m2.v[4][5]+m1.v[3][5]* m2.v[5][5]},
1149 {m1.v[4][0]* m2.v[0][0]+m1.v[4][1]* m2.v[1][0]+m1.v[4][2]* m2.v[2][0]+m1.v[4][3]* m2.v[3][0]+m1.v[4][4]* m2.v[4][0]+m1.v[4][5]* m2.v[5][0], m1.v[4][0]* m2.v[0][1]+m1.v[4][1]* m2.v[1][1]+m1.v[4][2]* m2.v[2][1]+m1.v[4][3]* m2.v[3][1]+m1.v[4][4]* m2.v[4][1]+m1.v[4][5]* m2.v[5][1], m1.v[4][0]* m2.v[0][2]+m1.v[4][1]* m2.v[1][2]+m1.v[4][2]* m2.v[2][2]+m1.v[4][3]* m2.v[3][2]+m1.v[4][4]* m2.v[4][2]+m1.v[4][5]* m2.v[5][2], m1.v[4][0]* m2.v[0][3]+m1.v[4][1]* m2.v[1][3]+m1.v[4][2]* m2.v[2][3]+m1.v[4][3]* m2.v[3][3]+m1.v[4][4]* m2.v[4][3]+m1.v[4][5]* m2.v[5][3], m1.v[4][0]* m2.v[0][4]+m1.v[4][1]* m2.v[1][4]+m1.v[4][2]* m2.v[2][4]+m1.v[4][3]* m2.v[3][4]+m1.v[4][4]* m2.v[4][4]+m1.v[4][5]* m2.v[5][4], m1.v[4][0]* m2.v[0][5]+m1.v[4][1]* m2.v[1][5]+m1.v[4][2]* m2.v[2][5]+m1.v[4][3]* m2.v[3][5]+m1.v[4][4]* m2.v[4][5]+m1.v[4][5]* m2.v[5][5]},
1150 {m1.v[5][0]* m2.v[0][0]+m1.v[5][1]* m2.v[1][0]+m1.v[5][2]* m2.v[2][0]+m1.v[5][3]* m2.v[3][0]+m1.v[5][4]* m2.v[4][0]+m1.v[5][5]* m2.v[5][0], m1.v[5][0]* m2.v[0][1]+m1.v[5][1]* m2.v[1][1]+m1.v[5][2]* m2.v[2][1]+m1.v[5][3]* m2.v[3][1]+m1.v[5][4]* m2.v[4][1]+m1.v[5][5]* m2.v[5][1], m1.v[5][0]* m2.v[0][2]+m1.v[5][1]* m2.v[1][2]+m1.v[5][2]* m2.v[2][2]+m1.v[5][3]* m2.v[3][2]+m1.v[5][4]* m2.v[4][2]+m1.v[5][5]* m2.v[5][2], m1.v[5][0]* m2.v[0][3]+m1.v[5][1]* m2.v[1][3]+m1.v[5][2]* m2.v[2][3]+m1.v[5][3]* m2.v[3][3]+m1.v[5][4]* m2.v[4][3]+m1.v[5][5]* m2.v[5][3], m1.v[5][0]* m2.v[0][4]+m1.v[5][1]* m2.v[1][4]+m1.v[5][2]* m2.v[2][4]+m1.v[5][3]* m2.v[3][4]+m1.v[5][4]* m2.v[4][4]+m1.v[5][5]* m2.v[5][4], m1.v[5][0]* m2.v[0][5]+m1.v[5][1]* m2.v[1][5]+m1.v[5][2]* m2.v[2][5]+m1.v[5][3]* m2.v[3][5]+m1.v[5][4]* m2.v[4][5]+m1.v[5][5]* m2.v[5][5]}}};
1157 {.v={{s * m.v[0][0], s * m.v[0][1], s * m.v[0][2], s * m.v[0][3], s * m.v[0][4], s * m.v[0][5]},
1158 {s * m.v[1][0], s * m.v[1][1], s * m.v[1][2], s * m.v[1][3], s * m.v[1][4], s * m.v[1][5]},
1159 {s * m.v[2][0], s * m.v[2][1], s * m.v[2][2], s * m.v[2][3], s * m.v[2][4], s * m.v[2][5]},
1160 {s * m.v[3][0], s * m.v[3][1], s * m.v[3][2], s * m.v[3][3], s * m.v[3][4], s * m.v[3][5]},
1161 {s * m.v[4][0], s * m.v[4][1], s * m.v[4][2], s * m.v[4][3], s * m.v[4][4], s * m.v[4][5]},
1162 {s * m.v[5][0], s * m.v[5][1], s * m.v[5][2], s * m.v[5][3], s * m.v[5][4], s * m.v[5][5]}}};
1169 {.v={m1.v[0][0]* vec.v[0]+m1.v[0][1]* vec.v[1]+m1.v[0][2]* vec.v[2]+m1.v[0][3]* vec.v[3]+m1.v[0][4]* vec.v[4]+m1.v[0][5]* vec.v[5],
1170 m1.v[1][0]* vec.v[0]+m1.v[1][1]* vec.v[1]+m1.v[1][2]* vec.v[2]+m1.v[1][3]* vec.v[3]+m1.v[1][4]* vec.v[4]+m1.v[1][5]* vec.v[5],
1171 m1.v[2][0]* vec.v[0]+m1.v[2][1]* vec.v[1]+m1.v[2][2]* vec.v[2]+m1.v[2][3]* vec.v[3]+m1.v[2][4]* vec.v[4]+m1.v[2][5]* vec.v[5],
1172 m1.v[3][0]* vec.v[0]+m1.v[3][1]* vec.v[1]+m1.v[3][2]* vec.v[2]+m1.v[3][3]* vec.v[3]+m1.v[3][4]* vec.v[4]+m1.v[3][5]* vec.v[5],
1173 m1.v[4][0]* vec.v[0]+m1.v[4][1]* vec.v[1]+m1.v[4][2]* vec.v[2]+m1.v[4][3]* vec.v[3]+m1.v[4][4]* vec.v[4]+m1.v[4][5]* vec.v[5],
1174 m1.v[5][0]* vec.v[0]+m1.v[5][1]* vec.v[1]+m1.v[5][2]* vec.v[2]+m1.v[5][3]* vec.v[3]+m1.v[5][4]* vec.v[4]+m1.v[5][5]* vec.v[5]}};
1193 {.v={{vec1.v[0]* vec2.v[0], vec1.v[0]* vec2.v[1], vec1.v[0]* vec2.v[2], vec1.v[0]* vec2.v[3], vec1.v[0]* vec2.v[4], vec1.v[0]* vec2.v[5]},
1194 {vec1.v[1]* vec2.v[0], vec1.v[1]* vec2.v[1], vec1.v[1]* vec2.v[2], vec1.v[1]* vec2.v[3], vec1.v[1]* vec2.v[4], vec1.v[1]* vec2.v[5]},
1195 {vec1.v[2]* vec2.v[0], vec1.v[2]* vec2.v[1], vec1.v[2]* vec2.v[2], vec1.v[2]* vec2.v[3], vec1.v[2]* vec2.v[4], vec1.v[2]* vec2.v[5]},
1196 {vec1.v[3]* vec2.v[0], vec1.v[3]* vec2.v[1], vec1.v[3]* vec2.v[2], vec1.v[3]* vec2.v[3], vec1.v[3]* vec2.v[4], vec1.v[3]* vec2.v[5]},
1197 {vec1.v[4]* vec2.v[0], vec1.v[4]* vec2.v[1], vec1.v[4]* vec2.v[2], vec1.v[4]* vec2.v[3], vec1.v[4]* vec2.v[4], vec1.v[4]* vec2.v[5]},
1198 {vec1.v[5]* vec2.v[0], vec1.v[5]* vec2.v[1], vec1.v[5]* vec2.v[2], vec1.v[5]* vec2.v[3], vec1.v[5]* vec2.v[4], vec1.v[5]* vec2.v[5]}}};
1204 return (vec1.v[0]* vec2.v[0]+vec1.v[1]* vec2.v[1]+vec1.v[2]* vec2.v[2]+vec1.v[3]* vec2.v[3]+vec1.v[4]* vec2.v[4]+vec1.v[5]* vec2.v[5]);
1210 {.v={{m1.v[0][0]+ m2.v[0][0], m1.v[0][1]+ m2.v[0][1], m1.v[0][2]+ m2.v[0][2], m1.v[0][3]+ m2.v[0][3], m1.v[0][4]+ m2.v[0][4], m1.v[0][5]+ m2.v[0][5]},
1211 {m1.v[1][0]+ m2.v[1][0], m1.v[1][1]+ m2.v[1][1], m1.v[1][2]+ m2.v[1][2], m1.v[1][3]+ m2.v[1][3], m1.v[1][4]+ m2.v[1][4], m1.v[1][5]+ m2.v[1][5]},
1212 {m1.v[2][0]+ m2.v[2][0], m1.v[2][1]+ m2.v[2][1], m1.v[2][2]+ m2.v[2][2], m1.v[2][3]+ m2.v[2][3], m1.v[2][4]+ m2.v[2][4], m1.v[2][5]+ m2.v[2][5]},
1213 {m1.v[3][0]+ m2.v[3][0], m1.v[3][1]+ m2.v[3][1], m1.v[3][2]+ m2.v[3][2], m1.v[3][3]+ m2.v[3][3], m1.v[3][4]+ m2.v[3][4], m1.v[3][5]+ m2.v[3][5]},
1214 {m1.v[4][0]+ m2.v[4][0], m1.v[4][1]+ m2.v[4][1], m1.v[4][2]+ m2.v[4][2], m1.v[4][3]+ m2.v[4][3], m1.v[4][4]+ m2.v[4][4], m1.v[4][5]+ m2.v[4][5]},
1215 {m1.v[5][0]+ m2.v[5][0], m1.v[5][1]+ m2.v[5][1], m1.v[5][2]+ m2.v[5][2], m1.v[5][3]+ m2.v[5][3], m1.v[5][4]+ m2.v[5][4], m1.v[5][5]+ m2.v[5][5]}}};
1222 {.v={v1.v[0]+ v2.v[0],
1234 {.v={{m1.v[0][0]- m2.v[0][0], m1.v[0][1]- m2.v[0][1], m1.v[0][2]- m2.v[0][2], m1.v[0][3]- m2.v[0][3], m1.v[0][4]- m2.v[0][4], m1.v[0][5]- m2.v[0][5]},
1235 {m1.v[1][0]- m2.v[1][0], m1.v[1][1]- m2.v[1][1], m1.v[1][2]- m2.v[1][2], m1.v[1][3]- m2.v[1][3], m1.v[1][4]- m2.v[1][4], m1.v[1][5]- m2.v[1][5]},
1236 {m1.v[2][0]- m2.v[2][0], m1.v[2][1]- m2.v[2][1], m1.v[2][2]- m2.v[2][2], m1.v[2][3]- m2.v[2][3], m1.v[2][4]- m2.v[2][4], m1.v[2][5]- m2.v[2][5]},
1237 {m1.v[3][0]- m2.v[3][0], m1.v[3][1]- m2.v[3][1], m1.v[3][2]- m2.v[3][2], m1.v[3][3]- m2.v[3][3], m1.v[3][4]- m2.v[3][4], m1.v[3][5]- m2.v[3][5]},
1238 {m1.v[4][0]- m2.v[4][0], m1.v[4][1]- m2.v[4][1], m1.v[4][2]- m2.v[4][2], m1.v[4][3]- m2.v[4][3], m1.v[4][4]- m2.v[4][4], m1.v[4][5]- m2.v[4][5]},
1239 {m1.v[5][0]- m2.v[5][0], m1.v[5][1]- m2.v[5][1], m1.v[5][2]- m2.v[5][2], m1.v[5][3]- m2.v[5][3], m1.v[5][4]- m2.v[5][4], m1.v[5][5]- m2.v[5][5]}}};
1246 {.v={v1.v[0]- v2.v[0],
1258 {.v={{m1.v[0][0]* m2.v[0][0], m1.v[0][1]* m2.v[0][1], m1.v[0][2]* m2.v[0][2], m1.v[0][3]* m2.v[0][3], m1.v[0][4]* m2.v[0][4], m1.v[0][5]* m2.v[0][5]},
1259 {m1.v[1][0]* m2.v[1][0], m1.v[1][1]* m2.v[1][1], m1.v[1][2]* m2.v[1][2], m1.v[1][3]* m2.v[1][3], m1.v[1][4]* m2.v[1][4], m1.v[1][5]* m2.v[1][5]},
1260 {m1.v[2][0]* m2.v[2][0], m1.v[2][1]* m2.v[2][1], m1.v[2][2]* m2.v[2][2], m1.v[2][3]* m2.v[2][3], m1.v[2][4]* m2.v[2][4], m1.v[2][5]* m2.v[2][5]},
1261 {m1.v[3][0]* m2.v[3][0], m1.v[3][1]* m2.v[3][1], m1.v[3][2]* m2.v[3][2], m1.v[3][3]* m2.v[3][3], m1.v[3][4]* m2.v[3][4], m1.v[3][5]* m2.v[3][5]},
1262 {m1.v[4][0]* m2.v[4][0], m1.v[4][1]* m2.v[4][1], m1.v[4][2]* m2.v[4][2], m1.v[4][3]* m2.v[4][3], m1.v[4][4]* m2.v[4][4], m1.v[4][5]* m2.v[4][5]},
1263 {m1.v[5][0]* m2.v[5][0], m1.v[5][1]* m2.v[5][1], m1.v[5][2]* m2.v[5][2], m1.v[5][3]* m2.v[5][3], m1.v[5][4]* m2.v[5][4], m1.v[5][5]* m2.v[5][5]}}};
1270 {.v={v1.v[0]* v2.v[0],
1280 float static inline sqr_f_norm6(
const matrix_6x6_t m) {
1282 m.v[0][0]* m.v[0][0] + m.v[0][1]* m.v[0][1] + m.v[0][2]* m.v[0][2] + m.v[0][3]* m.v[0][3] + m.v[0][4]* m.v[0][4] + m.v[0][5]* m.v[0][5] +
1283 m.v[1][0]* m.v[1][0] + m.v[1][1]* m.v[1][1] + m.v[1][2]* m.v[1][2] + m.v[1][3]* m.v[1][3] + m.v[1][4]* m.v[1][4] + m.v[1][5]* m.v[1][5] +
1284 m.v[2][0]* m.v[2][0] + m.v[2][1]* m.v[2][1] + m.v[2][2]* m.v[2][2] + m.v[2][3]* m.v[2][3] + m.v[2][4]* m.v[2][4] + m.v[2][5]* m.v[2][5] +
1285 m.v[3][0]* m.v[3][0] + m.v[3][1]* m.v[3][1] + m.v[3][2]* m.v[3][2] + m.v[3][3]* m.v[3][3] + m.v[3][4]* m.v[3][4] + m.v[3][5]* m.v[3][5] +
1286 m.v[4][0]* m.v[4][0] + m.v[4][1]* m.v[4][1] + m.v[4][2]* m.v[4][2] + m.v[4][3]* m.v[4][3] + m.v[4][4]* m.v[4][4] + m.v[4][5]* m.v[4][5] +
1287 m.v[5][0]* m.v[5][0] + m.v[5][1]* m.v[5][1] + m.v[5][2]* m.v[5][2] + m.v[5][3]* m.v[5][3] + m.v[5][4]* m.v[5][4] + m.v[5][5]* m.v[5][5];
1294 m.v[0][0] + m.v[0][1] + m.v[0][2] + m.v[0][3] + m.v[0][4] + m.v[0][5] ,
1295 m.v[1][0] + m.v[1][1] + m.v[1][2] + m.v[1][3] + m.v[1][4] + m.v[1][5] ,
1296 m.v[2][0] + m.v[2][1] + m.v[2][2] + m.v[2][3] + m.v[2][4] + m.v[2][5] ,
1297 m.v[3][0] + m.v[3][1] + m.v[3][2] + m.v[3][3] + m.v[3][4] + m.v[3][5] ,
1298 m.v[4][0] + m.v[4][1] + m.v[4][2] + m.v[4][3] + m.v[4][4] + m.v[4][5] ,
1299 m.v[5][0] + m.v[5][1] + m.v[5][2] + m.v[5][3] + m.v[5][4] + m.v[5][5]}};
1306 m.v[0][0] + m.v[1][0] + m.v[2][0] + m.v[3][0] + m.v[4][0] + m.v[5][0] ,
1307 m.v[0][1] + m.v[1][1] + m.v[2][1] + m.v[3][1] + m.v[4][1] + m.v[5][1] ,
1308 m.v[0][2] + m.v[1][2] + m.v[2][2] + m.v[3][2] + m.v[4][2] + m.v[5][2] ,
1309 m.v[0][3] + m.v[1][3] + m.v[2][3] + m.v[3][3] + m.v[4][3] + m.v[5][3] ,
1310 m.v[0][4] + m.v[1][4] + m.v[2][4] + m.v[3][4] + m.v[4][4] + m.v[5][4] ,
1311 m.v[0][5] + m.v[1][5] + m.v[2][5] + m.v[3][5] + m.v[4][5] + m.v[5][5]}};
1316 float static inline sum6(
const vector_6_t vec) {
1317 float result= vec.v[0] + vec.v[1] + vec.v[2] + vec.v[3] + vec.v[4] + vec.v[5];
1323 return sum6(diag_vector6(m));
1327 float static inline sqr_norm6(
const vector_6_t vec) {
1328 float result= vec.v[0]* vec.v[0] + vec.v[1]* vec.v[1] + vec.v[2]* vec.v[2] + vec.v[3]* vec.v[3] + vec.v[4]* vec.v[4] + vec.v[5]* vec.v[5];
Definition: small_matrix.h:59
Definition: small_matrix.h:1074
Definition: small_matrix.h:227
Definition: small_matrix.h:222
Definition: small_matrix.h:612
Definition: small_matrix.h:834
Definition: small_matrix.h:839
Definition: small_matrix.h:408
Definition: small_matrix.h:617
Definition: small_matrix.h:54
Definition: small_matrix.h:1079
Definition: small_matrix.h:413