69inline int inverse(
double const * mat,
double *
const inv)
71 inv[0] =
det2(mat[4], mat[5], mat[7], mat[8]);
72 inv[1] =
det2(mat[2], mat[1], mat[8], mat[7]);
73 inv[2] =
det2(mat[1], mat[2], mat[4], mat[5]);
74 inv[3] =
det2(mat[5], mat[3], mat[8], mat[6]);
75 inv[4] =
det2(mat[0], mat[3], mat[6], mat[8]);
76 inv[5] =
det2(mat[2], mat[0], mat[5], mat[3]);
77 inv[6] =
det2(mat[3], mat[4], mat[6], mat[7]);
78 inv[7] =
det2(mat[1], mat[0], mat[7], mat[6]);
79 inv[8] =
det2(mat[0], mat[1], mat[3], mat[4]);
82 if (std::abs(dd) <
SMALL)
84 MY_WARNING(
"Cannot invert cell matrix. Determinant is 0.");
87 for (
int i = 0; i < 9; i++) { inv[i] /= dd; }