Changeset 2526 in Sophya


Ignore:
Timestamp:
Apr 22, 2004, 12:04:47 PM (21 years ago)
Author:
cmv
Message:

methodes inline donnant la taille du vecteur FFT cmv 22/04/04

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/NTools/fftservintf.h

    r1630 r2526  
    2727  virtual FFTServerInterface * Clone() = 0;
    2828
    29 //! Set/clear the flag for normalizing Fourier transforms.
     29  //! Set/clear the flag for normalizing Fourier transforms.
    3030  inline void setNormalize(bool fg=false) { _fgnorm = fg; }
    31 //! Returns the status of normalization flag for the server
     31  //! Returns the status of normalization flag for the server
    3232  inline bool getNormalize() const { return(_fgnorm); }
    33 //! Returns the information string associated with the server
     33  //! Returns the information string associated with the server
    3434  inline string getInfo() const { return _info; }
    3535
    3636  //---------------------------------------------------
    3737  // Transforme N-dim sur des doubles
     38  virtual void FFTForward(TArray<r_4> const & in, TArray< complex<r_4> > & out);
     39  virtual void FFTForward(TArray<r_8> const & in, TArray< complex<r_8> > & out);
     40  virtual void FFTForward(TArray< complex<r_4> > const & in, TArray< complex<r_4> > & out);
    3841  virtual void FFTForward(TArray< complex<r_8> > const & in, TArray< complex<r_8> > & out);
     42
     43  virtual void FFTBackward(TArray< complex<r_4> > const & in, TArray<r_4> & out,bool usoutsz=false);
     44  virtual void FFTBackward(TArray< complex<r_8> > const & in, TArray<r_8> & out,bool usoutsz=false);
     45  virtual void FFTBackward(TArray< complex<r_4> > const & in, TArray< complex<r_4> > & out);
    3946  virtual void FFTBackward(TArray< complex<r_8> > const & in, TArray< complex<r_8> > & out);
    40   virtual r_8  TransfEnergyFFT(TVector< complex<r_8> > const & x, TVector< complex<r_8> > const& fftx
    41                               , r_8& A, r_8& B);
     47
    4248   //! Compute the factor to be applied to "fftx=FFT(x)" so that "x" and "FFT(x)" have the same energy
    43   virtual inline r_8  TransfEnergyFFT(TVector< complex<r_8> > const & x, TVector< complex<r_8> > const& fftx)
    44                       {r_8 A,B; return TransfEnergyFFT(x,fftx,A,B);}
     49  virtual r_8 TransfEnergyFFT(TVector<r_4> const & x, TVector< complex<r_4> > const& fftx,r_8& A,r_8& B);
     50  virtual r_8 TransfEnergyFFT(TVector<r_8> const & x, TVector< complex<r_8> > const& fftx,r_8& A,r_8& B);
     51  virtual r_8 TransfEnergyFFT(TVector< complex<r_4> > const & x, TVector< complex<r_4> > const& fftx,r_8& A,r_8& B);
     52  virtual r_8 TransfEnergyFFT(TVector< complex<r_8> > const & x, TVector< complex<r_8> > const& fftx,r_8& A,r_8& B);
    4553
    46   virtual void FFTForward(TArray< r_8 > const & in, TArray< complex<r_8> > & out);
    47   virtual void FFTBackward(TArray< complex<r_8> > const & in, TArray< r_8 > & out,
    48                            bool usoutsz=false);
    49   virtual r_8  TransfEnergyFFT(TVector< r_8 > const & x, TVector< complex<r_8> > const& fftx
    50                               , r_8& A, r_8& B);
    51    //! Compute the factor to be applied to "fftx=FFT(x)" so that "x" and "FFT(x)" have the same energy
    52   virtual inline r_8  TransfEnergyFFT(TVector< r_8 > const & x, TVector< complex<r_8> > const& fftx)
    53                       {r_8 A,B; return TransfEnergyFFT(x,fftx,A,B);}
     54  virtual inline r_8 TransfEnergyFFT(TVector<r_4> const & x, TVector< complex<r_4> > const& fftx)
     55                       {r_8 A,B; return TransfEnergyFFT(x,fftx,A,B);}
     56  virtual inline r_8 TransfEnergyFFT(TVector<r_8> const & x, TVector< complex<r_8> > const& fftx)
     57                       {r_8 A,B; return TransfEnergyFFT(x,fftx,A,B);}
     58  virtual inline r_8 TransfEnergyFFT(TVector< complex<r_4> > const & x, TVector< complex<r_4> > const& fftx)
     59                       {r_8 A,B; return TransfEnergyFFT(x,fftx,A,B);}
     60  virtual inline r_8 TransfEnergyFFT(TVector< complex<r_8> > const & x, TVector< complex<r_8> > const& fftx)
     61                       {r_8 A,B; return TransfEnergyFFT(x,fftx,A,B);}
    5462
    55   // Transforme N-dim sur des float
    56   virtual void FFTForward(TArray< complex<r_4> > const & in, TArray< complex<r_4> > & out);
    57   virtual void FFTBackward(TArray< complex<r_4> > const & in, TArray< complex<r_4> > & out);
    58   virtual r_8  TransfEnergyFFT(TVector< complex<r_4> > const & x, TVector< complex<r_4> > const& fftx
    59                               , r_8& A, r_8& B);
    60    //! Compute the factor to be applied to "fftx=FFT(x)" so that "x" and "FFT(x)" have the same energy
    61   virtual inline r_8  TransfEnergyFFT(TVector< complex<r_4> > const & x, TVector< complex<r_4> > const& fftx)
    62                       {r_8 A,B; return TransfEnergyFFT(x,fftx,A,B);}
    63 
    64   virtual void FFTForward(TArray< r_4 > const & in, TArray< complex<r_4> > & out);
    65   virtual void FFTBackward(TArray< complex<r_4> > const & in, TArray< r_4 > & out,
    66                            bool usoutsz=false);
    67   virtual r_8  TransfEnergyFFT(TVector< r_4 > const & x, TVector< complex<r_4> > const& fftx
    68                               , r_8& A, r_8& B);
    69    //! Compute the factor to be applied to "fftx=FFT(x)" so that "x" and "FFT(x)" have the same energy
    70   virtual inline r_8  TransfEnergyFFT(TVector< r_4 > const & x, TVector< complex<r_4> > const& fftx)
    71                       {r_8 A,B; return TransfEnergyFFT(x,fftx,A,B);}
     63   //! Compute the size of the FFT vector given the input vector
     64  virtual uint_4 SizeFFT(TVector<r_4> const & x) {return (uint_4) (x.Size()/2 + 1);}
     65  virtual uint_4 SizeFFT(TVector<r_8> const & x) {return (uint_4) (x.Size()/2 + 1);}
     66  virtual uint_4 SizeFFT(TVector< complex<r_4> > const & x) {return (uint_4) x.Size();}
     67  virtual uint_4 SizeFFT(TVector< complex<r_8> > const & x) {return (uint_4) x.Size();}
    7268
    7369 protected:
Note: See TracChangeset for help on using the changeset viewer.