Struct vecmat::Matrix[][src]

#[repr(transparent)]pub struct Matrix<T, const M: usize, const N: usize> { /* fields omitted */ }

Matrix with fixed dimensions.

Implementations

impl<T, const M: usize, const N: usize> Matrix<T, M, N>[src]

impl<T, const M: usize, const N: usize> Matrix<T, M, N>[src]

pub fn as_vector_of_vectors(&self) -> &Vector<Vector<T, N>, M>[src]

pub fn as_mut_vector_of_vectors(&mut self) -> &mut Vector<Vector<T, N>, M>[src]

pub fn as_array_of_vectors(&self) -> &[Vector<T, N>; M][src]

pub fn as_mut_array_of_vectors(&mut self) -> &mut [Vector<T, N>; M][src]

pub fn as_array_of_arrays(&self) -> &[[T; N]; M][src]

pub fn as_mut_array_of_arrays(&mut self) -> &mut [[T; N]; M][src]

impl<T, const M: usize, const N: usize> Matrix<T, M, N>[src]

pub fn try_from_iter_of_vectors<I>(i: I) -> Option<Self> where
    I: Iterator<Item = Vector<T, N>>, 
[src]

pub fn try_from_iter<I>(i: I) -> Option<Self> where
    I: Iterator<Item = T>, 
[src]

impl<T, const M: usize, const N: usize> Matrix<T, M, N>[src]

pub fn uninit() -> Matrix<MaybeUninit<T>, M, N>[src]

Create a matrix with uninitialized content.

impl<T, const M: usize, const N: usize> Matrix<MaybeUninit<T>, M, N>[src]

pub unsafe fn assume_init(self) -> Matrix<T, M, N>[src]

Assume that matrix content is initialized.

impl<T, const M: usize, const N: usize> Matrix<T, M, N>[src]

pub fn init<F: FnMut() -> T>(f: F) -> Self[src]

Initialize matrix by closure.

impl<T, const M: usize, const N: usize> Matrix<T, M, N> where
    T: Default
[src]

pub fn new() -> Self[src]

Create default matrix.

impl<T, const M: usize, const N: usize> Matrix<T, M, N> where
    T: Copy
[src]

pub fn fill(v: T) -> Self[src]

Create matrix which elements are filled with scalar value.

pub fn fill_ref(v: &T) -> Self[src]

Fill with a scalar value reference.

impl<T, const M: usize, const N: usize> Matrix<T, M, N>[src]

pub fn row_ref(&self, i: usize) -> &Vector<T, N>[src]

pub fn row_mut(&mut self, i: usize) -> &mut Vector<T, N>[src]

impl<T, const M: usize, const N: usize> Matrix<T, M, N> where
    T: Copy
[src]

pub fn row(&self, i: usize) -> Vector<T, N>[src]

pub fn col(&self, j: usize) -> Vector<T, M>[src]

impl<T, const M: usize, const N: usize> Matrix<T, M, N>[src]

pub fn as_ptr(&self) -> *const T[src]

Get pointer to the first element.

pub fn as_mut_ptr(&mut self) -> *mut T[src]

Get mutable pointer to the first element.

pub unsafe fn get_unchecked(&self, i: usize, j: usize) -> &T[src]

pub unsafe fn get_unchecked_mut(&mut self, i: usize, j: usize) -> &mut T[src]

impl<T, const M: usize, const N: usize> Matrix<T, M, N>[src]

pub fn iter(&self) -> impl Iterator<Item = &T>[src]

Returns iterator over matrix element refrences.

pub fn iter_mut(&mut self) -> impl Iterator<Item = &mut T>[src]

Returns iterator over matrix element mutable refrences.

impl<const M: usize, const N: usize> Matrix<(usize, usize), M, N>[src]

pub fn indices() -> Self[src]

Create matrix which elements are tuples (j, i) where j and i are coordinates of the matrix cell.

impl<T, const M: usize, const N: usize> Matrix<T, M, N>[src]

pub fn for_each<F: FnMut(T)>(self, f: F)[src]

Call closure for each element of the matrix passing it by value.

