pub fn is_matrix_invertible<T, const M: usize, const N: usize>(
    matrix: &[[T; N]; M]
) -> bool
where T: ZeroConst + Neg<Output = T> + OneConst + Copy + AddAssign + PartialOrd + MulAssign + Sub<Output = T> + Div<Output = T>,