Public Member Functions
FFTW Class Reference

Brief description of class still missing. More...

#include <FFTW.h>

Inheritance diagram for FFTW:
GeopsyCore::FastFourierTransform GeopsyCore::FastFourierTransform GeopsyCore::FastFourierTransform GeopsyCore::FastFourierTransform GeopsyCore::FastFourierTransform

List of all members.

Public Member Functions

virtual void backward (int nSamples, double *samples)
virtual void backward (int nSamples, double *samples)
virtual void backward (int nSamples, double *samples)
virtual void backward (int nSamples, double *samples)
virtual void backward (int nSamples, double *samples)
virtual void backward (int nSamples, Complex *samples)
virtual void backward (int nSamples, Complex *samples)
virtual void backward (int nSamples, Complex *samples)
virtual void backward (int nSamples, Complex *samples)
virtual void backward (int nSamples, Complex *samples)
virtual void forward (int nSamples, double *samples)
virtual void forward (int nSamples, double *samples)
virtual void forward (int nSamples, double *samples)
virtual void forward (int nSamples, double *samples)
virtual void forward (int nSamples, double *samples)
virtual void forward (int nSamples, Complex *samples)
virtual void forward (int nSamples, Complex *samples)
virtual void forward (int nSamples, Complex *samples)
virtual void forward (int nSamples, Complex *samples)
virtual void forward (int nSamples, Complex *samples)
bool loadWisdom (QString fileName)
bool loadWisdom (QString fileName)
bool loadWisdom (QString fileName)
bool loadWisdom (QString fileName)
bool loadWisdom (QString fileName)
virtual void manyBackward (int howmany, int nSamples, Complex *samples)
virtual void manyBackward (int howmany, int nSamples, Complex *samples)
virtual void manyBackward (int howmany, int nSamples, Complex *samples)
virtual void manyBackward (int howmany, int nSamples, Complex *samples)
virtual void manyBackward (int howmany, int nSamples, Complex *samples)
virtual void manyForward (int howmany, int nSamples, Complex *samples)
virtual void manyForward (int howmany, int nSamples, Complex *samples)
virtual void manyForward (int howmany, int nSamples, Complex *samples)
virtual void manyForward (int howmany, int nSamples, Complex *samples)
virtual void manyForward (int howmany, int nSamples, Complex *samples)

Detailed Description

Brief description of class still missing.

From fftw documentation:

The upshot is that the only thread-safe (re-entrant) routine in FFTW is fftw_execute (and the guru variants thereof). All other routines (e.g. the planner) should only be called from one thread at a time. So, for example, you can wrap a semaphore lock around any calls to the planner; even more simply, you can just create all of your plans from one thread. See http://www.fftw.org/fftw3_doc/Thread-safety.html#Thread-safety for details.


Member Function Documentation

void FFTW::backward ( int  nSamples,
double *  samples 
) [virtual]

Implements GeopsyCore::FastFourierTransform.

{
  _plannerMutex.lock();
  fftw_plan plan=fftw_plan_r2r_1d(nSamples, samples, samples, FFTW_HC2R, FFTW_ESTIMATE);
  _plannerMutex.unlock();
  fftw_execute_r2r(plan, samples, samples);
  _plannerMutex.lock();
  fftw_destroy_plan(plan);
  _plannerMutex.unlock();
}
virtual void FFTW::backward ( int  nSamples,
double *  samples 
) [virtual]
virtual void FFTW::backward ( int  nSamples,
double *  samples 
) [virtual]
virtual void FFTW::backward ( int  nSamples,
double *  samples 
) [virtual]
virtual void FFTW::backward ( int  nSamples,
double *  samples 
) [virtual]
void FFTW::backward ( int  nSamples,
Complex samples 
) [virtual]

Implements GeopsyCore::FastFourierTransform.

{
  _plannerMutex.lock();
  fftw_plan plan=fftw_plan_dft_1d(nSamples, (fftw_complex*)samples, (fftw_complex*)samples, FFTW_BACKWARD, FFTW_ESTIMATE);
  _plannerMutex.unlock();
  fftw_execute_dft(plan, (fftw_complex *)samples, (fftw_complex *)samples);
  _plannerMutex.lock();
  fftw_destroy_plan(plan);
  _plannerMutex.unlock();
}
virtual void FFTW::backward ( int  nSamples,
Complex samples 
) [virtual]
virtual void FFTW::backward ( int  nSamples,
Complex samples 
) [virtual]
virtual void FFTW::backward ( int  nSamples,
Complex samples 
) [virtual]
virtual void FFTW::backward ( int  nSamples,
Complex samples 
) [virtual]
virtual void FFTW::forward ( int  nSamples,
double *  samples 
) [virtual]
void FFTW::forward ( int  nSamples,
double *  samples 
) [virtual]

