p3_dft

Trait TwoAdicSubgroupDft

Source
pub trait TwoAdicSubgroupDft<F: TwoAdicField>: Clone + Default {
    type Evaluations: BitReversableMatrix<F> + 'static;

    // Required method
    fn dft_batch(&self, mat: RowMajorMatrix<F>) -> Self::Evaluations;

    // Provided methods
    fn dft(&self, vec: Vec<F>) -> Vec<F> { ... }
    fn coset_dft(&self, vec: Vec<F>, shift: F) -> Vec<F> { ... }
    fn coset_dft_batch(
        &self,
        mat: RowMajorMatrix<F>,
        shift: F,
    ) -> Self::Evaluations { ... }
    fn idft(&self, vec: Vec<F>) -> Vec<F> { ... }
    fn idft_batch(&self, mat: RowMajorMatrix<F>) -> RowMajorMatrix<F> { ... }
    fn coset_idft(&self, vec: Vec<F>, shift: F) -> Vec<F> { ... }
    fn coset_idft_batch(
        &self,
        mat: RowMajorMatrix<F>,
        shift: F,
    ) -> RowMajorMatrix<F> { ... }
    fn lde(&self, vec: Vec<F>, added_bits: usize) -> Vec<F> { ... }
    fn lde_batch(
        &self,
        mat: RowMajorMatrix<F>,
        added_bits: usize,
    ) -> Self::Evaluations { ... }
    fn coset_lde(&self, vec: Vec<F>, added_bits: usize, shift: F) -> Vec<F> { ... }
    fn coset_lde_batch(
        &self,
        mat: RowMajorMatrix<F>,
        added_bits: usize,
        shift: F,
    ) -> Self::Evaluations { ... }
}

Required Associated Types§

Required Methods§

Source

fn dft_batch(&self, mat: RowMajorMatrix<F>) -> Self::Evaluations

Compute the discrete Fourier transform (DFT) of each column in mat. This is the only method an implementer needs to define, all other methods can be derived from this one.

Provided Methods§

Source

fn dft(&self, vec: Vec<F>) -> Vec<F>

Compute the discrete Fourier transform (DFT) vec.

Source

fn coset_dft(&self, vec: Vec<F>, shift: F) -> Vec<F>

Compute the “coset DFT” of vec. This can be viewed as interpolation onto a coset of a multiplicative subgroup, rather than the subgroup itself.

Source

fn coset_dft_batch(&self, mat: RowMajorMatrix<F>, shift: F) -> Self::Evaluations

Compute the “coset DFT” of each column in mat. This can be viewed as interpolation onto a coset of a multiplicative subgroup, rather than the subgroup itself.

Source

fn idft(&self, vec: Vec<F>) -> Vec<F>

Compute the inverse DFT of vec.

Source

fn idft_batch(&self, mat: RowMajorMatrix<F>) -> RowMajorMatrix<F>

Compute the inverse DFT of each column in mat.

Source

fn coset_idft(&self, vec: Vec<F>, shift: F) -> Vec<F>

Compute the “coset iDFT” of vec. This can be viewed as an inverse operation of “coset DFT”, that interpolates over a coset of a multiplicative subgroup, rather than subgroup itself.

Source

fn coset_idft_batch( &self, mat: RowMajorMatrix<F>, shift: F, ) -> RowMajorMatrix<F>

Compute the “coset iDFT” of each column in mat. This can be viewed as an inverse operation of “coset DFT”, that interpolates over a coset of a multiplicative subgroup, rather than the subgroup itself.

Source

fn lde(&self, vec: Vec<F>, added_bits: usize) -> Vec<F>

Compute the low-degree extension of vec onto a larger subgroup.

Source

fn lde_batch( &self, mat: RowMajorMatrix<F>, added_bits: usize, ) -> Self::Evaluations

Compute the low-degree extension of each column in mat onto a larger subgroup.

Source

fn coset_lde(&self, vec: Vec<F>, added_bits: usize, shift: F) -> Vec<F>

Compute the low-degree extension of each column in mat onto a coset of a larger subgroup.

Source

fn coset_lde_batch( &self, mat: RowMajorMatrix<F>, added_bits: usize, shift: F, ) -> Self::Evaluations

Compute the low-degree extension of each column in mat onto a coset of a larger subgroup.

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§