pub fn map<U, F: FnMut(T) -> U>(self, f: F) -> Matrix<U, M, N>[src]

Map matrix elements.

pub fn zip<U>(self, other: Matrix<U, M, N>) -> Matrix<(T, U), M, N>[src]

Zip two matrices into one.

impl<T, U, const M: usize, const N: usize> Matrix<(T, U), M, N>[src]

pub fn unzip(self) -> (Matrix<T, M, N>, Matrix<U, M, N>)[src]

Unzip matrix of tuples into two matrices.

impl<T, const M: usize, const N: usize> Matrix<T, M, N>[src]

pub fn fold<S, F: Fn(S, T) -> S>(self, s: S, f: F) -> S[src]

pub fn fold_first<F: FnMut(T, T) -> T>(self, f: F) -> T[src]

pub fn scan<S, U, F: FnMut(&mut S, T) -> U>(self, s: S, f: F) -> Matrix<U, M, N>[src]

impl<T, const M: usize, const N: usize> Matrix<T, M, N>[src]

pub fn sum(self) -> T where
    T: Add<Output = T>, 
[src]

pub fn max(self) -> T where
    T: PartialOrd
[src]

pub fn min(self) -> T where
    T: PartialOrd
[src]

impl<const M: usize, const N: usize> Matrix<bool, M, N>[src]

pub fn any(self) -> bool[src]

impl<const M: usize, const N: usize> Matrix<bool, M, N>[src]

pub fn all(self) -> bool[src]

impl<T, const M: usize, const N: usize> Matrix<T, M, N> where
    T: Integer
[src]

pub fn div_floor(self, other: Matrix<T, M, N>) -> Matrix<T, M, N>[src]

pub fn mod_floor(self, other: Matrix<T, M, N>) -> Matrix<T, M, N>[src]

pub fn div_mod_floor(
    self,
    other: Matrix<T, M, N>
) -> (Matrix<T, M, N>, Matrix<T, M, N>)
[src]

impl<T, const M: usize, const N: usize> Matrix<T, M, N> where
    T: PartialEq
[src]

pub fn veq(self, other: Matrix<T, M, N>) -> Matrix<bool, M, N>[src]

pub fn vne(self, other: Matrix<T, M, N>) -> Matrix<bool, M, N>[src]

impl<T, const M: usize, const N: usize> Matrix<T, M, N> where
    T: PartialOrd
[src]

pub fn vlt(self, other: Matrix<T, M, N>) -> Matrix<bool, M, N>[src]

pub fn vle(self, other: Matrix<T, M, N>) -> Matrix<bool, M, N>[src]

pub fn vgt(self, other: Matrix<T, M, N>) -> Matrix<bool, M, N>[src]

pub fn vge(self, other: Matrix<T, M, N>) -> Matrix<bool, M, N>[src]

impl<T, const N: usize> Matrix<T, N, N> where
    T: Zero
[src]

pub fn diagonal(diag: Vector<T, N>) -> Self[src]

Create diagonal matrix.

impl<T, const N: usize> Matrix<T, N, N> where
    T: Neg<Output = T> + Num + Copy
[src]

pub fn cofactor(&self, i: usize, j: usize) -> T[src]

Cofactor of the matrix at (i, j).

pub fn det(&self) -> T[src]

Determinant of the matrix.

pub fn adj(&self) -> Self[src]

Adjugate matrix.

pub fn inv(&self) -> Self[src]

Inverse matrix.

impl<T, const M: usize, const N: usize> Matrix<T, M, N>[src]

pub fn transpose(self) -> Matrix<T, N, M>[src]

Trait Implementations

impl<T, const M: usize, const N: usize> AbsDiffEq<Matrix<T, M, N>> for Matrix<T, M, N> where
    T: AbsDiffEq<Epsilon = T> + Copy
[src]

type Epsilon = T

Used for specifying relative comparisons.

impl<T, const M: usize, const N: usize> Add<Matrix<T, M, N>> for Matrix<T, M, N> where
    T: Add<Output = T>, 
[src]

type Output = Matrix<T, M, N>

