p3_dft

Trait Butterfly

Source
pub trait Butterfly<F: Field>:
    Copy
    + Send
    + Sync {
    // Required method
    fn apply<PF: PackedField<Scalar = F>>(&self, x_1: PF, x_2: PF) -> (PF, PF);

    // Provided methods
    fn apply_in_place<PF: PackedField<Scalar = F>>(
        &self,
        x_1: &mut PF,
        x_2: &mut PF,
    ) { ... }
    fn apply_to_rows(&self, row_1: &mut [F], row_2: &mut [F]) { ... }
    fn apply_to_rows_oop(
        &self,
        src_1: &[F],
        dst_1: &mut [MaybeUninit<F>],
        src_2: &[F],
        dst_2: &mut [MaybeUninit<F>],
    ) { ... }
}

Required Methods§

Source

fn apply<PF: PackedField<Scalar = F>>(&self, x_1: PF, x_2: PF) -> (PF, PF)

Provided Methods§

Source

fn apply_in_place<PF: PackedField<Scalar = F>>( &self, x_1: &mut PF, x_2: &mut PF, )

Source

fn apply_to_rows(&self, row_1: &mut [F], row_2: &mut [F])

Source

fn apply_to_rows_oop( &self, src_1: &[F], dst_1: &mut [MaybeUninit<F>], src_2: &[F], dst_2: &mut [MaybeUninit<F>], )

Like apply_to_rows, but out-of-place.

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§