for(loop=1; loop<=mat.cols; loop++) { accum=0; recurDet.data=(double*)malloc((recurDet.cols*recurDet.rows)*sizeof(double)); for(looptwo=0;looptwo<=(mat.rows*mat.cols)-1;looptwo++) { if(looptwo%mat.cols == loop) { } else if(looptwo < mat.cols) { } else { recurDet.data[accum]=mat.data[looptwo]; accum++; } } matDet+=mat.data[loop-1]*det(recurDet); free(recurDet.data); }