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

Last change on this file since 1390 was 1390, checked in by ansari, 25 years ago

Modifs interface FFTServer , Reza 9/2/2001

File size: 3.1 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 inline void setNormalize(bool fg=false) { _fgnorm = fg; }
30 inline bool getNormalize() const { return(_fgnorm); }
31 inline string getInfo() const { return _info; }
32
33 // Transforme unidimensionnel sur des doubles
34 virtual void FFTForward(TVector< complex<r_8> > const & in, TVector< complex<r_8> > & out);
35 virtual void FFTBackward(TVector< complex<r_8> > const & in, TVector< complex<r_8> > & out);
36 virtual void FFTForward(TVector< r_8 > const & in, TVector< complex<r_8> > & out);
37 virtual void FFTBackward(TVector< complex<r_8> > const & in, TVector< r_8 > & out);
38
39 // Transforme unidimensionnel sur des float
40 virtual void FFTForward(TVector< complex<r_4> > const & in, TVector< complex<r_4> > & out);
41 virtual void FFTBackward(TVector< complex<r_4> > const & in, TVector< complex<r_4> > & out);
42 virtual void FFTForward(TVector< r_4 > const & in, TVector< complex<r_4> > & out);
43 virtual void FFTBackward(TVector< complex<r_4> > const & in, TVector< r_4 > & out);
44
45
46 //---------------------------------------------------
47 // Transforme N-dim sur des doubles
48 virtual void FFTForward(TArray< complex<r_8> > const & in, TArray< complex<r_8> > & out);
49 virtual void FFTBackward(TArray< complex<r_8> > const & in, TArray< complex<r_8> > & out);
50 virtual void FFTForward(TArray< r_8 > const & in, TArray< complex<r_8> > & out);
51 virtual void FFTBackward(TArray< complex<r_8> > const & in, TArray< r_8 > & out);
52
53 // Transforme N-dim sur des float
54 virtual void FFTForward(TArray< complex<r_4> > const & in, TArray< complex<r_4> > & out);
55 virtual void FFTBackward(TArray< complex<r_4> > const & in, TArray< complex<r_4> > & out);
56 virtual void FFTForward(TArray< r_4 > const & in, TArray< complex<r_4> > & out);
57 virtual void FFTBackward(TArray< complex<r_4> > const & in, TArray< r_4 > & out);
58
59 protected:
60 bool _fgnorm;
61 string _info;
62};
63
64} // Fin du namespace
65
66template <class T>
67class FFTArrayChecker {
68public:
69 FFTArrayChecker(bool checkpack=true, bool onedonly=false);
70 virtual ~FFTArrayChecker();
71 virtual int CheckResize(TArray< complex<T> > const & in, TArray< complex<T> > & out);
72 virtual int CheckResize(TArray< T > const & in, TArray< complex<T> > & out);
73 virtual int CheckResize(TArray< complex<T> > const & in, TArray< T > & out);
74 virtual void ReShapetoReal(TArray< complex<T> > const & in, TArray< T > & out);
75 virtual void ReShapetoCompl(TArray< T > const & in, TArray< complex<T> > & out);
76
77protected:
78 bool _checkpack;
79 bool _onedonly;
80};
81
82#endif
Note: See TracBrowser for help on using the repository browser.