pub fn lup_matrix<T, const M: usize, const N: usize>( matrix: &[[T; N]; M] ) -> ([[T; { _ }]; M], [[T; N]; { _ }], [[T; M]; M])where T: Zero + One + PartialOrd + Mul<Output = T> + AddAssign + Copy + Neg<Output = T> + Sub<Output = T> + Div<Output = T>,