The resulting type after applying the + operator.

impl<T, const M: usize, const N: usize> AddAssign<Matrix<T, M, N>> for Matrix<T, M, N> where
    T: AddAssign
[src]

impl<T, const M: usize, const N: usize> AsMut<Vector<Vector<T, N>, M>> for Matrix<T, M, N>[src]

impl<T, const M: usize, const N: usize> AsRef<Vector<Vector<T, N>, M>> for Matrix<T, M, N>[src]

impl<T, const M: usize, const N: usize> BitAnd<Matrix<T, M, N>> for Matrix<T, M, N> where
    T: BitAnd<Output = T>, 
[src]

type Output = Matrix<T, M, N>

The resulting type after applying the & operator.

impl<T, const M: usize, const N: usize> BitAndAssign<Matrix<T, M, N>> for Matrix<T, M, N> where
    T: BitAndAssign
[src]

impl<T, const M: usize, const N: usize> BitOr<Matrix<T, M, N>> for Matrix<T, M, N> where
    T: BitOr<Output = T>, 
[src]

type Output = Matrix<T, M, N>

The resulting type after applying the | operator.

impl<T, const M: usize, const N: usize> BitOrAssign<Matrix<T, M, N>> for Matrix<T, M, N> where
    T: BitOrAssign
[src]

impl<T, const M: usize, const N: usize> BitXor<Matrix<T, M, N>> for Matrix<T, M, N> where
    T: BitXor<Output = T>, 
[src]

type Output = Matrix<T, M, N>

The resulting type after applying the ^ operator.

impl<T, const M: usize, const N: usize> BitXorAssign<Matrix<T, M, N>> for Matrix<T, M, N> where
    T: BitXorAssign
[src]

impl<T: Clone, const M: usize, const N: usize> Clone for Matrix<T, M, N>[src]

impl<T: Copy, const M: usize, const N: usize> Copy for Matrix<T, M, N>[src]

impl<T, const M: usize, const N: usize> Debug for Matrix<T, M, N> where
    T: Debug
[src]

impl<T, const M: usize, const N: usize> Default for Matrix<T, M, N> where
    T: Default
[src]

fn default() -> Self[src]

Create matrix filled with default values.

impl<T, const M: usize, const N: usize> Display for Matrix<T, M, N> where
    T: Display
[src]

impl<D: Distribution<T>, T, const M: usize, const N: usize> Distribution<Matrix<T, M, N>> for MatrixDistribution<D, T, M, N>[src]

impl<T, const M: usize, const N: usize> Distribution<Matrix<T, M, N>> for Normal where
    Normal: Distribution<T>, 
[src]

impl<T, const N: usize> Distribution<Matrix<T, N, N>> for Invertible where
    Normal: Distribution<Matrix<T, N, N>>,
    T: Neg<Output = T> + Num + NormL1 + Copy,
    <T as NormL1>::Output: Epsilon
[src]

impl<T, const M: usize, const N: usize> Div<Matrix<T, M, N>> for Matrix<T, M, N> where
    T: Div<Output = T>, 
[src]

type Output = Matrix<T, M, N>

The resulting type after applying the / operator.

impl<T, const M: usize, const N: usize> Div<T> for Matrix<T, M, N> where
    T: Div<Output = T> + Copy
[src]

type Output = Matrix<T, M, N>

The resulting type after applying the / operator.

impl<T, const M: usize, const N: usize> DivAssign<Matrix<T, M, N>> for Matrix<T, M, N> where
    T: DivAssign
[src]

impl<T, const M: usize, const N: usize> DivAssign<T> for Matrix<T, M, N> where
    T: DivAssign + Copy
[src]

impl<T, const M: usize, const N: usize> Dot<Matrix<T, M, N>> for Vector<T, M> where
    T: Mul<Output = T> + Add<Output = T> + Copy
[src]

type Output = Vector<T, N>

Dot product output type.

impl<T, const L: usize, const M: usize, const N: usize> Dot<Matrix<T, M, N>> for Matrix<T, L, M> where
    T: Mul<Output = T> + Add<Output = T> + Copy
