Skip to main content

SseVector

Trait SseVector 

Source
pub trait SseVector:
    Copy
    + Debug
    + Send
    + Sync {
    type ScalarType: SseNum<VectorType = Self>;

    const COMPLEX_PER_VECTOR: usize;
Show 18 methods // Required methods unsafe fn load_complex(ptr: *const Complex<Self::ScalarType>) -> Self; unsafe fn load_partial_lo_complex( ptr: *const Complex<Self::ScalarType>, ) -> Self; unsafe fn load1_complex(ptr: *const Complex<Self::ScalarType>) -> Self; unsafe fn store_complex(ptr: *mut Complex<Self::ScalarType>, data: Self); unsafe fn store_partial_lo_complex( ptr: *mut Complex<Self::ScalarType>, data: Self, ); unsafe fn store_partial_hi_complex( ptr: *mut Complex<Self::ScalarType>, data: Self, ); unsafe fn neg(a: Self) -> Self; unsafe fn add(a: Self, b: Self) -> Self; unsafe fn mul(a: Self, b: Self) -> Self; unsafe fn fmadd(acc: Self, a: Self, b: Self) -> Self; unsafe fn nmadd(acc: Self, a: Self, b: Self) -> Self; unsafe fn broadcast_scalar(value: Self::ScalarType) -> Self; unsafe fn make_mixedradix_twiddle_chunk( x: usize, y: usize, len: usize, direction: FftDirection, ) -> Self; unsafe fn mul_complex(left: Self, right: Self) -> Self; unsafe fn make_rotate90(direction: FftDirection) -> Rotation90<Self>; unsafe fn apply_rotate90(direction: Rotation90<Self>, values: Self) -> Self; unsafe fn column_butterfly2(rows: [Self; 2]) -> [Self; 2]; unsafe fn column_butterfly4( rows: [Self; 4], rotation: Rotation90<Self>, ) -> [Self; 4];
}

Required Associated Constants§

Required Associated Types§

Source

type ScalarType: SseNum<VectorType = Self>

Required Methods§

Source

unsafe fn load_complex(ptr: *const Complex<Self::ScalarType>) -> Self

Source

unsafe fn load_partial_lo_complex(ptr: *const Complex<Self::ScalarType>) -> Self

Source

unsafe fn load1_complex(ptr: *const Complex<Self::ScalarType>) -> Self

Source

unsafe fn store_complex(ptr: *mut Complex<Self::ScalarType>, data: Self)

Source

unsafe fn store_partial_lo_complex( ptr: *mut Complex<Self::ScalarType>, data: Self, )

Source

unsafe fn store_partial_hi_complex( ptr: *mut Complex<Self::ScalarType>, data: Self, )

Source

unsafe fn neg(a: Self) -> Self

Source

unsafe fn add(a: Self, b: Self) -> Self

Source

unsafe fn mul(a: Self, b: Self) -> Self

Source

unsafe fn fmadd(acc: Self, a: Self, b: Self) -> Self

Source

unsafe fn nmadd(acc: Self, a: Self, b: Self) -> Self

Source

unsafe fn broadcast_scalar(value: Self::ScalarType) -> Self

Source

unsafe fn make_mixedradix_twiddle_chunk( x: usize, y: usize, len: usize, direction: FftDirection, ) -> Self

Generates a chunk of twiddle factors starting at (X,Y) and incrementing X COMPLEX_PER_VECTOR times. The result will be [twiddle(x*y, len), twiddle((x+1)*y, len), twiddle((x+2)*y, len), …] for as many complex numbers fit in a vector

Source

unsafe fn mul_complex(left: Self, right: Self) -> Self

Pairwise multiply the complex numbers in left with the complex numbers in right.

Source

unsafe fn make_rotate90(direction: FftDirection) -> Rotation90<Self>

Constructs a Rotate90 object that will apply eithr a 90 or 270 degree rotationto the complex elements

Source

unsafe fn apply_rotate90(direction: Rotation90<Self>, values: Self) -> Self

Uses a pre-constructed rotate90 object to apply the given rotation

Source

unsafe fn column_butterfly2(rows: [Self; 2]) -> [Self; 2]

