float mxm_invert(float *r, const float *a, const int N) { mxm_local_block(a2, double, N); mxm_local_block(r2, double, N); unsigned int i; for(i=0; i<(unsigned int)N*N; i++) a2[i] = a[i]; float det = (float)internal_invert(a2, r2, N); for(i=0; i<(unsigned int)N*N; i++) r[i] = (float)r2[i]; mxm_free_local(a2); mxm_free_local(r2); return det; }
float mxm_invert(float *r, const float *a, const int N) { mxm_local_block(a2, real, N); mxm_local_block(r2, real, N); uint i; for(i=0; i<N*N; i++) a2[i] = a[i]; float det = internal_invert(a2, r2, N); for(i=0; i<N*N; i++) r[i] = r2[i]; mxm_free_local(a2); mxm_free_local(r2); return det; }
double mxm_invert(double *r, const double *a, const int N) { mxm_local_block(a2, double, N); mxm_set(a2, a, N); double det = internal_invert(a2, r, N); mxm_free_local(a2); return det; }
real mxm_invert(real *r, const real *a, const int N) { mxm_local_block(a2, real, N); mxm_set(a2, a, N); real det = internal_invert(a2, r, N); mxm_free_local(a2); return det; }
double mxm_solve(double *x, const double *A, const double *b, const int N) { mxm_local_block(a2, double, N); mxm_set(a2, A, N); mxv_set(x, b, N); double det = internal_solve(a2, x, N); mxm_free_local(a2); return det; }
real mxm_solve(real *x, const real *A, const real *b, const int N) { mxm_local_block(a2, real, N); mxm_set(a2, A, N); mxv_set(x, b, N); real det = internal_solve(a2, x, N); mxm_free_local(a2); return det; }