126 <<
"This matrix has a null determinant and cannot be inverted. Returning zero matrix."
128 for (
int row = 0; row < _range; row++ )
129 for (
int col = 0; col < _range; col++ ) ( *inv )( row, col ) = 0.;
133 T determinant =
det();
135 for (
int row = 0; row < _range; row++ )
136 for (
int col = 0; col < _range; col++ )
139 inv->_mat[col][row] = std::pow( -1., row + col ) * minor->
det() / determinant;
149 if ( left._range != right._range )
151 std::cerr <<
"These matrices cannot be multiplied." << std::endl;
159 for (
int row = 0; row < left._range; row++ )
160 for (
int col = 0; col < right._range; col++ ) ( *mat )[row][col] = 0;
162 for (
int row = 0; row < left._range; row++ )
163 for (
int col = 0; col < right._range; col++ )
164 for (
int line = 0; line < right._range; line++ )
165 ( *mat )[row][col] += left._mat[row][line] * right._mat[line][col];