22 void mul_MatMxN(
void * result,
const void * A_ptr,
const void * B_ptr,
i_t m,
i_t n,
i_t p,
char transpose_B,
char add )
28 f_t * matOut = (
f_t*)result;
29 const f_t * A = (
const f_t*)A_ptr;
30 const f_t * B = (
const f_t*)B_ptr;
32 for (i = 0; i < m; i++)
34 const f_t * A_i = A + i * n;
35 f_t * O_i = matOut + i * p;
37 for (j = 0; j < p; j++)
40 f_t * O_i_j = O_i + j;
42 for (k = 0; k < n; k++)
44 const f_t * a = A_i + k;
72 void addNxM(
void * result,
const void * A_ptr,
const void * B_ptr,
i_t m,
i_t n,
char transpose_B)
79 const f_t * A = A_ptr;
80 const f_t * B = B_ptr;
82 for (i = 0; i < m; i++)
84 const f_t * A_i = A + i * n;
85 f_t * O_i = OUT + i * p;
87 for (j = 0; j < p; j++)
90 f_t * O_i_j = O_i + j;
93 for (k = 0; k < n; k++)
95 const f_t * a = A_i + k;
124 for(
int i=0; i < n; i++ )
135 if (A == 0) {
return; }
139 for(
int k=0; k < n - 1; k++ )
141 for(
int i=k + 1; i < n; i++ )
147 A[in + k] = A[in + k] / A[kn + k];
149 for(
int j=k + 1; j < n; j++ )
152 T & A_i_j( A[in + j] );
153 const T & A_i_k( A[in + k] );
154 const T & A_k_j( A[kn + j] );
161 A_i_j -= A_i_k * A_k_j;
163 A[in + j] -= A[in + k] * A[kn + j];
172 for(
int j=0; j < n - 1; j++ )
173 for(
int i=j + 1; i < n; i++ )
174 L[i*n + j] = A[i*n + j];
179 for(
int i=0; i < n; i++ )
180 for(
int j=i; j < n; j++ )
181 U[i*n + j] = A[i*n + j];
189 for(
int i=n - 1; i >= 0; i-- )
196 for(
int j=i + 1; j < n; ++j )
199 const T & A_i_j( A_i[j] );
200 const T & x_j( x[j] );
207 s -= A_i[j] * result[j*n];
215 result[i*n] = s / A_i[i];
224 for(
int i=0; i < n; ++i )
231 for(
int j=0; j < i; ++j )
234 const T & A_i_j( A_i[j] );
235 const T & x_j( x[j] );
242 s -= A_i[j] * result[j*n];
250 result[i*n] = s / A_i[i];
268 memset( identCol, 0,
sizeof(
f_t )*n );
272 for(
int i=0; i < n; i++ )
286 mul_MatMxN( result, invU, invL, n, n, n, 0, 0 );
303 const f_t * A = (
const f_t*)M;
305 for( i = 0; i < m; i++ )
307 f_t * O_i = result + i;
309 for( j = 0; j < n; j++ )
325 result[0] = m1[0]*m2[0] + m1[1]*m2[3] + m1[2]*m2[6];
326 result[1] = m1[0]*m2[1] + m1[1]*m2[4] + m1[2]*m2[7];
327 result[2] = m1[0]*m2[2] + m1[1]*m2[5] + m1[2]*m2[8];
329 result[3] = m1[3]*m2[0] + m1[4]*m2[3] + m1[5]*m2[6];
330 result[4] = m1[3]*m2[1] + m1[4]*m2[4] + m1[5]*m2[7];
331 result[5] = m1[3]*m2[2] + m1[4]*m2[5] + m1[5]*m2[8];
333 result[6] = m1[6]*m2[0] + m1[7]*m2[3] + m1[8]*m2[6];
334 result[7] = m1[6]*m2[1] + m1[7]*m2[4] + m1[8]*m2[7];
335 result[8] = m1[6]*m2[2] + m1[7]*m2[5] + m1[8]*m2[8];
341 result[0] = m1[0] * m2[0] + m1[1] * m2[3] + m1[2] * m2[6];
342 result[1] = m1[0] * m2[1] + m1[1] * m2[4] + m1[2] * m2[7];
343 result[2] = m1[0] * m2[2] + m1[1] * m2[5] + m1[2] * m2[8];
345 result[3] = m1[3] * m2[0] + m1[4] * m2[3] + m1[5] * m2[6];
346 result[4] = m1[3] * m2[1] + m1[4] * m2[4] + m1[5] * m2[7];
347 result[5] = m1[3] * m2[2] + m1[4] * m2[5] + m1[5] * m2[8];
349 result[6] = m1[6] * m2[0] + m1[7] * m2[3] + m1[8] * m2[6];
350 result[7] = m1[6] * m2[1] + m1[7] * m2[4] + m1[8] * m2[7];
351 result[8] = m1[6] * m2[2] + m1[7] * m2[5] + m1[8] * m2[8];
357 result[0] = m1[0]*m2[0] + m1[3]*m2[3] + m1[6]*m2[6];
358 result[1] = m1[0]*m2[1] + m1[3]*m2[4] + m1[6]*m2[7];
359 result[2] = m1[0]*m2[2] + m1[3]*m2[5] + m1[6]*m2[8];
361 result[3] = m1[1]*m2[0] + m1[4]*m2[3] + m1[7]*m2[6];
362 result[4] = m1[1]*m2[1] + m1[4]*m2[4] + m1[7]*m2[7];
363 result[5] = m1[1]*m2[2] + m1[4]*m2[5] + m1[7]*m2[8];
365 result[6] = m1[2]*m2[0] + m1[5]*m2[3] + m1[8]*m2[6];
366 result[7] = m1[2]*m2[1] + m1[5]*m2[4] + m1[8]*m2[7];
367 result[8] = m1[2]*m2[2] + m1[5]*m2[5] + m1[8]*m2[8];
373 result[0] = m1[0] * m2[0] + m1[3] * m2[3] + m1[6] * m2[6];
374 result[1] = m1[0] * m2[1] + m1[3] * m2[4] + m1[6] * m2[7];
375 result[2] = m1[0] * m2[2] + m1[3] * m2[5] + m1[6] * m2[8];
377 result[3] = m1[1] * m2[0] + m1[4] * m2[3] + m1[7] * m2[6];
378 result[4] = m1[1] * m2[1] + m1[4] * m2[4] + m1[7] * m2[7];
379 result[5] = m1[1] * m2[2] + m1[4] * m2[5] + m1[7] * m2[8];
381 result[6] = m1[2] * m2[0] + m1[5] * m2[3] + m1[8] * m2[6];
382 result[7] = m1[2] * m2[1] + m1[5] * m2[4] + m1[8] * m2[7];
383 result[8] = m1[2] * m2[2] + m1[5] * m2[5] + m1[8] * m2[8];
389 result[0] = m1[0]*m2[0] + m1[1]*m2[1] + m1[2]*m2[2];
390 result[1] = m1[0]*m2[3] + m1[1]*m2[4] + m1[2]*m2[5];
391 result[2] = m1[0]*m2[6] + m1[1]*m2[7] + m1[2]*m2[8];
393 result[3] = m1[3]*m2[0] + m1[4]*m2[1] + m1[5]*m2[2];
394 result[4] = m1[3]*m2[3] + m1[4]*m2[4] + m1[5]*m2[5];
395 result[5] = m1[3]*m2[6] + m1[4]*m2[7] + m1[5]*m2[8];
397 result[6] = m1[6]*m2[0] + m1[7]*m2[1] + m1[8]*m2[2];
398 result[7] = m1[6]*m2[3] + m1[7]*m2[4] + m1[8]*m2[5];
399 result[8] = m1[6]*m2[6] + m1[7]*m2[7] + m1[8]*m2[8];
405 result[0] = m1[0] * m2[0] + m1[1] * m2[1] + m1[2] * m2[2];
406 result[1] = m1[0] * m2[3] + m1[1] * m2[4] + m1[2] * m2[5];
407 result[2] = m1[0] * m2[6] + m1[1] * m2[7] + m1[2] * m2[8];
409 result[3] = m1[3] * m2[0] + m1[4] * m2[1] + m1[5] * m2[2];
410 result[4] = m1[3] * m2[3] + m1[4] * m2[4] + m1[5] * m2[5];
411 result[5] = m1[3] * m2[6] + m1[4] * m2[7] + m1[5] * m2[8];
413 result[6] = m1[6] * m2[0] + m1[7] * m2[1] + m1[8] * m2[2];
414 result[7] = m1[6] * m2[3] + m1[7] * m2[4] + m1[8] * m2[5];
415 result[8] = m1[6] * m2[6] + m1[7] * m2[7] + m1[8] * m2[8];
420 result[0] = m[0]*v[0] + m[1]*v[1];
421 result[1] = m[2]*v[0] + m[3]*v[1];
426 result[0] = m[0]*v[0] + m[2]*v[1];
427 result[1] = m[1]*v[0] + m[3]*v[1];
432 result[0] = m[0]*v[0] + m[1]*v[1] + m[2]*v[2];
433 result[1] = m[3]*v[0] + m[4]*v[1] + m[5]*v[2];
434 result[2] = m[6]*v[0] + m[7]*v[1] + m[8]*v[2];
439 result[0] = m[0]*v[0] + m[3]*v[1] + m[6]*v[2];
440 result[1] = m[1]*v[0] + m[4]*v[1] + m[7]*v[2];
441 result[2] = m[2]*v[0] + m[5]*v[1] + m[8]*v[2];
446 result[0] = m[0]*v[0] + m[1]*v[1] + m[2]*v[2] + m[3]*v[3];
447 result[1] = m[4]*v[0] + m[5]*v[1] + m[6]*v[2] + m[7]*v[3];
448 result[2] = m[8]*v[0] + m[9]*v[1] + m[10]*v[2] + m[11]*v[3];
449 result[3] = m[12]*v[0] + m[13]*v[1] + m[14]*v[2] + m[15]*v[3];
454 result[0] = m[0]*v[0] + m[4]*v[1] + m[8]*v[2] + m[12]*v[3];
455 result[1] = m[1]*v[0] + m[5]*v[1] + m[9]*v[2] + m[13]*v[3];
456 result[2] = m[2]*v[0] + m[6]*v[1] + m[10]*v[2] + m[14]*v[3];
457 result[3] = m[3]*v[0] + m[7]*v[1] + m[11]*v[2] + m[15]*v[3];
479 result[0] = v1[0]*v2[0];
480 result[1] = v1[0]*v2[1];
481 result[2] = v1[0]*v2[2];
483 result[3] = v1[1]*v2[0];
484 result[4] = v1[1]*v2[1];
485 result[5] = v1[1]*v2[2];
487 result[6] = v1[2]*v2[0];
488 result[7] = v1[2]*v2[1];
489 result[8] = v1[2]*v2[2];
494 result[0] = v1[0] * v2[0];
495 result[1] = v1[1] * v2[1];
496 result[2] = v1[2] * v2[2];
501 result[0] = v1[0] * v2[0];
502 result[1] = v1[1] * v2[1];
503 result[2] = v1[2] * v2[2];
504 result[3] = v1[3] * v2[3];
509 result[0] =
_SQRT( v[0] );
510 result[1] =
_SQRT( v[1] );
511 result[2] =
_SQRT( v[2] );
516 result[0] =
_SQRT( v[0] );
517 result[1] =
_SQRT( v[1] );
518 result[2] =
_SQRT( v[2] );
519 result[3] =
_SQRT( v[3] );
524 result[0] =
_FABS( v[0] );
525 result[1] =
_FABS( v[1] );
530 result[0] = fabs(v[0]);
531 result[1] = fabs(v[1]);
536 result[0] =
_FABS( v[0] );
537 result[1] =
_FABS( v[1] );
538 result[2] =
_FABS( v[2] );
543 result[0] = fabs(v[0]);
544 result[1] = fabs(v[1]);
545 result[2] = fabs(v[2]);
550 result[0] =
_FABS( v[0] );
551 result[1] =
_FABS( v[1] );
552 result[2] =
_FABS( v[2] );
553 result[3] =
_FABS( v[3] );
558 result[0] = fabs(v[0]);
559 result[1] = fabs(v[1]);
560 result[2] = fabs(v[2]);
561 result[3] = fabs(v[3]);
566 return v1[0] * v2[0] +
572 return v1[0] * v2[0] +
579 return v1[0] * v2[0] +
586 return v1[0] * v2[0] +
596 result[0] = v1[1]*v2[2] - v1[2]*v2[1];
597 result[1] = v1[2]*v2[0] - v1[0]*v2[2];
598 result[2] = v1[0]*v2[1] - v1[1]*v2[0];
603 result[0] = (double)(v1[1] * v2[2] - v1[2] * v2[1]);
604 result[1] = (double)(v1[2] * v2[0] - v1[0] * v2[2]);
605 result[2] = (double)(v1[0] * v2[1] - v1[1] * v2[0]);
644 result[0] = v[0] * x;
645 result[1] = v[1] * x;
646 result[2] = v[2] * x;
647 result[3] = v[3] * x;
669 result[0] = v[0] * d;
670 result[1] = v[1] * d;
671 result[2] = v[2] * d;
672 result[3] = v[3] * d;
677 result[0] = v1[0] + v2[0];
678 result[1] = v1[1] + v2[1];
679 result[2] = v1[2] + v2[2];
684 result[0] = v1[0] + v2[0];
685 result[1] = v1[1] + v2[1];
686 result[2] = v1[2] + v2[2];
691 result[0] = k1 * v1[0] + k2 * v2[0];
692 result[1] = k1 * v1[1] + k2 * v2[1];
693 result[2] = k1 * v1[2] + k2 * v2[2];
698 result[0] = v1[0] + v2[0];
699 result[1] = v1[1] + v2[1];
700 result[2] = v1[2] + v2[2];
701 result[3] = v1[3] + v2[3];
706 result[0] = v1[0] + v2[0];
707 result[1] = v1[1] + v2[1];
708 result[2] = v1[2] + v2[2];
709 result[3] = v1[3] + v2[3];
714 result[0] = v1[0] - v2[0];
715 result[1] = v1[1] - v2[1];
716 result[2] = v1[2] - v2[2];
721 result[0] = v1[0] - v2[0];
722 result[1] = v1[1] - v2[1];
723 result[2] = v1[2] - v2[2];
728 result[0] = v1[0] - v2[0];
729 result[1] = v1[1] - v2[1];
730 result[2] = v1[2] - v2[2];
731 result[3] = v1[3] - v2[3];
736 result[0] = v1[0] / v2[0];
737 result[1] = v1[1] / v2[1];
738 result[2] = v1[2] / v2[2];
743 result[0] = v1[0] / v2[0];
744 result[1] = v1[1] / v2[1];
745 result[2] = v1[2] / v2[2];
746 result[3] = v1[3] / v2[3];
759 if( (m + r_offset) > r || (n + c_offset) > c )
763 result += c*r_offset + c_offset;
765 int rowSize =
sizeof(
f_t )*n;
766 for(
int mi=0; mi<m; mi++ )
769 memcpy( result, A, rowSize );
830 f_t invDet, det = m[0] * m[3] - m[1] * m[2];
838 result[0] = m[3] * ( invDet);
839 result[1] = m[1] * (-invDet);
841 result[2] = m[2] * (-invDet);
842 result[3] = m[0] * ( invDet);
853 f_t invDet, det = m[0]*(m[8]*m[4]-m[7]*m[5]) - m[3]*(m[8]*m[1]-m[7]*m[2]) + m[6]*(m[5]*m[1]-m[4]*m[2]);
861 result[0] = invDet * (m[8]*m[4]-m[7]*m[5]);
862 result[1] = invDet * (m[7]*m[2]-m[8]*m[1]);
863 result[2] = invDet * (m[5]*m[1]-m[4]*m[2]);
865 result[3] = invDet * (m[6]*m[5]-m[8]*m[3]);
866 result[4] = invDet * (m[8]*m[0]-m[6]*m[2]);
867 result[5] = invDet * (m[3]*m[2]-m[5]*m[0]);
869 result[6] = invDet * (m[7]*m[3]-m[6]*m[4]);
870 result[7] = invDet * (m[6]*m[1]-m[7]*m[0]);
871 result[8] = invDet * (m[4]*m[0]-m[3]*m[1]);
882 m[5] * m[10] * m[15] -
883 m[5] * m[11] * m[14] -
884 m[9] * m[6] * m[15] +
885 m[9] * m[7] * m[14] +
886 m[13] * m[6] * m[11] -
887 m[13] * m[7] * m[10];
890 -m[4] * m[10] * m[15] +
891 m[4] * m[11] * m[14] +
892 m[8] * m[6] * m[15] -
893 m[8] * m[7] * m[14] -
894 m[12] * m[6] * m[11] +
895 m[12] * m[7] * m[10];
898 m[4] * m[9] * m[15] -
899 m[4] * m[11] * m[13] -
900 m[8] * m[5] * m[15] +
901 m[8] * m[7] * m[13] +
902 m[12] * m[5] * m[11] -
906 -m[4] * m[9] * m[14] +
907 m[4] * m[10] * m[13] +
908 m[8] * m[5] * m[14] -
909 m[8] * m[6] * m[13] -
910 m[12] * m[5] * m[10] +
914 -m[1] * m[10] * m[15] +
915 m[1] * m[11] * m[14] +
916 m[9] * m[2] * m[15] -
917 m[9] * m[3] * m[14] -
918 m[13] * m[2] * m[11] +
919 m[13] * m[3] * m[10];
922 m[0] * m[10] * m[15] -
923 m[0] * m[11] * m[14] -
924 m[8] * m[2] * m[15] +
925 m[8] * m[3] * m[14] +
926 m[12] * m[2] * m[11] -
927 m[12] * m[3] * m[10];
930 -m[0] * m[9] * m[15] +
931 m[0] * m[11] * m[13] +
932 m[8] * m[1] * m[15] -
933 m[8] * m[3] * m[13] -
934 m[12] * m[1] * m[11] +
938 m[0] * m[9] * m[14] -
939 m[0] * m[10] * m[13] -
940 m[8] * m[1] * m[14] +
941 m[8] * m[2] * m[13] +
942 m[12] * m[1] * m[10] -
946 m[1] * m[6] * m[15] -
947 m[1] * m[7] * m[14] -
948 m[5] * m[2] * m[15] +
949 m[5] * m[3] * m[14] +
950 m[13] * m[2] * m[7] -
954 -m[0] * m[6] * m[15] +
955 m[0] * m[7] * m[14] +
956 m[4] * m[2] * m[15] -
957 m[4] * m[3] * m[14] -
958 m[12] * m[2] * m[7] +
962 m[0] * m[5] * m[15] -
963 m[0] * m[7] * m[13] -
964 m[4] * m[1] * m[15] +
965 m[4] * m[3] * m[13] +
966 m[12] * m[1] * m[7] -
970 -m[0] * m[5] * m[14] +
971 m[0] * m[6] * m[13] +
972 m[4] * m[1] * m[14] -
973 m[4] * m[2] * m[13] -
974 m[12] * m[1] * m[6] +
978 -m[1] * m[6] * m[11] +
979 m[1] * m[7] * m[10] +
980 m[5] * m[2] * m[11] -
981 m[5] * m[3] * m[10] -
986 m[0] * m[6] * m[11] -
987 m[0] * m[7] * m[10] -
988 m[4] * m[2] * m[11] +
989 m[4] * m[3] * m[10] +
994 -m[0] * m[5] * m[11] +
996 m[4] * m[1] * m[11] -
1002 m[0] * m[5] * m[10] -
1003 m[0] * m[6] * m[9] -
1004 m[4] * m[1] * m[10] +
1005 m[4] * m[2] * m[9] +
1006 m[8] * m[1] * m[6] -
1009 det = m[0] * inv[0] + m[1] * inv[4] + m[2] * inv[8] + m[3] * inv[12];
1014 det = (
f_t)1.0 / det;
1016 for (i = 0; i < 16; i++)
1017 result[i] = inv[i] * det;
1027 memset( lpf, 0,
sizeof(
sLpfO0) );
1030 dc = dt * cornerFreqHz;
1031 lpf->
alpha = dc / (1.0f + dc);
void transpose_Mat2(ixMatrix2 result, const ixMatrix2 m)
void add_Vec4d_Vec4d(ixVector4d result, const ixVector4d v1, const ixVector4d v2)
char solve_lower(f_t *result, i_t n, f_t *A, f_t *b)
void div_Vec4d_X(ixVector4d result, const ixVector4d v, const double x)
void mul_Vec4d_X(ixVector4d result, const ixVector4d v, const double x)
void abs_Vec4d(ixVector4d result, const ixVector4d v)
void mul_Mat4x4_Vec4x1(ixVector4 result, const ixMatrix4 m, const ixVector4 v)
void mul_Mat3x3_Trans_Mat3x3_d(ixMatrix3d result, const ixMatrix3d m1, const ixMatrix3d m2)
void mul_Vec3_Vec3(ixVector3 result, const ixVector3 v1, const ixVector3 v2)
void LPFO0_init_Vec3(sLpfO0 *lpf, f_t dt, f_t cornerFreqHz, const ixVector3 initVal)
void cross_Vec3(ixVector3 result, const ixVector3 v1, const ixVector3 v2)
static __inline void zero_MatMxN(f_t *M, i_t m, i_t n)
f_t dot_Vec4_Vec4(const ixVector4 v1, const ixVector4 v2)
f_t dot_Vec3_Vec3(const ixVector3 v1, const ixVector3 v2)
void div_Vec3_Vec3(ixVector3 result, const ixVector3 v1, const ixVector3 v2)
void div_Vec4_Vec4(ixVector4 result, const ixVector4 v1, const ixVector4 v2)
void neg_Vec3(ixVector3 result, const ixVector3 v)
void mul_Mat4x4_Trans_Vec4x1(ixVector4 result, const ixMatrix4 m, const ixVector4 v)
void abs_Vec2(ixVector2 result, const ixVector2 v)
void abs_Vec2d(ixVector2d result, const ixVector2d v)
void transpose_Mat4(ixMatrix4 result, const ixMatrix4 m)
void mul_Mat3x3_Vec3x1(ixVector3 result, const ixMatrix3 m, const ixVector3 v)
void transpose_Mat3(ixMatrix3 result, const ixMatrix3 m)
void mul_Mat3x3_Mat3x3_Trans(ixMatrix3 result, const ixMatrix3 m1, const ixMatrix3 m2)
void cpy_MatRxC_MatMxN(f_t *result, i_t r, i_t c, i_t r_offset, i_t c_offset, f_t *A, i_t m, i_t n)
void sqrt_Vec4(ixVector4 result, const ixVector4 v)
void sqrt_Vec3(ixVector3 result, const ixVector3 v)
void abs_Vec4(ixVector4 result, const ixVector4 v)
void sub_Vec3d_Vec3d(ixVector3d result, const ixVector3d v1, const ixVector3d v2)
static __inline char is_zero(const f_t *f)
void sub_Vec3_Vec3(ixVector3 result, const ixVector3 v1, const ixVector3 v2)
void mul_Vec4_Vec4(ixVector4 result, const ixVector4 v1, const ixVector4 v2)
static __inline void cpy_MatMxN(f_t *result, const f_t *M, i_t m, i_t n)
void div_Vec3_X(ixVector3 result, const ixVector3 v, const f_t x)
void abs_Vec3d(ixVector3d result, const ixVector3d v)
char inv_Mat2(ixMatrix2 result, ixMatrix2 m)
void abs_Vec3(ixVector3 result, const ixVector3 v)
void mul_Mat3x3_Trans_Vec3x1(ixVector3 result, const ixMatrix3 m, const ixVector3 v)
void add_K1Vec3_K2Vec3(ixVector3 result, const ixVector3 v1, const ixVector3 v2, float k1, float k2)
void add_Vec3d_Vec3d(ixVector3d result, const ixVector3d v1, const ixVector3d v2)
void mul_Mat3x3_Mat3x3(ixMatrix3 result, const ixMatrix3 m1, const ixMatrix3 m2)
void mul_MatMxN(void *result, const void *A_ptr, const void *B_ptr, i_t m, i_t n, i_t p, char transpose_B, char add)
void mul_Vec3_X(ixVector3 result, const ixVector3 v, const f_t x)
void LPFO0_Vec3(sLpfO0 *lpf, const ixVector3 input)
void mul_Vec3d_X(ixVector3d result, const ixVector3d v, const double x)
char inv_Mat4(ixMatrix4 result, const ixMatrix4 m)
void add_Vec4_Vec4(ixVector4 result, const ixVector4 v1, const ixVector4 v2)
char inv_MatN(f_t *result, const f_t *M, i_t n)
void mul_Mat3x3_Trans_Mat3x3(ixMatrix3 result, const ixMatrix3 m1, const ixMatrix3 m2)
static __inline void O0_LPF_Vec3(ixVector3 result, const ixVector3 input, f_t alph, f_t beta)
void mul_Mat2x2_Vec2x1(ixVector2 result, const ixMatrix2 m, const ixVector2 v)
void mul_Mat3x3_Mat3x3_d(ixMatrix3d result, const ixMatrix3d m1, const ixMatrix3d m2)
void neg_Mat3x3(ixMatrix3 result, const ixMatrix3 m)
void mul_Mat3x3_Mat3x3_Trans_d(ixMatrix3d result, const ixMatrix3d m1, const ixMatrix3d m2)
void mul_Vec3x1_Vec1x3(ixMatrix3 result, const ixVector3 v1, const ixVector3 v2)
f_t dot_Vec2_Vec2(const ixVector2 v1, const ixVector2 v2)
void mul_Vec4_X(ixVector4 result, const ixVector4 v, const f_t x)
double dot_Vec3d_Vec3d(const ixVector3d v1, const ixVector3d v2)
void LU(const f_t *M, i_t n, f_t *L, f_t *U)
void mul_Vec2d_X(ixVector2d result, const ixVector2d v, const double x)
char solve_upper(f_t *result, i_t n, f_t *A, f_t *b)
void add_Vec3_Vec3(ixVector3 result, const ixVector3 v1, const ixVector3 v2)
char inv_Mat3(ixMatrix3 result, const ixMatrix3 m)
void sub_Vec4_Vec4(ixVector4 result, const ixVector4 v1, const ixVector4 v2)
void div_Vec4_X(ixVector4 result, const ixVector4 v, const f_t x)
void eye_MatN(f_t *A, i_t n)
void mul_Vec2_X(ixVector2 result, const ixVector2 v, const f_t x)
static __inline void cpy_Vec3_Vec3(ixVector3 result, const ixVector3 v)
void mul_Mat2x2_Trans_Vec2x1(ixVector2 result, const ixMatrix2 m, const ixVector2 v)
void trans_MatMxN(f_t *result, const f_t *M, int m, int n)
void crossd_Vec3(ixVector3d result, const ixVector3 v1, const ixVector3 v2)