void inverseMatrix(int dim, double *matrix, double *invMatrix){ // matrix and invMatrix are columnwise. int *IPIV, LWORK, INFO, i; double *WORK; mexPrintf("entered inverseMatrix"); IPIV = mxMalloc((dim+1)*sizeof(int)); LWORK = dim*dim; WORK = mxMalloc(LWORK*sizeof(double)); for (i=0;i<dim*dim;i++){ invMatrix[i] = matrix[i]; } mexPrintf("before dgetrf"); dgetrf(&dim, &dim, invMatrix, &dim, IPIV, &INFO); mexPrintf("before dgetri"); dgetri(&dim, invMatrix, &dim, IPIV, WORK, &LWORK, &INFO); mxFree(IPIV); mxFree(WORK); return;}
I am trying to use dgetrf and dgetri to inverse a matrix in C but Matlab crashes after successfully giving the correct answer 2 times (I did an interation to try the stability of the c code).
Best Answer