Highly Efficient FFT for Exascale: HeFFTe v2.3
|
Custom complex type taking advantage of vectorization A Complex Type intrinsic to HeFFTe that takes advantage of vectorization. It is currently compatible with AVX2 to create 1 double-precision complex, 2 double-precision complex, 2 single-precision complex, or 4 single-precision complex numbers. More...
#include <heffte_stock_complex.h>
Public Member Functions | |
Complex (F *const f) | |
Load from an array of primitives. | |
Complex (std::initializer_list< F > il) | |
Load from an initializer list of primitives. | |
Complex (typename pack< F, L >::type v) | |
Load from an existing vector pack. | |
Complex (F x, F y) | |
Load from real and imaginary parts (repeating for all numbers in pack) | |
Complex (std::complex< F > const *c) | |
Load from pointer to existing std::complex numbers. | |
Complex (std::complex< F > const *c, int stride) | |
Load from strided pointer to existing std::complex numbers. | |
Complex (std::initializer_list< std::complex< F >> il) | |
Load from initializer list of existing std::complex numbers. | |
Complex () | |
Default constructor of zeros. | |
Complex< F, L > | operator+ (Complex< F, L > const &o) |
Add with another pack of complex number. | |
Complex< F, L > | operator- (Complex< F, L > const &o) |
Subtract another pack of complex number. | |
Complex< F, L > | operator* (Complex< F, L > const &o) |
Multiply by another pack of complex number. | |
Complex< F, L > | operator/ (Complex< F, L > const &o) |
Divide by another pack of complex number. | |
Complex< F, L > | operator+= (Complex< F, L > const &o) |
Add with and assign another complex number. | |
Complex< F, L > | operator-= (Complex< F, L > const &o) |
Subtract and assign another complex number from this. | |
Complex< F, L > | operator*= (Complex< F, L > const &o) |
Multiply by and assign another complex number. | |
Complex< F, L > | operator/= (Complex< F, L > const &o) |
Divide by and assign another complex number. | |
Complex< F, L > | operator+ (F o) |
Add with a floating point number. | |
Complex< F, L > | operator- (F o) |
Subtract a floating point number. | |
Complex< F, L > | operator* (F o) |
Multiply by a floating point number. | |
Complex< F, L > | operator/ (F o) |
Divide by a floating point number. | |
Complex< F, L > | operator+= (F o) |
Add with and assign a floating point number. | |
Complex< F, L > | operator-= (F o) |
Subtract and assign a floating point number. | |
Complex< F, L > | operator*= (F o) |
Multiply by and assign a floating point number. | |
Complex< F, L > | operator/= (F o) |
Complex< F, L > | fmadd (Complex< F, L > const &y, Complex< F, L > const &z) |
Fused multiply add. | |
Complex< F, L > | fmsub (Complex< F, L > const &y, Complex< F, L > const &z) |
Fused multiply add. | |
Complex< F, L > | operator- () |
Negate the complex number. | |
void | modulus (F *dest) |
Store the modulus of the complex number in an array of size L/2. | |
pack< F, L >::type | modulus () |
Return the modulus of the complex number in a vector pack. | |
Complex< F, L > | conjugate () |
Conjugate the current complex number. | |
Complex< F, L > | __mul_i () |
Multiply the complex number by i. | |
Complex< F, L > | __mul_neg_i () |
Multiply the complex number by i. | |
void | get (F *dest) |
Store the Complex number in an array of length L. | |
std::complex< F > | operator[] (std::size_t idx) |
Access the ith Complex number as a std::complex. | |
pack< F, L >::type | get () const |
Return a vector pack representation of this number. | |
Custom complex type taking advantage of vectorization A Complex Type intrinsic to HeFFTe that takes advantage of vectorization. It is currently compatible with AVX2 to create 1 double-precision complex, 2 double-precision complex, 2 single-precision complex, or 4 single-precision complex numbers.