Trait Matrix

Source
pub trait Matrix<T: Send + Sync>: Send + Sync {
    type Row<'a>: Iterator<Item = T> + Send + Sync
       where Self: 'a;

Show 15 methods // Required methods fn width(&self) -> usize; fn height(&self) -> usize; fn row(&self, r: usize) -> Self::Row<'_>; // Provided methods fn dimensions(&self) -> Dimensions { ... } fn get(&self, r: usize, c: usize) -> T { ... } fn rows(&self) -> impl Iterator<Item = Self::Row<'_>> { ... } fn par_rows(&self) -> impl IndexedParallelIterator<Item = Self::Row<'_>> { ... } fn row_slice(&self, r: usize) -> impl Deref<Target = [T]> { ... } fn first_row(&self) -> Self::Row<'_> { ... } fn last_row(&self) -> Self::Row<'_> { ... } fn to_row_major_matrix(self) -> RowMajorMatrix<T> where Self: Sized, T: Clone { ... } fn horizontally_packed_row<'a, P>( &'a self, r: usize, ) -> (impl Iterator<Item = P>, impl Iterator<Item = T>) where P: PackedValue<Value = T>, T: Clone + 'a { ... } fn vertically_packed_row<P>(&self, r: usize) -> impl Iterator<Item = P> where P: PackedValue<Value = T> { ... } fn vertically_strided( self, stride: usize, offset: usize, ) -> VerticallyStridedMatrixView<Self> where Self: Sized { ... } fn columnwise_dot_product<EF>(&self, v: &[EF]) -> Vec<EF> where T: Field, EF: ExtensionField<T> { ... }
}

Required Associated Types§

Source

type Row<'a>: Iterator<Item = T> + Send + Sync where Self: 'a

Required Methods§

Source

fn width(&self) -> usize

Source

fn height(&self) -> usize

Source

fn row(&self, r: usize) -> Self::Row<'_>

Provided Methods§

Source

fn dimensions(&self) -> Dimensions

Source

fn get(&self, r: usize, c: usize) -> T

Source

fn rows(&self) -> impl Iterator<Item = Self::Row<'_>>

Source

fn par_rows(&self) -> impl IndexedParallelIterator<Item = Self::Row<'_>>

Source

fn row_slice(&self, r: usize) -> impl Deref<Target = [T]>

Source

fn first_row(&self) -> Self::Row<'_>

Source

fn last_row(&self) -> Self::Row<'_>

Source

fn to_row_major_matrix(self) -> RowMajorMatrix<T>
where Self: Sized, T: Clone,

Source

fn horizontally_packed_row<'a, P>( &'a self, r: usize, ) -> (impl Iterator<Item = P>, impl Iterator<Item = T>)
where P: PackedValue<Value = T>, T: Clone + 'a,

Source

fn vertically_packed_row<P>(&self, r: usize) -> impl Iterator<Item = P>
where P: PackedValue<Value = T>,

Wraps at the end.

Source

fn vertically_strided( self, stride: usize, offset: usize, ) -> VerticallyStridedMatrixView<Self>
where Self: Sized,

Source

fn columnwise_dot_product<EF>(&self, v: &[EF]) -> Vec<EF>
where T: Field, EF: ExtensionField<T>,

Compute Mᵀv, aka premultiply this matrix by the given vector, aka scale each row by the corresponding entry in v and take the row-wise sum. v can be a vector of extension elements.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl<F, EF, Inner> Matrix<F> for FlatMatrixView<F, EF, Inner>
where F: Field, EF: ExtensionField<F>, Inner: Matrix<EF>,

Source§

type Row<'a> = FlatIter<F, <Inner as Matrix<EF>>::Row<'a>> where Self: 'a

Source§

impl<T: Clone + Default + Send + Sync> Matrix<T> for CsrMatrix<T>

Source§

type Row<'a> = <Vec<T> as IntoIterator>::IntoIter where Self: 'a

Source§

impl<T: Clone + Send + Sync, S: DenseStorage<T>> Matrix<T> for DenseMatrix<T, S>

Source§

type Row<'a> = Cloned<Iter<'a, T>> where Self: 'a

Source§

impl<T: Send + Sync, First: Matrix<T>, Second: Matrix<T>> Matrix<T> for VerticalPair<First, Second>

Source§

type Row<'a> = EitherRow<<First as Matrix<T>>::Row<'a>, <Second as Matrix<T>>::Row<'a>> where Self: 'a

Source§

impl<T: Send + Sync, IndexMap: RowIndexMap, Inner: Matrix<T>> Matrix<T> for RowIndexMappedView<IndexMap, Inner>

Source§

type Row<'a> = <Inner as Matrix<T>>::Row<'a> where Self: 'a