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.