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§
const COMPLEX_PER_VECTOR: usize
Required Associated Types§
type ScalarType: SseNum<VectorType = Self>
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
Sourceunsafe fn make_mixedradix_twiddle_chunk(
x: usize,
y: usize,
len: usize,
direction: FftDirection,
) -> Self
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
Sourceunsafe fn mul_complex(left: Self, right: Self) -> Self
unsafe fn mul_complex(left: Self, right: Self) -> Self
Pairwise multiply the complex numbers in left with the complex numbers in right.
Sourceunsafe fn make_rotate90(direction: FftDirection) -> Rotation90<Self>
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
Sourceunsafe fn apply_rotate90(direction: Rotation90<Self>, values: Self) -> Self
unsafe fn apply_rotate90(direction: Rotation90<Self>, values: Self) -> Self
Uses a pre-constructed rotate90 object to apply the given rotation
Sourceunsafe fn column_butterfly2(rows: [Self; 2]) -> [Self; 2]
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
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".