[src]

type Output = Matrix<T, L, N>

Dot product output type.

impl<T, const M: usize, const N: usize> Dot<Vector<T, N>> for Matrix<T, M, N> where
    T: Mul<Output = T> + Add<Output = T> + Copy
[src]

type Output = Vector<T, M>

Dot product output type.

impl<T, const M: usize, const N: usize> From<&'_ [[T; N]; M]> for Matrix<T, M, N> where
    T: Copy
[src]

impl<T, const M: usize, const N: usize> From<&'_ [Vector<T, N>; M]> for Matrix<T, M, N> where
    T: Copy
[src]

impl<T, const M: usize, const N: usize> From<&'_ Vector<Vector<T, N>, M>> for Matrix<T, M, N> where
    T: Copy
[src]

impl<'a, T, const M: usize, const N: usize> From<&'a Matrix<T, M, N>> for &'a Vector<Vector<T, N>, M>[src]

impl<'a, T, const M: usize, const N: usize> From<&'a mut Matrix<T, M, N>> for &'a mut Vector<Vector<T, N>, M>[src]

impl<T, const M: usize, const N: usize> From<[[T; N]; M]> for Matrix<T, M, N>[src]

impl<T, const M: usize, const N: usize> From<[Vector<T, N>; M]> for Matrix<T, M, N>[src]

impl<T, const N: usize> From<Linear<T, N>> for Matrix<T, N, N>[src]

impl<T> From<Matrix<T, 2_usize, 2_usize>> for Moebius<T>[src]

impl<T, const M: usize, const N: usize> From<Matrix<T, M, N>> for Vector<Vector<T, N>, M>[src]

impl<T, const N: usize> From<Matrix<T, N, N>> for Linear<T, N>[src]

impl<T, const M: usize, const N: usize> From<Vector<Vector<T, N>, M>> for Matrix<T, M, N>[src]

impl<T, const M: usize, const N: usize> Index<(usize, usize)> for Matrix<T, M, N>[src]

type Output = T

The returned type after indexing.

impl<T, const M: usize, const N: usize> IndexMut<(usize, usize)> for Matrix<T, M, N>[src]

impl<T, const M: usize, const N: usize> IntoIterator for Matrix<T, M, N>[src]

type Item = T

The type of the elements being iterated over.

type IntoIter = FlatIter<<Vector<Vector<T, N>, M> as IntoIterator>::IntoIter, Vector<T, N>, <Vector<T, N> as IntoIterator>::IntoIter>

Which kind of iterator are we turning this into?

impl<'a, T, const M: usize, const N: usize> IntoIterator for &'a Matrix<T, M, N>[src]

type Item = &'a T

The type of the elements being iterated over.

type IntoIter = FlatIter<Iter<'a, Vector<T, N>>, &'a Vector<T, N>, Iter<'a, T>>

Which kind of iterator are we turning this into?

impl<'a, T, const M: usize, const N: usize> IntoIterator for &'a mut Matrix<T, M, N>[src]

type Item = &'a mut T

The type of the elements being iterated over.

type IntoIter = FlatIter<IterMut<'a, Vector<T, N>>, &'a mut Vector<T, N>, IterMut<'a, T>>

Which kind of iterator are we turning this into?

impl<T, const M: usize, const N: usize> Mul<Matrix<T, M, N>> for Matrix<T, M, N> where
    T: Mul<Output = T>, 
[src]

type Output = Matrix<T, M, N>

The resulting type after applying the * operator.

impl<T, const M: usize, const N: usize> Mul<T> for Matrix<T, M, N> where
    T: Mul<Output = T> + Copy
[src]

type Output = Matrix<T, M, N>

The resulting type after applying the * operator.

impl<T, const M: usize, const N: usize> MulAssign<Matrix<T, M, N>> for Matrix<T, M, N> where
    T: MulAssign
[src]

impl<T, const M: usize, const N: usize> MulAssign<T> for Matrix<T, M, N> where
    T: MulAssign + Copy
[src]

impl<T, const M: usize, const N: usize> Neg for Matrix<T, M, N> where
    T: Neg<Output = T>, 