Implements GeopsyCore::FastFourierTransform.

{
  _plannerMutex.lock();
  fftw_plan plan=fftw_plan_r2r_1d(nSamples, samples, samples, FFTW_R2HC, FFTW_ESTIMATE);
  _plannerMutex.unlock();
  fftw_execute_r2r(plan, samples, samples);
  _plannerMutex.lock();
  fftw_destroy_plan(plan);
  _plannerMutex.unlock();
}
virtual void FFTW::forward ( int  nSamples,
double *  samples 
) [virtual]
virtual void FFTW::forward ( int  nSamples,
double *  samples 
) [virtual]
virtual void FFTW::forward ( int  nSamples,
double *  samples 
) [virtual]
virtual void FFTW::forward ( int  nSamples,
Complex samples 
) [virtual]
virtual void FFTW::forward ( int  nSamples,
Complex samples 
) [virtual]
virtual void FFTW::forward ( int  nSamples,
Complex samples 
) [virtual]
void FFTW::forward ( int  nSamples,
Complex samples 
) [virtual]

Implements GeopsyCore::FastFourierTransform.

{
  _plannerMutex.lock();
  fftw_plan plan=fftw_plan_dft_1d(nSamples, (fftw_complex*)samples, (fftw_complex*)samples, FFTW_FORWARD, FFTW_ESTIMATE);
  _plannerMutex.unlock();
  fftw_execute_dft(plan, (fftw_complex *)samples, (fftw_complex *)samples);
  _plannerMutex.lock();
  fftw_destroy_plan(plan);
  _plannerMutex.unlock();
}
virtual void FFTW::forward ( int  nSamples,
Complex samples 
) [virtual]
bool FFTW::loadWisdom ( QString  fileName)
bool FFTW::loadWisdom ( QString  fileName)
{
  QFile f(fileName);
  if( !f.open(QIODevice::ReadOnly) ) {
    return false;
  }
  fftw_import_wisdom_from_string(f.readAll().data());
  // TODO interpret returned value from fftw
  return true;
}
bool FFTW::loadWisdom ( QString  fileName)
bool FFTW::loadWisdom ( QString  fileName)
bool FFTW::loadWisdom ( QString  fileName)
virtual void FFTW::manyBackward ( int  howmany,
int  nSamples,
Complex samples 
) [virtual]
virtual void FFTW::manyBackward ( int  howmany,
int  nSamples,
Complex samples 
) [virtual]
void FFTW::manyBackward ( int  howmany,
int  nSamples,
Complex samples 
) [virtual]

Implements GeopsyCore::FastFourierTransform.

{
  _plannerMutex.lock();
  fftw_plan plan=fftw_plan_many_dft(1, &nSamples, howmany,
                                       (fftw_complex *)samples, 0, 1, nSamples,
                                       (fftw_complex *)samples, 0, 1, nSamples, FFTW_BACKWARD, FFTW_PATIENT);
  _plannerMutex.unlock();
  fftw_execute_dft(plan, (fftw_complex *)samples, (fftw_complex *)samples);
  _plannerMutex.lock();
  fftw_destroy_plan(plan);
  _plannerMutex.unlock();
}
virtual void FFTW::manyBackward ( int  howmany,
int  nSamples,
Complex samples 
) [virtual]
virtual void FFTW::manyBackward ( int  howmany,
int  nSamples,
Complex samples 
) [virtual]
virtual void FFTW::manyForward ( int  howmany,
int  nSamples,
Complex samples 
) [virtual]
virtual void FFTW::manyForward ( int  howmany,
int  nSamples,
Complex samples 
) [virtual]
virtual void FFTW::manyForward ( int  howmany,
int  nSamples,
Complex samples 
) [virtual]
void FFTW::manyForward ( int  howmany,
int  nSamples,
Complex samples 
) [virtual]

Implements GeopsyCore::FastFourierTransform.

{
  _plannerMutex.lock();
  fftw_plan plan=fftw_plan_many_dft(1, &nSamples, howmany,
                                       (fftw_complex *)samples, 0, 1, nSamples,
                                       (fftw_complex *)samples, 0, 1, nSamples, FFTW_FORWARD, FFTW_PATIENT);
  _plannerMutex.unlock();
  fftw_execute_dft(plan, (fftw_complex *)samples, (fftw_complex *)samples);
  _plannerMutex.lock();
  fftw_destroy_plan(plan);
  _plannerMutex.unlock();
}
virtual void FFTW::manyForward ( int  howmany,
int  nSamples,
Complex samples 
) [virtual]

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines