Radix2DitParallel

Struct Radix2DitParallel 

Source
pub struct Radix2DitParallel<F> { /* private fields */ }
Expand description

A parallel FFT algorithm which divides a butterfly network’s layers into two halves.

For the first half, we apply a butterfly network with smaller blocks in earlier layers, i.e. either DIT or Bowers G. Then we bit-reverse, and for the second half, we continue executing the same network but in bit-reversed order. This way we’re always working with small blocks, so within each half, we can have a certain amount of parallelism with no cross-thread communication.

Trait Implementations§

Source§

impl<F: Clone> Clone for Radix2DitParallel<F>

Source§

fn clone(&self) -> Radix2DitParallel<F>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<F: Debug> Debug for Radix2DitParallel<F>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<F: Default> Default for Radix2DitParallel<F>

Source§

fn default() -> Radix2DitParallel<F>

Returns the “default value” for a type. Read more
Source§

impl<F: TwoAdicField + Ord> TwoAdicSubgroupDft<F> for Radix2DitParallel<F>

Source§

type Evaluations = RowIndexMappedView<BitReversalPerm, DenseMatrix<F>>

The matrix type used to store the result of a batched DFT operation. Read more
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. Read more
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. Read more
Source§

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

Compute the discrete Fourier transform (DFT) of vec. Read more
Source§

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

Compute the “coset DFT” of vec. Read more
Source§

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

Compute the “coset DFT” of each column in mat. Read more
Source§

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

Compute the inverse DFT of vec. Read more
Source§

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

Compute the inverse DFT of each column in mat. Read more
Source§

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

Compute the “coset iDFT” of vec. This is the inverse operation of “coset DFT”. Read more
Source§

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

Compute the “coset iDFT” of each column in mat. This is the inverse operation of “coset DFT”. Read more
Source§

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

Compute the low-degree extension of vec onto a larger subgroup. Read more
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. Read more
Source§

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

Compute the low-degree extension of of vec onto a coset of a larger subgroup. Read more
Source§

fn dft_algebra<V: BasedVectorSpace<F> + Clone + Send + Sync>( &self, vec: Vec<V>, ) -> Vec<V>

Compute the discrete Fourier transform (DFT) of vec. Read more
Source§

fn dft_algebra_batch<V: BasedVectorSpace<F> + Clone + Send + Sync>( &self, mat: RowMajorMatrix<V>, ) -> RowMajorMatrix<V>

Compute the discrete Fourier transform (DFT) of each column in mat. Read more
Source§

fn coset_dft_algebra<V: BasedVectorSpace<F> + Clone + Send + Sync>( &self, vec: Vec<V>, shift: F, ) -> Vec<V>

Compute the “coset DFT” of vec. Read more
Source§

fn coset_dft_algebra_batch<V: BasedVectorSpace<F> + Clone + Send + Sync>( &self, mat: RowMajorMatrix<V>, shift: F, ) -> RowMajorMatrix<V>

Compute the “coset DFT” of each column in mat. Read more
Source§

fn idft_algebra<V: BasedVectorSpace<F> + Clone + Send + Sync>( &self, vec: Vec<V>, ) -> Vec<V>

Compute the inverse DFT of vec. Read more
Source§

fn idft_algebra_batch<V: BasedVectorSpace<F> + Clone + Send + Sync>( &self, mat: RowMajorMatrix<V>, ) -> RowMajorMatrix<V>

Compute the inverse DFT of each column in mat. Read more
Source§

fn coset_idft_algebra<V: BasedVectorSpace<F> + Clone + Send + Sync>( &self, vec: Vec<V>, shift: F, ) -> Vec<V>

Compute the “coset iDFT” of vec. This is the inverse operation of “coset DFT”. Read more
Source§

fn coset_idft_algebra_batch<V: BasedVectorSpace<F> + Clone + Send + Sync>( &self, mat: RowMajorMatrix<V>, shift: F, ) -> RowMajorMatrix<V>

Compute the “coset iDFT” of each column in mat. This is the inverse operation of “coset DFT”. Read more
Source§

fn lde_algebra<V: BasedVectorSpace<F> + Clone + Send + Sync>( &self, vec: Vec<V>, added_bits: usize, ) -> Vec<V>

Compute the low-degree extension of vec onto a larger subgroup. Read more
Source§

fn lde_algebra_batch<V: BasedVectorSpace<F> + Clone + Send + Sync>( &self, mat: RowMajorMatrix<V>, added_bits: usize, ) -> RowMajorMatrix<V>

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

fn coset_lde_algebra<V: BasedVectorSpace<F> + Clone + Send + Sync>( &self, vec: Vec<V>, added_bits: usize, shift: F, ) -> Vec<V>

Compute the low-degree extension of of vec onto a coset of a larger subgroup. Read more
Source§

fn coset_lde_algebra_batch<V: BasedVectorSpace<F> + Clone + Send + Sync>( &self, mat: RowMajorMatrix<V>, added_bits: usize, shift: F, ) -> RowMajorMatrix<V>

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

Auto Trait Implementations§

§

impl<F> Freeze for Radix2DitParallel<F>

§

impl<F> !RefUnwindSafe for Radix2DitParallel<F>

§

impl<F> Send for Radix2DitParallel<F>
where F: Send + Sync,

§

impl<F> Sync for Radix2DitParallel<F>
where F: Send + Sync,

§

impl<F> Unpin for Radix2DitParallel<F>

§

impl<F> !UnwindSafe for Radix2DitParallel<F>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more