Each of these Interprets the input as rows of a Self::COMPLEX_PER_VECTOR-by-N 2D array, and computes parallel butterflies down the columns of the 2D array

Source

unsafe fn column_butterfly4( rows: [Self; 4], rotation: Rotation90<Self>, ) -> [Self; 4]

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl SseVector for __m128

Source§

const COMPLEX_PER_VECTOR: usize = 2

Source§

type ScalarType = f32

Source§

unsafe fn load_complex(ptr: *const Complex<Self::ScalarType>) -> Self

Source§

unsafe fn load_partial_lo_complex(ptr: *const Complex<Self::ScalarType>) -> Self

Source§

unsafe fn load1_complex(ptr: *const Complex<Self::ScalarType>) -> Self

Source§

unsafe fn store_complex(ptr: *mut Complex<Self::ScalarType>, data: Self)

Source§

unsafe fn store_partial_lo_complex( ptr: *mut Complex<Self::ScalarType>, data: Self, )

Source§

unsafe fn store_partial_hi_complex( ptr: *mut Complex<Self::ScalarType>, data: Self, )

Source§

unsafe fn neg(a: Self) -> Self

Source§

unsafe fn add(a: Self, b: Self) -> Self

Source§

unsafe fn mul(a: Self, b: Self) -> Self

Source§

unsafe fn fmadd(acc: Self, a: Self, b: Self) -> Self

Source§

unsafe fn nmadd(acc: Self, a: Self, b: Self) -> Self

Source§

unsafe fn broadcast_scalar(value: Self::ScalarType) -> Self

Source§

unsafe fn make_mixedradix_twiddle_chunk( x: usize, y: usize, len: usize, direction: FftDirection, ) -> Self

Source§

unsafe fn mul_complex(left: Self, right: Self) -> Self

Source§

unsafe fn make_rotate90(direction: FftDirection) -> Rotation90<Self>

Source§

unsafe fn apply_rotate90(direction: Rotation90<Self>, values: Self) -> Self

Source§

unsafe fn column_butterfly2(rows: [Self; 2]) -> [Self; 2]

Source§

unsafe fn column_butterfly4( rows: [Self; 4], rotation: Rotation90<Self>, ) -> [Self; 4]

Source§

impl SseVector for __m128d

Source§

const COMPLEX_PER_VECTOR: usize = 1

Source§

type ScalarType = f64

Source§

unsafe fn load_complex(ptr: *const Complex<Self::ScalarType>) -> Self

Source§

unsafe fn load_partial_lo_complex( _ptr: *const Complex<Self::ScalarType>, ) -> Self

Source§

unsafe fn load1_complex(_ptr: *const Complex<Self::ScalarType>) -> Self

Source§

unsafe fn store_complex(ptr: *mut Complex<Self::ScalarType>, data: Self)

Source§

unsafe fn store_partial_lo_complex( _ptr: *mut Complex<Self::ScalarType>, _data: Self, )

Source§

unsafe fn store_partial_hi_complex( _ptr: *mut Complex<Self::ScalarType>, _data: Self, )

Source§

unsafe fn neg(a: Self) -> Self

Source§

unsafe fn add(a: Self, b: Self) -> Self

Source§

unsafe fn mul(a: Self, b: Self) -> Self

Source§

unsafe fn fmadd(acc: Self, a: Self, b: Self) -> Self

Source§

unsafe fn nmadd(acc: Self, a: Self, b: Self) -> Self

Source§

unsafe fn broadcast_scalar(value: Self::ScalarType) -> Self

Source§

unsafe fn make_mixedradix_twiddle_chunk( x: usize, y: usize, len: usize, direction: FftDirection, ) -> Self

Source§

unsafe fn mul_complex(left: Self, right: Self) -> Self

Source§

unsafe fn make_rotate90(direction: FftDirection) -> Rotation90<Self>

Source§

unsafe fn apply_rotate90(direction: Rotation90<Self>, values: Self) -> Self

Source§

unsafe fn column_butterfly2(rows: [Self; 2]) -> [Self; 2]

Source§

unsafe fn column_butterfly4( rows: [Self; 4], rotation: Rotation90<Self>, ) -> [Self; 4]

Implementors§