[src]

type Output = Matrix<T, M, N>

The resulting type after applying the - operator.

impl<T, const M: usize, const N: usize> NormL1 for Matrix<T, M, N> where
    T: NormL1<Output = T> + Add<Output = T>, 
[src]

type Output = T

Type of the norm.

impl<T, const M: usize, const N: usize> NormL2 for Matrix<T, M, N> where
    T: Float
[src]

type Output = T

Type of the norm.

impl<T, const M: usize, const N: usize> NormLInf for Matrix<T, M, N> where
    T: NormLInf<Output = T> + PartialOrd
[src]

type Output = T

Type of the norm.

impl<T, const M: usize, const N: usize> Not for Matrix<T, M, N> where
    T: Not<Output = T>, 
[src]

type Output = Matrix<T, M, N>

The resulting type after applying the ! operator.

impl<T, const N: usize> One for Matrix<T, N, N> where
    T: One + Zero
[src]

fn one() -> Self[src]

Create identity matrix.

impl<T: PartialEq, const M: usize, const N: usize> PartialEq<Matrix<T, M, N>> for Matrix<T, M, N>[src]

impl<T, const M: usize, const N: usize> Rem<Matrix<T, M, N>> for Matrix<T, M, N> where
    T: Rem<Output = T>, 
[src]

type Output = Matrix<T, M, N>

The resulting type after applying the % operator.

impl<T, const M: usize, const N: usize> Rem<T> for Matrix<T, M, N> where
    T: Rem<Output = T> + Copy
[src]

type Output = Matrix<T, M, N>

The resulting type after applying the % operator.

impl<T, const M: usize, const N: usize> RemAssign<Matrix<T, M, N>> for Matrix<T, M, N> where
    T: RemAssign
[src]

impl<T, const M: usize, const N: usize> RemAssign<T> for Matrix<T, M, N> where
    T: RemAssign + Copy
[src]

impl<T, const M: usize, const N: usize> StructuralPartialEq for Matrix<T, M, N>[src]

impl<T, const M: usize, const N: usize> Sub<Matrix<T, M, N>> for Matrix<T, M, N> where
    T: Sub<Output = T>, 
[src]

type Output = Matrix<T, M, N>

The resulting type after applying the - operator.

impl<T, const M: usize, const N: usize> SubAssign<Matrix<T, M, N>> for Matrix<T, M, N> where
    T: SubAssign
[src]

impl<'a, T, const M: usize, const N: usize> TryFrom<&'a [T]> for Matrix<T, M, N> where
    T: Copy
[src]

type Error = ()

The type returned in the event of a conversion error.

impl<'a, T, const M: usize, const N: usize> TryFrom<&'a [Vector<T, N>]> for Matrix<T, M, N> where
    T: Copy
[src]

type Error = ()

The type returned in the event of a conversion error.

impl<T, const M: usize, const N: usize> Zero for Matrix<T, M, N> where
    T: Zero
[src]

Auto Trait Implementations

impl<T, const M: usize, const N: usize> RefUnwindSafe for Matrix<T, M, N> where
    T: RefUnwindSafe

impl<T, const M: usize, const N: usize> Send for Matrix<T, M, N> where
    T: Send

impl<T, const M: usize, const N: usize> Sync for Matrix<T, M, N> where
    T: Sync

impl<T, const M: usize, const N: usize> Unpin for Matrix<T, M, N> where
    T: Unpin

impl<T, const M: usize, const N: usize> UnwindSafe for Matrix<T, M, N> where
    T: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, Rhs> NumAssignOps<Rhs> for T where
    T: AddAssign<Rhs> + SubAssign<Rhs> + MulAssign<Rhs> + DivAssign<Rhs> + RemAssign<Rhs>, 
[src]

impl<T, Rhs, Output> NumOps<Rhs, Output> for T where
    T: Sub<Rhs, Output = Output> + Mul<Rhs, Output = Output> + Div<Rhs, Output = Output> + Add<Rhs, Output = Output> + Rem<Rhs, Output = Output>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,