Om  1.0.0
A universal framework for multimedia simulation
Public Member Functions | List of all members
om::math::FFT Class Reference

A class that implements a fast fourier transform for a specific power-of-two FFT size. More...

#include <omFFT.h>

Public Member Functions

 FFT (Size fftSize)
 Create a new FFT with the specified power-of-two size. More...
 
 FFT (const FFT &other)
 Create a copy of another FFT. More...
 
 ~FFT ()
 Destroy this FFT and release internal data. More...
 
FFToperator= (const FFT &other)
 Assign the state of another FFT object to this one. More...
 
Size getSize () const
 Return the buffer size of this FFT. More...
 
void fft (Complex< Float32 > *inOut, Complex< Float32 > *workspace=((void *) 0)) const
 Convert N complex values to N complex values using the forward transform. More...
 
void ifft (Complex< Float32 > *inOut, Complex< Float32 > *workspace=((void *) 0)) const
 Convert N complex values to N complex values using the reverse transform. More...
 
void fft (Float32 *inOut, Float32 *workspace=((void *) 0)) const
 Convert N real float values to N/2+1 complex values in place. More...
 
void fft (const Float32 *input, Complex< Float32 > *output, Float32 *workspace=((void *) 0)) const
 Convert N real float values to N/2+1 complex values. More...
 
void ifft (Float32 *inOut, Float32 *workspace=((void *) 0)) const
 Convert N/2+1 complex values to N real float values in place. More...
 
void ifft (const Complex< Float32 > *input, Float32 *output, Float32 *workspace=((void *) 0)) const
 Convert N/2+1 complex values to N real float values. More...
 
void fftUnordered (Float32 *inOut, Float32 *workspace=((void *) 0)) const
 Convert N real float values to N/2+1 complex values in place. More...
 
void ifftUnordered (Float32 *inOut, Float32 *workspace=((void *) 0)) const
 Convert N/2+1 complex values to N real float values in place. More...
 
void multiplyAddUnordered (Complex< Float32 > *destination, const Complex< Float32 > *a, const Complex< Float32 > *b) const
 Multiply add of N/2+1 unordered complex frequency-domain values. More...
 

Detailed Description

A class that implements a fast fourier transform for a specific power-of-two FFT size.

Constructor & Destructor Documentation

om::math::FFT::FFT ( Size  fftSize)

Create a new FFT with the specified power-of-two size.

If the provided size is not a power of two, it is rounded up to the next largest power of two.

om::math::FFT::FFT ( const FFT other)

Create a copy of another FFT.

om::math::FFT::~FFT ( )

Destroy this FFT and release internal data.

Member Function Documentation

FFT& om::math::FFT::operator= ( const FFT other)

Assign the state of another FFT object to this one.

Size om::math::FFT::getSize ( ) const
inline

Return the buffer size of this FFT.

This value is usually restricted to a power of two.

void om::math::FFT::fft ( Complex< Float32 > *  inOut,
Complex< Float32 > *  workspace = ((void *) 0) 
) const

Convert N complex values to N complex values using the forward transform.

void om::math::FFT::ifft ( Complex< Float32 > *  inOut,
Complex< Float32 > *  workspace = ((void *) 0) 
) const

Convert N complex values to N complex values using the reverse transform.

void om::math::FFT::fft ( Float32 inOut,
Float32 workspace = ((void *) 0) 
) const

Convert N real float values to N/2+1 complex values in place.

void om::math::FFT::fft ( const Float32 input,
Complex< Float32 > *  output,
Float32 workspace = ((void *) 0) 
) const

Convert N real float values to N/2+1 complex values.

void om::math::FFT::ifft ( Float32 inOut,
Float32 workspace = ((void *) 0) 
) const

Convert N/2+1 complex values to N real float values in place.

void om::math::FFT::ifft ( const Complex< Float32 > *  input,
Float32 output,
Float32 workspace = ((void *) 0) 
) const

Convert N/2+1 complex values to N real float values.

void om::math::FFT::fftUnordered ( Float32 inOut,
Float32 workspace = ((void *) 0) 
) const

Convert N real float values to N/2+1 complex values in place.

The output sequence of complex values does not have the standard ordering from low to high frequency. Instead, it has the order prior to the bit reversal permutation. This is somewhat faster than the standard ordered version.

void om::math::FFT::ifftUnordered ( Float32 inOut,
Float32 workspace = ((void *) 0) 
) const

Convert N/2+1 complex values to N real float values in place.

The input sequence of complex values does not have the standard ordering from low to high frequency. Instead, it has the order prior to the bit reversal permutation. This is somewhat faster than the standard ordered version.

void om::math::FFT::multiplyAddUnordered ( Complex< Float32 > *  destination,
const Complex< Float32 > *  a,
const Complex< Float32 > *  b 
) const

Multiply add of N/2+1 unordered complex frequency-domain values.

This function multiplys two array of complex values and adds the result to the destination array. The complex values are assumed to have the same ordering as the values returned by the fftUnordered method.


The documentation for this class was generated from the following file: