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§
type Evaluations: BitReversableMatrix<F> + 'static
Required Methods§
Sourcefn dft_batch(&self, mat: RowMajorMatrix<F>) -> Self::Evaluations
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§
Sourcefn coset_dft(&self, vec: Vec<F>, shift: F) -> Vec<F>
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.
Sourcefn coset_dft_batch(&self, mat: RowMajorMatrix<F>, shift: F) -> Self::Evaluations
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.
Sourcefn idft_batch(&self, mat: RowMajorMatrix<F>) -> RowMajorMatrix<F>
fn idft_batch(&self, mat: RowMajorMatrix<F>) -> RowMajorMatrix<F>
Compute the inverse DFT of each column in mat.
Sourcefn coset_idft(&self, vec: Vec<F>, shift: F) -> Vec<F>
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.
Sourcefn coset_idft_batch(
&self,
mat: RowMajorMatrix<F>,
shift: F,
) -> RowMajorMatrix<F>
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.
Sourcefn lde(&self, vec: Vec<F>, added_bits: usize) -> Vec<F>
fn lde(&self, vec: Vec<F>, added_bits: usize) -> Vec<F>
Compute the low-degree extension of vec onto a larger subgroup.
Sourcefn lde_batch(
&self,
mat: RowMajorMatrix<F>,
added_bits: usize,
) -> Self::Evaluations
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.
Sourcefn coset_lde(&self, vec: Vec<F>, added_bits: usize, shift: F) -> Vec<F>
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.
Sourcefn coset_lde_batch(
&self,
mat: RowMajorMatrix<F>,
added_bits: usize,
shift: F,
) -> Self::Evaluations
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.