PackedField

Trait PackedField 

Source
pub unsafe trait PackedField:
    Algebra<Self::Scalar>
    + PackedValue<Value = Self::Scalar>
    + Div<Self::Scalar, Output = Self> {
    type Scalar: Field;

    // Provided methods
    fn packed_powers(base: Self::Scalar) -> Powers<Self>  { ... }
    fn packed_shifted_powers(
        base: Self::Scalar,
        start: Self::Scalar,
    ) -> Powers<Self>  { ... }
    fn packed_linear_combination<const N: usize>(
        coeffs: &[Self::Scalar],
        vecs: &[Self],
    ) -> Self { ... }
}
Expand description

An array of field elements which can be packed into a vector for SIMD operations.

§Safety

  • See PackedValue above.

Required Associated Types§

Provided Methods§

Source

fn packed_powers(base: Self::Scalar) -> Powers<Self>

Construct an iterator which returns powers of base packed into packed field elements.

E.g. if Self::WIDTH = 4, returns: [base^0, base^1, base^2, base^3], [base^4, base^5, base^6, base^7], ....

Source

fn packed_shifted_powers( base: Self::Scalar, start: Self::Scalar, ) -> Powers<Self>

Construct an iterator which returns powers of base multiplied by start and packed into packed field elements.

E.g. if Self::WIDTH = 4, returns: [start, start*base, start*base^2, start*base^3], [start*base^4, start*base^5, start*base^6, start*base^7], ....

Source

fn packed_linear_combination<const N: usize>( coeffs: &[Self::Scalar], vecs: &[Self], ) -> Self

Compute a linear combination of a slice of base field elements and a slice of packed field elements. The slices must have equal length and it must be a compile time constant.

§Panics

May panic if the length of either slice is not equal to N.

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§