#include "CFFTW3.h" #include using namespace std; #include using namespace Math; CFFTW3::CFFTW3(bool forward) { m_size = 0; m_out = m_in = NULL; m_plan = NULL; m_forward = forward; } CFFTW3::CFFTW3(int n) { resize(n); } void CFFTW3::resize(int n) { assert(n>0); m_size = n; m_out = m_in = NULL; m_in = new fftw_complex[m_size]; m_out = new fftw_complex[m_size]; in.resize(m_size); out.resize(m_size); // | FFTW_PRESERVE_INPUT if(m_forward) m_plan = fftw_plan_dft_1d(m_size, m_in, m_out, FFTW_FORWARD, FFTW_MEASURE); else m_plan = fftw_plan_dft_1d(m_size, m_in, m_out, FFTW_BACKWARD, FFTW_MEASURE); } void CFFTW3::execute() { execute(in, out); } void CFFTW3::execute(const vector& in, vector >& out) { assert(int(in.size())>=m_size); for(int i=0; i