pub trait MatrixMath<T, const M: usize, const N: usize>: Array2dOps<T, M, N> {
    // Required methods
    fn identity_matrix() -> Self
       where T: ZeroConst + OneConst;
    fn mul_matrix<Rhs, const P: usize>(
        &self,
        rhs: &Self::Array2d<Rhs, N, P>
    ) -> Self::Array2d<<T as Mul<Rhs>>::Output, M, P>
       where T: Mul<Rhs, Output: AddAssign + ZeroConst> + Copy,
             Rhs: Copy;
    fn pivot_matrix(&self) -> [[T; M]; M]
       where T: Neg<Output = T> + ZeroConst + OneConst + PartialOrd + Copy;
    fn lup_matrix(&self) -> ([[T; { _ }]; M], [[T; N]; { _ }], [[T; M]; M])
       where T: Neg<Output = T> + ZeroConst + OneConst + PartialOrd + Mul<Output = T> + AddAssign + Copy + Sub<Output = T> + Div<Output = T>;
    fn lu_matrix(&self) -> ([[T; { _ }]; M], [[T; N]; { _ }])
       where T: ZeroConst + OneConst + PartialOrd + Mul<Output = T> + Sub<Output = T> + Div<Output = T> + AddAssign + Copy;
    fn det_matrix(&self) -> T
       where T: ZeroConst + Neg<Output = T> + OneConst + Copy + AddAssign + PartialOrd + Mul<Output = T> + MulAssign + Sub<Output = T> + Div<Output = T>;
    fn is_matrix_invertible(&self) -> bool
       where T: ZeroConst + Neg<Output = T> + OneConst + Copy + AddAssign + PartialOrd + MulAssign + Sub<Output = T> + Div<Output = T>;
}

Required Methods§

source

fn identity_matrix() -> Self
where T: ZeroConst + OneConst,

source

fn mul_matrix<Rhs, const P: usize>( &self, rhs: &Self::Array2d<Rhs, N, P> ) -> Self::Array2d<<T as Mul<Rhs>>::Output, M, P>
where T: Mul<Rhs, Output: AddAssign + ZeroConst> + Copy, Rhs: Copy,

source

fn pivot_matrix(&self) -> [[T; M]; M]
where T: Neg<Output = T> + ZeroConst + OneConst + PartialOrd + Copy,

source

fn lup_matrix(&self) -> ([[T; { _ }]; M], [[T; N]; { _ }], [[T; M]; M])
where T: Neg<Output = T> + ZeroConst + OneConst + PartialOrd + Mul<Output = T> + AddAssign + Copy + Sub<Output = T> + Div<Output = T>,

source

fn lu_matrix(&self) -> ([[T; { _ }]; M], [[T; N]; { _ }])
where T: ZeroConst + OneConst + PartialOrd + Mul<Output = T> + Sub<Output = T> + Div<Output = T> + AddAssign + Copy,

source

fn det_matrix(&self) -> T
where T: ZeroConst + Neg<Output = T> + OneConst + Copy + AddAssign + PartialOrd + Mul<Output = T> + MulAssign + Sub<Output = T> + Div<Output = T>,

source

fn is_matrix_invertible(&self) -> bool
where T: ZeroConst + Neg<Output = T> + OneConst + Copy + AddAssign + PartialOrd + MulAssign + Sub<Output = T> + Div<Output = T>,

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl<T, const M: usize, const N: usize> MatrixMath<T, M, N> for [[T; N]; M]

source§

fn identity_matrix() -> Self
where T: ZeroConst + OneConst,

source§

fn mul_matrix<Rhs, const P: usize>( &self, rhs: &Self::Array2d<Rhs, N, P> ) -> Self::Array2d<<T as Mul<Rhs>>::Output, M, P>
where T: Mul<Rhs, Output: AddAssign + ZeroConst> + Copy, Rhs: Copy,

source§

fn pivot_matrix(&self) -> [[T; M]; M]
where T: Neg<Output = T> + ZeroConst + OneConst + PartialOrd + Copy,

source§

fn lup_matrix(&self) -> ([[T; { _ }]; M], [[T; N]; { _ }], [[T; M]; M])
where T: Neg<Output = T> + ZeroConst + OneConst + PartialOrd + Mul<Output = T> + AddAssign + Copy + Sub<Output = T> + Div<Output = T>,

source§

fn lu_matrix(&self) -> ([[T; { _ }]; M], [[T; N]; { _ }])
where T: ZeroConst + OneConst + PartialOrd + Mul<Output = T> + Sub<Output = T> + Div<Output = T> + AddAssign + Copy,

source§

fn det_matrix(&self) -> T
where T: ZeroConst + Neg<Output = T> + OneConst + Copy + AddAssign + PartialOrd + Mul<Output = T> + MulAssign + Sub<Output = T> + Div<Output = T>,

source§

fn is_matrix_invertible(&self) -> bool
where T: ZeroConst + Neg<Output = T> + OneConst + Copy + AddAssign + PartialOrd + MulAssign + Sub<Output = T> + Div<Output = T>,

Implementors§