Struct p3_matrix::dense::DenseMatrix
source · pub struct DenseMatrix<T, V = Vec<T>> {
pub values: V,
pub width: usize,
/* private fields */
}
Expand description
A dense matrix stored in row-major form.
Fields§
§values: V
§width: usize
Implementations§
source§impl<T: Clone + Send + Sync, S: DenseStorage<T>> DenseMatrix<T, S>
impl<T: Clone + Send + Sync, S: DenseStorage<T>> DenseMatrix<T, S>
pub fn new(values: S, width: usize) -> Self
pub fn new_row(values: S) -> Self
pub fn new_col(values: S) -> Self
pub fn as_view(&self) -> RowMajorMatrixView<'_, T>
pub fn as_view_mut(&mut self) -> RowMajorMatrixViewMut<'_, T>
pub fn flatten_to_base<F: Field>(&self) -> RowMajorMatrix<F>where
T: ExtensionField<F>,
pub fn par_row_slices(&self) -> impl IndexedParallelIterator<Item = &[T]>where
T: Sync,
pub fn row_mut(&mut self, r: usize) -> &mut [T]
pub fn rows_mut(&mut self) -> impl Iterator<Item = &mut [T]>
pub fn par_rows_mut<'a>( &'a mut self, ) -> impl IndexedParallelIterator<Item = &'a mut [T]>
pub fn horizontally_packed_row_mut<P>( &mut self, r: usize, ) -> (&mut [P], &mut [T])
pub fn scale_row(&mut self, r: usize, scale: T)
pub fn scale(&mut self, scale: T)
pub fn split_rows( &self, r: usize, ) -> (RowMajorMatrixView<'_, T>, RowMajorMatrixView<'_, T>)
pub fn split_rows_mut( &mut self, r: usize, ) -> (RowMajorMatrixViewMut<'_, T>, RowMajorMatrixViewMut<'_, T>)
pub fn par_row_chunks_mut( &mut self, chunk_rows: usize, ) -> impl IndexedParallelIterator<Item = RowMajorMatrixViewMut<'_, T>>
pub fn par_row_chunks_exact_mut( &mut self, chunk_rows: usize, ) -> impl IndexedParallelIterator<Item = RowMajorMatrixViewMut<'_, T>>
pub fn row_pair_mut( &mut self, row_1: usize, row_2: usize, ) -> (&mut [T], &mut [T])
pub fn packed_row_pair_mut<P>( &mut self, row_1: usize, row_2: usize, ) -> ((&mut [P], &mut [T]), (&mut [P], &mut [T]))
pub fn bit_reversed_zero_pad(self, added_bits: usize) -> RowMajorMatrix<T>
Trait Implementations§
source§impl<T: Clone + Send + Sync, S: DenseStorage<T>> BitReversableMatrix<T> for DenseMatrix<T, S>
impl<T: Clone + Send + Sync, S: DenseStorage<T>> BitReversableMatrix<T> for DenseMatrix<T, S>
type BitRev = RowIndexMappedView<BitReversalPerm, DenseMatrix<T, S>>
fn bit_reverse_rows(self) -> Self::BitRev
source§impl<T: Clone, V: Clone> Clone for DenseMatrix<T, V>
impl<T: Clone, V: Clone> Clone for DenseMatrix<T, V>
source§fn clone(&self) -> DenseMatrix<T, V>
fn clone(&self) -> DenseMatrix<T, V>
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl<'de, T, V> Deserialize<'de> for DenseMatrix<T, V>where
V: Deserialize<'de>,
impl<'de, T, V> Deserialize<'de> for DenseMatrix<T, V>where
V: Deserialize<'de>,
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
source§impl<T: Clone + Send + Sync, S: DenseStorage<T>> Matrix<T> for DenseMatrix<T, S>
impl<T: Clone + Send + Sync, S: DenseStorage<T>> Matrix<T> for DenseMatrix<T, S>
fn width(&self) -> usize
fn height(&self) -> usize
fn get(&self, r: usize, c: usize) -> T
type Row<'a> = Cloned<Iter<'a, T>> where Self: 'a
fn row(&self, r: usize) -> Self::Row<'_>
fn row_slice(&self, r: usize) -> impl Deref<Target = [T]>
fn to_row_major_matrix(self) -> RowMajorMatrix<T>
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 dimensions(&self) -> Dimensions
fn rows(&self) -> impl Iterator<Item = Self::Row<'_>>
fn par_rows(&self) -> impl IndexedParallelIterator<Item = Self::Row<'_>>
fn first_row(&self) -> Self::Row<'_>
fn last_row(&self) -> Self::Row<'_>
source§fn vertically_packed_row<P>(&self, r: usize) -> impl Iterator<Item = P>where
P: PackedValue<Value = T>,
fn vertically_packed_row<P>(&self, r: usize) -> impl Iterator<Item = P>where
P: PackedValue<Value = T>,
Wraps at the end.
fn vertically_strided(
self,
stride: usize,
offset: usize,
) -> VerticallyStridedMatrixView<Self>where
Self: Sized,
source§impl<T: PartialEq, V: PartialEq> PartialEq for DenseMatrix<T, V>
impl<T: PartialEq, V: PartialEq> PartialEq for DenseMatrix<T, V>
source§fn eq(&self, other: &DenseMatrix<T, V>) -> bool
fn eq(&self, other: &DenseMatrix<T, V>) -> bool
This method tests for
self
and other
values to be equal, and is used
by ==
.source§impl<T, V> Serialize for DenseMatrix<T, V>where
V: Serialize,
impl<T, V> Serialize for DenseMatrix<T, V>where
V: Serialize,
impl<T: Copy, V: Copy> Copy for DenseMatrix<T, V>
impl<T: Eq, V: Eq> Eq for DenseMatrix<T, V>
impl<T, V> StructuralPartialEq for DenseMatrix<T, V>
Auto Trait Implementations§
impl<T, V> Freeze for DenseMatrix<T, V>where
V: Freeze,
impl<T, V> RefUnwindSafe for DenseMatrix<T, V>where
V: RefUnwindSafe,
T: RefUnwindSafe,
impl<T, V> Send for DenseMatrix<T, V>
impl<T, V> Sync for DenseMatrix<T, V>
impl<T, V> Unpin for DenseMatrix<T, V>
impl<T, V> UnwindSafe for DenseMatrix<T, V>where
V: UnwindSafe,
T: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Copy,
impl<T> CloneToUninit for Twhere
T: Copy,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more