#ifndef FFTPServer_H_SEEN #define FFTPServer_H_SEEN #include "fftservintf.h" // implementation de FFTServerInterface en utilisant FFTPack namespace SOPHYA { //! An FFT server based on fftpack. class FFTPackServer : public FFTServerInterface { public: FFTPackServer(); virtual ~FFTPackServer(); // Implementation de l'interface FFTServerInterface virtual FFTServerInterface * Clone(); // Transforme unidimensionnel sur des double virtual void FFTForward(TVector< complex > const & in, TVector< complex > & out); virtual void FFTBackward(TVector< complex > const & in, TVector< complex > & out); virtual void FFTForward(TVector< r_8 > const & in, TVector< complex > & out); virtual void FFTBackward(TVector< complex > const & in, TVector< r_8 > & out); // Transforme unidimensionnel sur des float virtual void FFTForward(TVector< complex > const & in, TVector< complex > & out); virtual void FFTBackward(TVector< complex > const & in, TVector< complex > & out); virtual void FFTForward(TVector< r_4 > const & in, TVector< complex > & out); virtual void FFTBackward(TVector< complex > const & in, TVector< r_4 > & out); // Methodes propres a cette classe virtual void fftf(int_4 l, float* inout); virtual void fftb(int_4 l, float* inout); virtual void fftf(int_4 l, double* inout); virtual void fftb(int_4 l, double* inout); virtual void fftf(int_4 l, complex* inout); virtual void fftb(int_4 l, complex* inout); virtual void fftf(int_4 l, complex* inout); virtual void fftb(int_4 l, complex* inout); // Methodes statiques pour reordonner les donnees virtual void ReShapetoReal( TVector< complex > const & in, TVector< r_8 > & out); virtual void ReShapetoReal( TVector< complex > const & in, TVector< r_4 > & out); virtual void ReShapetoCompl(TVector< r_8 > const & in, TVector< complex > & out); virtual void ReShapetoCompl(TVector< r_4 > const & in, TVector< complex > & out); protected: virtual void checkint_rfft(int_4 l); virtual void checkint_dfft(int_4 l); virtual void checkint_cfft(int_4 l); virtual void checkint_cdfft(int_4 l); int sz_rfft; r_4* ws_rfft; int sz_cfft; r_4* ws_cfft; int sz_dfft; r_8* ws_dfft; int sz_cdfft; r_8* ws_cdfft; }; } // Fin du namespace #endif