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; }
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; }
real mxm_invert(MxMatrix& r, const MxMatrix& a) { MxMatrix a2(a); return internal_invert(a2, r); }