67 std::complex<double>&
operator()(
const int& ix);
68 std::complex<double>&
operator()(
const int& ix,
const int& iy);
69 const std::complex<double>&
operator()(
const int& ix)
const;
70 const std::complex<double>&
operator()(
const int& ix,
const int& iy)
const;
86 const std::vector<int>&
shape(
void)
const;
87 const std::vector<int>&
strides(
void)
const;
102 void transform(std::complex<double>* data,
107 void factor2(
const std::complex<double>* in,
109 std::complex<double>* out,
116 void factor3(
const std::complex<double>* in,
118 std::complex<double>* out,
125 void factor4(
const std::complex<double>* in,
127 std::complex<double>* out,
134 void factor5(
const std::complex<double>* in,
136 std::complex<double>* out,
143 void factor6(
const std::complex<double>* in,
145 std::complex<double>* out,
152 void factor7(
const std::complex<double>* in,
154 std::complex<double>* out,
161 void factorn(std::complex<double>* in,
163 std::complex<double>* out,
176 const int&
sign)
const;
177 std::complex<double>
timesi(
const std::complex<double>& value)
const;
397std::complex<double>
GFft::timesi(
const std::complex<double>& value)
const
399 std::complex<double> result(-value.imag(), value.real());
Definition of interface for all GammaLib classes.
Lookup table class interface definition for Fast Fourier transformation.
GFft operator/(const GFft &a, const GFft &b)
Return quotient of two Fast Fourier Transformations.
GFft operator+(const GFft &a, const GFft &b)
Return sum of two Fast Fourier Transformations.
GFft operator-(const GFft &a, const GFft &b)
Return difference of two Fast Fourier Transformations.
GFft operator*(const GFft &a, const GFft &b)
Return product of two Fast Fourier Transformations.
GNdarray sign(const GNdarray &array)
Computes sign of array elements.
Interface class for all GammaLib classes.
Lookup table class for Fast Fourier Transformation.
Fast Fourier Transformation class.
GFft operator-(void) const
Unary minus operator.
GFft & operator*=(const GFft &fft)
Unary multiplication operator.
void forward(const GNdarray &array)
Forward Fast Fourier Transform.
int m_size
Size of data array.
void factorn(std::complex< double > *in, const int &istride, std::complex< double > *out, const int &ostride, const GFftWavetable &wavetable, const int &sign, const int &factor, const int &product, const int &n, const int &index)
Compute FFT for arbitrary factor.
const std::vector< int > & strides(void) const
Return strides of array.
void copy_members(const GFft &fft)
Copy class members.
std::vector< int > m_shape
Array dimensions.
GNdarray backward(void) const
Backward Fast Fourier Transform.
std::complex< double > timesi(const std::complex< double > &value) const
Return complex value times i.
void factor7(const std::complex< double > *in, const int &istride, std::complex< double > *out, const int &ostride, const GFftWavetable &wavetable, const int &sign, const int &product, const int &n, const int &index)
Compute FFT for factor 7.
void require_same_shape(const std::string &method, const GFft &fft) const
Throw exception if FFT shapes differ.
void set_data(const GNdarray &array)
Set data from n-dimensional array.
virtual ~GFft(void)
Destructor.
GFft(void)
Void constructor.
void factor3(const std::complex< double > *in, const int &istride, std::complex< double > *out, const int &ostride, const GFftWavetable &wavetable, const int &sign, const int &product, const int &n, const int &index)
Compute FFT for factor 3.
std::vector< std::complex< double > > get_w(const GFftWavetable &wavetable, const int &index, const int &k, const int &q, const int &n, const int &sign) const
Extract coefficients from wavetable.
std::vector< GFftWavetable > m_wavetable
Trigonometric coefficients.
GFft & operator+=(const GFft &fft)
Unary addition operator.
void factor2(const std::complex< double > *in, const int &istride, std::complex< double > *out, const int &ostride, const GFftWavetable &wavetable, const int &sign, const int &product, const int &n, const int &index)
Compute FFT for factor 2.
std::string print(const GChatter &chatter=NORMAL) const
Print Fast Fourier Transform information.
std::string classname(void) const
Return class name.
GFft & operator-=(const GFft &fft)
Unary subtraction operator.
const std::vector< int > & shape(void) const
Return shape of array.
int dim(void) const
Return dimension of Fast Fourier Transformation.
void transform(std::complex< double > *data, const int &stride, const int &n, const GFftWavetable &wavetable, const bool &forward=true)
Perform Fast Fourier Transform.
std::vector< int > m_strides
Steps in each dimension.
void factor6(const std::complex< double > *in, const int &istride, std::complex< double > *out, const int &ostride, const GFftWavetable &wavetable, const int &sign, const int &product, const int &n, const int &index)
Compute FFT for factor 6.
std::complex< double > * m_data
Pointer on array data.
void clear(void)
Clear Fast Fourier Transform.
int size(void) const
Return number of elements in array.
void free_members(void)
Delete class members.
bool has_same_shape(const GFft &fft) const
Check if FFT has the same shape.
GFft & operator/=(const GFft &fft)
Unary division operator.
void factor5(const std::complex< double > *in, const int &istride, std::complex< double > *out, const int &ostride, const GFftWavetable &wavetable, const int &sign, const int &product, const int &n, const int &index)
Compute FFT for factor 5.
GFft & operator=(const GFft &fft)
Assignment operator.
void factor4(const std::complex< double > *in, const int &istride, std::complex< double > *out, const int &ostride, const GFftWavetable &wavetable, const int &sign, const int &product, const int &n, const int &index)
Compute FFT for factor 4.
void init_members(void)
Initialise class members.
GFft * clone(void) const
Clone Fast Fourier Transform.
std::complex< double > & operator()(const int &ix)
1-dimensional FFT element access operator
N-dimensional array class.