#ifndef FFTPServer_H_SEEN #define FFTPServer_H_SEEN #include "fftservintf.h" // implementation de FFTServerInterface en utilisant FFTPack namespace SOPHYA { 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 l, float* inout); virtual void fftb(int l, float* inout); virtual void fftf(int l, double* inout); virtual void fftb(int l, double* inout); virtual void fftf(int l, complex* inout); virtual void fftb(int l, complex* inout); virtual void fftf(int l, complex* inout); virtual void fftb(int 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 l); virtual void checkint_dfft(int l); virtual void checkint_cfft(int l); virtual void checkint_cdfft(int l); int sz_rfft; float* ws_rfft; int sz_cfft; float* ws_cfft; int sz_dfft; double* ws_dfft; int sz_cdfft; double* ws_cdfft; }; } // Fin du namespace #endif