/******************************************************************************** * Clase FFTCalculator * * * * See information in FFTw_wrapper.h * * * * EQUITEL - C.V. February 2007 ALMDI * ********************************************************************************/ #include #include "FFTw_wrapper.h" #include "Libreria FFtw\fftw3.h" using namespace FFTw_wrapper; //Constructor FFTCalculator::FFTCalculator(int NumSamples, array^ InputBuffer, array^ OutputBuffer) { mNumSamples = NumSamples; //internal unmanaged buffers in = (fftw_complex*) fftw_malloc(sizeof(fftw_complex)* mNumSamples); out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex)* mNumSamples); //work-plan creation (see doc at www.FFTw.org) p = fftw_plan_dft_1d(mNumSamples, in, out, FFTW_FORWARD ,FFTW_MEASURE); //Pointers for the external managed buffers mBufin = InputBuffer; mBufout = OutputBuffer; } // Destructor FFTCalculator::~FFTCalculator() { fftw_destroy_plan(p); fftw_free(out); fftw_free(in); } //Calculation void FFTCalculator::Calculate() { int i; double re; double im; double *p1, *p2; p1= (double *)in; p2= (double *)out; //Copy the data to the internal buffer for (i=0; i