pub trait BaseTransform: BaseSize {
    type Physical;
    type Spectral;
    fn forward_slice(
        &self,
        indata: &[Self::Physical],
        outdata: &mut [Self::Spectral]
    ); fn backward_slice(
        &self,
        indata: &[Self::Spectral],
        outdata: &mut [Self::Physical]
    ); fn forward<S, D>(
        &self,
        indata: &ArrayBase<S, D>,
        axis: usize
    ) -> Array<Self::Spectral, D>
    where
        S: Data<Elem = Self::Physical>,
        D: Dimension,
        Self::Physical: Clone,
        Self::Spectral: Zero + Clone + Copy
, { ... } fn forward_inplace<S1, S2, D>(
        &self,
        indata: &ArrayBase<S1, D>,
        outdata: &mut ArrayBase<S2, D>,
        axis: usize
    )
    where
        S1: Data<Elem = Self::Physical>,
        S2: Data<Elem = Self::Spectral> + DataMut,
        D: Dimension,
        Self::Physical: Clone,
        Self::Spectral: Clone + Zero + Copy
, { ... } fn backward<S, D>(
        &self,
        indata: &ArrayBase<S, D>,
        axis: usize
    ) -> Array<Self::Physical, D>
    where
        S: Data<Elem = Self::Spectral>,
        D: Dimension,
        Self::Spectral: Clone,
        Self::Physical: Zero + Clone + Copy
, { ... } fn backward_inplace<S1, S2, D>(
        &self,
        indata: &ArrayBase<S1, D>,
        outdata: &mut ArrayBase<S2, D>,
        axis: usize
    )
    where
        S1: Data<Elem = Self::Spectral>,
        S2: Data<Elem = Self::Physical> + DataMut,
        D: Dimension,
        Self::Spectral: Clone,
        Self::Physical: Clone + Zero + Copy
, { ... } fn forward_par<S, D>(
        &self,
        indata: &ArrayBase<S, D>,
        axis: usize
    ) -> Array<Self::Spectral, D>
    where
        S: Data<Elem = Self::Physical>,
        D: Dimension,
        Self::Physical: Clone + Send + Sync,
        Self::Spectral: Zero + Clone + Copy + Send + Sync,
        Self: Sync
, { ... } fn forward_inplace_par<S1, S2, D>(
        &self,
        indata: &ArrayBase<S1, D>,
        outdata: &mut ArrayBase<S2, D>,
        axis: usize
    )
    where
        S1: Data<Elem = Self::Physical>,
        S2: Data<Elem = Self::Spectral> + DataMut,
        D: Dimension,
        Self::Physical: Clone + Send + Sync,
        Self::Spectral: Clone + Zero + Copy + Send + Sync,
        Self: Sync
, { ... } fn backward_par<S, D>(
        &self,
        indata: &ArrayBase<S, D>,
        axis: usize
    ) -> Array<Self::Physical, D>
    where
        S: Data<Elem = Self::Spectral>,
        D: Dimension,
        Self::Spectral: Clone + Send + Sync,
        Self::Physical: Zero + Clone + Copy + Send + Sync,
        Self: Sync
, { ... } fn backward_inplace_par<S1, S2, D>(
        &self,
        indata: &ArrayBase<S1, D>,
        outdata: &mut ArrayBase<S2, D>,
        axis: usize
    )
    where
        S1: Data<Elem = Self::Spectral>,
        S2: Data<Elem = Self::Physical> + DataMut,
        D: Dimension,
        Self::Spectral: Clone + Send + Sync,
        Self::Physical: Clone + Zero + Copy + Send + Sync,
        Self: Sync
, { ... } }
Expand description

The associated types Physical and Spectral refer to the scalar types in the physical and spectral space. For example, Fourier transforms from real-to-complex, while Chebyshev transforms from real-to-real.

Associated Types

Required methods

Physical values -> Spectral coefficients

Transforms a one-dimensional slice.

Spectral coefficients -> Physical values

Transforms a one-dimensional slice.

Provided methods

Implementors