1 #ifndef MATH_MultiLevelsFFTToeplitzMatrix_H 2 #define MATH_MultiLevelsFFTToeplitzMatrix_H 115 ((mDFTProjector.get()==
null)?0:mDFTProjector->getMemorySize())+
126 return *mDFTProjector.get();
DEFINE_SPTR(MATH_MultiLevelsFFTToeplitzMatrix)
virtual void vectorProductInSpectralSpace(const FFTW_FFT &A, FFTW_FFT &Z) const =0
make the vector product in spectral space
virtual void vectorProduct(const tUIndex &N, const tReal *X, tReal *Y) const
do the vector product of the circular matrix C with Y by an FFT method
Definition: MATH_MultiLevelsFFTToeplitzMatrix.cpp:67
const tUIndex & getSpectralSpaceSize() const
get the spectral space size
Definition: MATH_MultiLevelsFFTToeplitzMatrix.h:182
This class is multi level toeplitz matrix whose product with vector is based on FFT; It delas with th...
Definition: MATH_MultiLevelsFFTToeplitzMatrix.h:24
MATH_MultiLevelsFFTToeplitzMatrix(void)
create a multi level toeplitz matrix
Definition: MATH_MultiLevelsFFTToeplitzMatrix.cpp:3
virtual ~MATH_MultiLevelsFFTToeplitzMatrix(void)
destroy a multi level toeplitz matrix
Definition: MATH_MultiLevelsFFTToeplitzMatrix.cpp:9
SP_OBJECT(MATH_MultiLevelsFFTToeplitzMatrix)
This class manages the execution of Fast Fourier Transform. several fast Fourier Transforms may be ap...
Definition: FFTW_FFT.h:28
This class is multi levels toeplitz matrix. The matrix at level k is composed by toeplitz block matr...
Definition: MATH_MultiLevelsToeplitzMatrix.h:57
virtual void recoverCanonicalSpace()=0
recover the canonical space from the spectral space
#define null
Definition: types.h:144
virtual void recoverFromSpectralSpace(const tUIndex &N, tReal *X) const =0
recover from multi levels space to the initial space
virtual void recover()
projection of the matrix in the CANONICAL SPACE
Definition: MATH_MultiLevelsFFTToeplitzMatrix.cpp:54
virtual tULLInt getMemorySize() const
return the memory size in byte
Definition: MATH_MultiLevelsFFTToeplitzMatrix.h:113
virtual void projectIntoSpectralSpace(const tUIndex &N, const tReal *X) const =0
project the vector X from initial space to multi levels space
CORE_UIndexArray & getColumnLeadingDimensions()
get the leading dimension of columns from the spectral space
Definition: MATH_MultiLevelsFFTToeplitzMatrix.h:155
virtual tULLInt getMemorySize() const
return the memory size in byte
Definition: MATH_MultiLevelsToeplitzMatrix.h:267
virtual void copy(const FFTW_FFT &c)
copy the MultiDFTs
Definition: FFTW_FFT.cpp:20
virtual void buildRowLeadingDimensions()=0
build the row indices
const FFTW_FFT & getDFT() const
get the FFT class
Definition: MATH_MultiLevelsToeplitzMatrix.h:276
const CORE_UIndexArray & getRowLeadingDimensions() const
get the index of the row i and column 0 from the spectral space
Definition: MATH_MultiLevelsFFTToeplitzMatrix.h:165
virtual void copy(const MATH_MultiLevelsToeplitzMatrix &mat)
copy the instance
Definition: MATH_MultiLevelsFFTToeplitzMatrix.cpp:21
CORE_UIndexArray mRowLeadingDimensions
Definition: MATH_MultiLevelsFFTToeplitzMatrix.h:39
virtual void buildColumnLeadingDimensions()=0
build the column leading dimensions
virtual void vectorProduct(const CORE_RealArray &X, CORE_RealArray &Y) const
do the vector product of the circular matrix C with Y by an FFT method
Definition: MATH_MultiLevelsToeplitzMatrix.h:544
virtual tULLInt getMemorySize() const
return the memory size in byte
Definition: CORE_Array.h:545
const CORE_UIndexArray & getColumnLeadingDimensions() const
get the leading dimension of columns from the spectral space
Definition: MATH_MultiLevelsFFTToeplitzMatrix.h:147
#define tUIndex
Definition: types.h:126
virtual void vectorProduct(const CORE_RealArray &X, CORE_RealArray &Y) const
do the vector product of the circular matrix C with Y by an FFT method
Definition: MATH_MultiLevelsFFTToeplitzMatrix.h:280
CORE_UIndexArray mColumnLeadingDimensions
Definition: MATH_MultiLevelsFFTToeplitzMatrix.h:36
virtual void buildSpectralSpace()=0
build the spectral space
virtual void clear()
clear the matrix clear the data creating when building the spectral space
Definition: MATH_MultiLevelsFFTToeplitzMatrix.cpp:12
#define tULLInt
Definition: types.h:45
void setSpectralSpaceSize(const tUIndex &n)
set the spectral space size
Definition: MATH_MultiLevelsFFTToeplitzMatrix.h:97
virtual void buildSpectralVectorProjector(FFTW_FFT &proj) const
build the projector of vector in spectral space
Definition: MATH_MultiLevelsFFTToeplitzMatrix.h:194
FFTW_FFT & getDFTProjector() const
return the projector for vector into the spectral space
Definition: MATH_MultiLevelsFFTToeplitzMatrix.h:125
#define tReal
Definition: types.h:118
SP::FFTW_FFT mDFTProjector
Definition: MATH_MultiLevelsFFTToeplitzMatrix.h:32
tUIndex mSpectralSpaceSize
Definition: MATH_MultiLevelsFFTToeplitzMatrix.h:33
CORE_UIndexArray & getRowLeadingDimensions()
get the index of the row i and column 0 from the spectral space
Definition: MATH_MultiLevelsFFTToeplitzMatrix.h:174
virtual void diagonalize()
diagonalize the matrix projection of the matrix in the SPECTRAL_SPACE
Definition: MATH_MultiLevelsFFTToeplitzMatrix.cpp:34