static char *sccsid = "@(#)m_cofactor.c	4/5/82 (U of Maryland, FLB)";

#include "mat.h"

double
m_cofactor(mat, i, j)
register struct matrix *mat;
register int i, j;
{
register struct matrix *result;
register int row, col, o_row = 0, o_col = 0;
double det;

m_create(result, mat->m_rows - 1, mat->m_cols - 1);

for (row = 0; row < mat->m_rows; row++)
	for (col = 0; col < mat->m_cols; col++)
		if (row != i && col != j)
			m_v(result, o_row++, o_col++) = m_v(mat, row, col);

det = m_determinant(result);
free(result);

return(((i + j) & 01)? -det: det);
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          