InternalLayerBaseParameters

Trait InternalLayerBaseParameters 

Source
pub trait InternalLayerBaseParameters<MP: MontyParameters, const WIDTH: usize>: Clone + Sync {
    // Required method
    fn internal_layer_mat_mul<R: PrimeCharacteristicRing>(
        state: &mut [R; WIDTH],
        sum: R,
    );

    // Provided method
    fn generic_internal_linear_layer<R: PrimeCharacteristicRing>(
        state: &mut [R; WIDTH],
    ) { ... }
}
Expand description

Trait which handles the Poseidon2 internal layers.

Everything needed to compute multiplication by a WIDTH x WIDTH diffusion matrix whose monty form is 1 + Diag(vec). vec is assumed to be of the form [-2, ...] with all entries after the first being small powers of 2.

Required Methods§

Source

fn internal_layer_mat_mul<R: PrimeCharacteristicRing>( state: &mut [R; WIDTH], sum: R, )

Perform the internal matrix multiplication: s -> (1 + Diag(V))s. We ignore state[0] as it is handled separately.

Provided Methods§

Source

fn generic_internal_linear_layer<R: PrimeCharacteristicRing>( state: &mut [R; WIDTH], )

Perform the matrix multiplication corresponding to the internal linear layer.

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§