# Matrix Inverse

Inverse refers to a matrices multiplicitive inverse. For example `0.2`

is the multiplicitive inverse of `5`

, `2.2 * 5 = 1`

. Multiplying a scalar value by it's multiplicitive inverse results in one. Multiplying a matrix by its multiplicitive inverse results in the identity matrix.

Not all matrices have an inverse. Only square matrices have an inverse, non-square matrices are not invertable. If the determinant of a matrix is 0, the matrix is not invertable.

The inverse of matrix \(M\) would is written as \(M^{-1}\).

To invert a matrix, divide it's adjugate by the determinant of the matrix. Since we didn't define scalar matrix division, use reciprocal multiplication. Instead of dividing by the determinant, multiply by `1 / determinant`

. The formula loks like this:

$$ M^{-1} = adjugate(M)\frac{1}{|M|} $$

Finding the adjugate of a matrix is challenging, it will be covered in Step 7f, Adjuage. Finding the adjugate requires several support functions, which will be built out in the next few sections.

// mat2 and mat3 implementations are identical mat4 Inverse(mat4 m) { float det = Determinant(m); if (det == 0.0f) { // Should use epsilon comparison here return mat4(); } return Adjugate(m) * (1.0f / det); }