pub struct OptimizedArcMatrix<F: PrimeField>(pub ArcMatrix<F>);
Expand description

Represents an optimized matrix of round constants.

This modifies the partial rounds in the middle of the permutation, wherein you add constants first before iterating through the partial rounds.

This method follows calc_equivalent_constants from Appendix B’s poseidonperm_x3_64_24_optimized.sage.

Tuple Fields§

§0: ArcMatrix<F>

Trait Implementations§

source§

impl<F: Clone + PrimeField> Clone for OptimizedArcMatrix<F>

source§

fn clone(&self) -> OptimizedArcMatrix<F>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<F: Debug + PrimeField> Debug for OptimizedArcMatrix<F>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<F: PrimeField> MatrixOperations<F> for OptimizedArcMatrix<F>

source§

fn new(n_rows: usize, n_cols: usize, elements: Vec<F>) -> Self

Create a OptimizedArcMatrix from its elements.

source§

fn elements(&self) -> &Vec<F>

Access elements as a vector
source§

fn get_element(&self, i: usize, j: usize) -> F

Get element[i,j]
source§

fn set_element(&mut self, i: usize, j: usize, val: F)

Set element[i,j]
source§

fn rows(&self) -> Vec<&[F]>

Get rows
source§

fn n_rows(&self) -> usize

Number of rows
source§

fn n_cols(&self) -> usize

Number of columns
source§

fn transpose(&self) -> Self

Take transpose of the matrix
source§

fn hadamard_product(&self, rhs: &Self) -> Result<Self>where Self: Sized,

Compute Hadamard (element-wise) product
source§

fn iter_rows(&self) -> Chunks<'_, F>

Get rows in chunks
source§

impl<F: PartialEq + PrimeField> PartialEq<OptimizedArcMatrix<F>> for OptimizedArcMatrix<F>

source§

fn eq(&self, other: &OptimizedArcMatrix<F>) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<F: Eq + PrimeField> Eq for OptimizedArcMatrix<F>

source§

impl<F: PrimeField> StructuralEq for OptimizedArcMatrix<F>

source§

impl<F: PrimeField> StructuralPartialEq for OptimizedArcMatrix<F>

Auto Trait Implementations§

§

impl<F> RefUnwindSafe for OptimizedArcMatrix<F>where F: RefUnwindSafe,

§

impl<F> Send for OptimizedArcMatrix<F>

§

impl<F> Sync for OptimizedArcMatrix<F>

§

impl<F> Unpin for OptimizedArcMatrix<F>where F: Unpin,

§

impl<F> UnwindSafe for OptimizedArcMatrix<F>where F: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

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

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

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

§

fn vzip(self) -> V