Public Member Functions | List of all members
IppFFT Class Reference

A wrapper around the Intel IPP FFT routines. More...

Public Member Functions

void complexFFT (const float *in, float *out, int size) const
 Complex inplace FFT (input is aligned Complex<float> array, size is power of two.)
 
void complexFFTInplace (float *data, int size) const
 Complex inplace FFT (input is aligned Complex<float> array, size is power of two.)
 
void complexFFTInplace (double *data, int size) const
 Complex inplace FFT (input is aligned Complex<double> array, size is power of two.)
 
void complexFFTInverse (const float *in, float *out, int size) const
 Complex inverse inplace FFT (input is aligned float array, size is power of two.)
 
void complexFFTInverseInplace (float *data, int size) const
 Complex inverse inplace FFT (input is aligned float array, size is power of two.)
 
void complexFFTInverseInplace (double *data, int size) const
 Complex inverse inplace FFT (input is aligned Complex<double> array, size is power of two.)
 
 IppFFT (DataType typeToUse=DataType::ComplexFloat, int maxPowerOfTwo=IPP_FFT_MAX_POWER_OF_TWO, const int flagToUse=8)
 Creates a IPP FFT object. More...
 
void realFFT (const float *in, float *out, int size) const
 Real inplace FFT (input is aligned float array, size is power of two.) More...
 
void realFFTInplace (float *data, int size) const
 Real inplace FFT (input is aligned float array, size is power of two.) More...
 
void realFFTInplace (double *data, int size) const
 Real inplace FFT (input is aligned double array, size is power of two.) More...
 
void realFFTInverse (const float *in, float *out, int size) const
 Real inplace FFT (input is aligned float array, size is power of two.)
 
void realFFTInverseInplace (float *data, int size) const
 Real inplace FFT (input is aligned float array, size is power of two.)
 
void realFFTInverseInplace (double *data, int size) const
 Real inplace inverse FFT (input is aligned double array, size is power of two.)
 

Detailed Description

A wrapper around the Intel IPP FFT routines.

It uses RAII to manage all required buffers & datas. In order to use it, create an instance once and then call the routines:

IppFFT fft(IppFFT:DataType::ComplexFloat);

fft.realFFT(data, 512);

It is not templated for speed, but it throws assertions if you call it on the wrong type.

Constructor & Destructor Documentation

IppFFT ( DataType  typeToUse = DataType::ComplexFloat,
int  maxPowerOfTwo = IPP_FFT_MAX_POWER_OF_TWO,
const int  flagToUse = 8 
)

Creates a IPP FFT object.

The initialisation time is rather slow, but then it will unleash its power because it allocates all necessary buffers once.

Member Function Documentation

void realFFT ( const float *  in,
float *  out,
int  size 
) const

Real inplace FFT (input is aligned float array, size is power of two.)

Input: d[] = re[0],re[1],..,re[size-1]. Output: d[] = re[0],re[size/2],re[1],im[1],..,re[size/2-1],im[size/2-1].

void realFFTInplace ( float *  data,
int  size 
) const

Real inplace FFT (input is aligned float array, size is power of two.)

Input: d[] = re[0],re[1],..,re[size-1]. Output: d[] = re[0],re[size/2],re[1],im[1],..,re[size/2-1],im[size/2-1].

void realFFTInplace ( double *  data,
int  size 
) const

Real inplace FFT (input is aligned double array, size is power of two.)

Input: data[] = re[0],re[1],..,re[size-1]. Output: data[] = re[0],re[size/2],re[1],im[1],..,re[size/2-1],im[size/2-1].

©2017 HISE. This documentation is autogenerated from the HISE source code using Doxygen.