All pastes #619545 Raw Edit

^DX^

public text v1 · immutable
·published 2007-07-14 20:44 UTC
rendered paste body
double det(sMatrix mat) {
	
	//Test to make sure the matrix is square.
	if(mat.cols != mat.rows) error("Matrix is not square!");
	//If the matrix is a 1x1, return the number
	if(mat.cols==1 && mat.rows ==1) {
		return (mat.data[0]);
	} else if(mat.cols==2 && mat.rows==2) {
		return((mat.data[0]*mat.data[3])-(mat.data[2]*mat.data[1]));
	} else { 
		sMatrix recurDet;
		recurDet.cols=(mat.cols-1);
		recurDet.rows=(mat.rows-1);
		double matDet;
		matDet=0; 
		int loop; int looptwo; int accum;

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

}