source: Sophya/trunk/SophyaLib/NTools/fftservintf.h@ 3741

Last change on this file since 3741 was 3002, checked in by ansari, 19 years ago

Suppression const des arguments FFTForward/Backward + adaptation de Toeplitz, cmv+Reza 03/07/2006

File size: 2.5 KB
Line 
1// FFT (Fast Fourier Transform) Server Interface
2// R. Ansari 1999-2000
3// DAPNIA/SPP (Saclay) / CEA LAL - IN2P3/CNRS (Orsay)
4
5#ifndef FFTServerIntf_H_SEEN
6#define FFTServerIntf_H_SEEN
7
8#include "machdefs.h"
9#include "pexceptions.h"
10#include <complex>
11#include "tmatrix.h"
12#include "tvector.h"
13
14// Classe definissant l'interface pour les transformees de Fourier
15// L'implementation par defaut est vide et lance une exception
16
17namespace SOPHYA {
18
19class FFTServerInterface {
20 public:
21
22// Methodes de la classe
23 FFTServerInterface(string info);
24 virtual ~FFTServerInterface();
25
26
27 virtual FFTServerInterface * Clone() = 0;
28
29 //! Set/clear the flag for normalizing Fourier transforms.
30 inline void setNormalize(bool fg=false) { _fgnorm = fg; }
31 //! Returns the status of normalization flag for the server
32 inline bool getNormalize() const { return(_fgnorm); }
33 //! Returns the information string associated with the server
34 inline string getInfo() const { return _info; }
35
36 //---------------------------------------------------
37 // Transforme N-dim sur des doubles
38 virtual void FFTForward(TArray<r_4> & in, TArray< complex<r_4> > & out);
39 virtual void FFTForward(TArray<r_8> & in, TArray< complex<r_8> > & out);
40 virtual void FFTForward(TArray< complex<r_4> > & in, TArray< complex<r_4> > & out);
41 virtual void FFTForward(TArray< complex<r_8> > & in, TArray< complex<r_8> > & out);
42
43 virtual void FFTBackward(TArray< complex<r_4> > & in, TArray<r_4> & out,bool usoutsz=false);
44 virtual void FFTBackward(TArray< complex<r_8> > & in, TArray<r_8> & out,bool usoutsz=false);
45 virtual void FFTBackward(TArray< complex<r_4> > & in, TArray< complex<r_4> > & out);
46 virtual void FFTBackward(TArray< complex<r_8> > & in, TArray< complex<r_8> > & out);
47
48 protected:
49
50 bool _fgnorm;
51 string _info;
52
53};
54
55
56template <class T>
57class FFTArrayChecker {
58public:
59 FFTArrayChecker(string msg, bool checkpack=true,
60 bool onedonly=false);
61 virtual ~FFTArrayChecker();
62 static T ZeroThreshold();
63
64 inline void SetMsg(string const & msg) { _msg = msg; }
65 inline void CheckPackedArray(bool ck=true) { _checkpack = ck; }
66 inline void Accept1DOnly(bool ac1d=false) { _onedonly = ac1d; }
67
68 virtual int CheckResize(TArray< complex<T> > const & in, TArray< complex<T> > & out);
69 virtual int CheckResize(TArray< T > const & in, TArray< complex<T> > & out);
70 virtual int CheckResize(TArray< complex<T> > const & in, TArray< T > & out,
71 bool usoutsz=false);
72
73protected:
74 string _msg;
75 bool _checkpack;
76 bool _onedonly;
77
78};
79
80} // Fin du namespace
81
82#endif
Note: See TracBrowser for help on using the repository browser.