1 #ifndef MATH_MultiLevelsToeplitzMatrix_H 2 #define MATH_MultiLevelsToeplitzMatrix_H 122 virtual SP::MATH_MultiLevelsToeplitzMatrix
NewInstance()
const=0;
134 return (*mFFT.get())[k];
141 return (*mFFT.get())[k];
152 "MATH_MultiLevelsToeplitzMatrix()",
153 "the space is not the CANONICAL SPACE");
154 return (*mFFT.get())[
getIndex(i,j)];
164 "MATH_MultiLevelsToeplitzMatrix()",
165 "the space is not the CANONICAL SPACE");
166 return (*mFFT.get())[
getIndex(i,j)];
181 virtual void clear();
196 inline void setStorage(SP::MATH_LeafBlockMatrixStorage storage) {
206 mStorage->setDimension(n);
252 "MATH_MultiLevelsToeplitzMatrix::setDFT(null)",
253 "impossible to set the Discrete Fourier Transform: FFTW_ClassFactory not added in general class factory");
268 return (mFFT.get()==
null)?0:mFFT->getMemorySize();
294 return (*
this)(i,j)[0];
325 return mFFT->getArray();
331 return mFFT->getArray();
379 return mStorage->getSize();
385 return mStorage->getDimension();
407 return 2*mLevels[l-1]-1;
426 return *mStorage.get();
432 return *mStorage.get();
460 if (mLevels.
getSize()==0)
return 0;
const tFFTWComplex * getLeafBlockValues(const tIndex indices[]) const
get the values of the leaf block
Definition: MATH_MultiLevelsToeplitzMatrix.h:338
const tUIndex & getSize() const
return the size of the array for reading
Definition: CORE_Array.h:1018
const CORE_UIndexArray & getLevels() const
get the level of the matrix
Definition: MATH_MultiLevelsToeplitzMatrix.h:355
FFTW_FFT & getDFT()
get the FFT class
Definition: MATH_MultiLevelsToeplitzMatrix.h:282
tUIndex getToeplitzBlockIndex(const tIndex I[]) const
get the block index corresponding to indices
Definition: MATH_MultiLevelsToeplitzMatrix.h:459
const tUIndex & getLeafBlockDimension() const
return the dimension of the leaf block matrix
Definition: MATH_MultiLevelsToeplitzMatrix.h:384
const tUIndex & getRowsNumber() const
get the dimension of the matrix
Definition: MATH_MultiLevelsToeplitzMatrix.h:307
SP_OBJECT(MATH_MultiLevelsToeplitzMatrix)
void setStorage(SP::MATH_LeafBlockMatrixStorage storage)
set the storage of the matrix
Definition: MATH_MultiLevelsToeplitzMatrix.h:196
tReal getRealValue(const tUIndex &i, const tUIndex &j) const
get the real value at row i and column j
Definition: MATH_MultiLevelsToeplitzMatrix.h:293
MATH_LeafBlockMatrixStorage & getStorage()
get the storage of the leaf matrices
Definition: MATH_MultiLevelsToeplitzMatrix.h:431
virtual tString toString() const
return string
Definition: MATH_MultiLevelsToeplitzMatrix.cpp:192
tFFTWComplex * getLeafBlockValues(const tIndex indices[])
get the values of the leaf block
Definition: MATH_MultiLevelsToeplitzMatrix.h:347
void setDFT(SP::FFTW_FFT dft)
set the DFT class
Definition: MATH_MultiLevelsToeplitzMatrix.h:249
const tUIndex & getCanonicalSpaceSize() const
get canonical space size
Definition: MATH_MultiLevelsToeplitzMatrix.h:370
const tUIndex & getBlocksNumberPerRow(const tUSInt &l) const
get the blocks number per row or column at the level
Definition: MATH_MultiLevelsToeplitzMatrix.h:398
tUIndex getLeafBlockSize() const
return the size of the leaf block matrix
Definition: MATH_MultiLevelsToeplitzMatrix.h:378
virtual void setLeafBlockDimension(const tUIndex &n)
set the dimension of leaf block
Definition: MATH_MultiLevelsToeplitzMatrix.h:205
static const tFlag CANONICAL_SPACE
Definition: MATH_MultiLevelsToeplitzMatrix.h:65
SP::FFTW_FFT mFFT
Definition: MATH_MultiLevelsToeplitzMatrix.h:94
virtual void clear()
clear the multi level toeplitz matrix
Definition: MATH_MultiLevelsToeplitzMatrix.cpp:20
void projection(const tFlag &space)
make the projection in the space
Definition: MATH_MultiLevelsToeplitzMatrix.h:509
tUIndex mCanonicalSpaceSize
Definition: MATH_MultiLevelsToeplitzMatrix.h:75
This class manages the execution of Fast Fourier Transform. several fast Fourier Transforms may be ap...
Definition: FFTW_FFT.h:28
DEFINE_SPTR(MATH_MultiLevelsToeplitzMatrix)
virtual ~MATH_MultiLevelsToeplitzMatrix(void)
destroy a multi level toeplitz matrix
Definition: MATH_MultiLevelsToeplitzMatrix.cpp:17
This class is multi levels toeplitz matrix. The matrix at level k is composed by toeplitz block matr...
Definition: MATH_MultiLevelsToeplitzMatrix.h:57
#define tUSInt
Definition: types.h:28
const tFFTWComplex & operator[](const tUIndex &k) const
get the value at index k
Definition: MATH_MultiLevelsToeplitzMatrix.h:140
#define tFFTWComplex
Definition: fftw_types.h:65
tUIndex getBlocksNumber(const tUIndex &l) const
get the blocks number at the level
Definition: MATH_MultiLevelsToeplitzMatrix.h:406
void setSize(const tUIndex &n)
set the size
Definition: CORE_Array.h:292
virtual void copy(const MATH_MultiLevelsToeplitzMatrix &mat)
copy the instance
Definition: MATH_MultiLevelsToeplitzMatrix.cpp:29
#define null
Definition: types.h:144
virtual void setLevels(const tUSInt &levelsNumber, const tUIndex levels[], const tUIndex &nD)
set the levels of the matrix
Definition: MATH_MultiLevelsToeplitzMatrix.h:218
static const tFlag SPECTRAL_SPACE
Definition: MATH_MultiLevelsToeplitzMatrix.h:66
tFFTWComplex & operator[](const tUIndex &k)
get the value at index k
Definition: MATH_MultiLevelsToeplitzMatrix.h:133
tUIndex mDimension
Definition: MATH_MultiLevelsToeplitzMatrix.h:82
virtual tULLInt getMemorySize() const
return the memory size in byte
Definition: MATH_MultiLevelsToeplitzMatrix.h:267
const tUIndex & getDimension() const
get the dimension of the matrix
Definition: MATH_MultiLevelsToeplitzMatrix.h:301
tFlag mSpace
Definition: MATH_MultiLevelsToeplitzMatrix.h:71
Definition: MATH_LeafBlockMatrixStorage.h:22
#define tIndex
Definition: types.h:129
const FFTW_FFT & getDFT() const
get the FFT class
Definition: MATH_MultiLevelsToeplitzMatrix.h:276
const FFTW_ComplexArray & getValues() const
get the values of the matrix
Definition: MATH_MultiLevelsToeplitzMatrix.h:330
this class describes the exceptions raised for CORE package
Definition: CORE_Exception.h:15
virtual void recover()=0
projection of the matrix in the CANONICAL SPACE
CORE_UIndexArray mLevels
Definition: MATH_MultiLevelsToeplitzMatrix.h:79
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
const MATH_LeafBlockMatrixStorage & getStorage() const
get the storage of the leaf matrices
Definition: MATH_MultiLevelsToeplitzMatrix.h:425
const tFFTWComplex & operator()(const tUIndex &i, const tUIndex &j) const
get the value of the matrix at row i and column j
Definition: MATH_MultiLevelsToeplitzMatrix.h:150
This class describes FFT complex array based on fft_complex structure.
Definition: FFTW_ComplexArray.h:17
#define tUIndex
Definition: types.h:126
abstract base class for most classes.
Definition: CORE_Object.h:53
tUSInt getLevelsNumber() const
get the number of levels of the matrix
Definition: MATH_MultiLevelsToeplitzMatrix.h:361
tUIndex getBlocksNumber() const
get the blocks number
Definition: MATH_MultiLevelsToeplitzMatrix.h:390
const tUIndex & getColumnsNumber() const
get the dimension of the matrix
Definition: MATH_MultiLevelsToeplitzMatrix.h:313
#define tString
Definition: types.h:135
const tFlag & getSpace() const
get the space of the matrix
Definition: MATH_MultiLevelsToeplitzMatrix.h:418
tUIndex getToeplitzBlockIndex(const tUSInt &nLevels, const tUIndex N[], const tIndex I[]) const
get the block index corresponding to indices
Definition: MATH_MultiLevelsToeplitzMatrix.cpp:99
virtual SP::MATH_MultiLevelsToeplitzMatrix NewInstance() const =0
new instance
virtual void diagonalize()=0
diagonalize the matrix projection of the matrix in the SPECTRAL_SPACE
SP::MATH_LeafBlockMatrixStorage mStorage
Definition: MATH_MultiLevelsToeplitzMatrix.h:91
tUIndex getIndex(const tUIndex &i, const tUIndex &j) const
return the index in values of the matrix value at row i and column j
Definition: MATH_MultiLevelsToeplitzMatrix.h:440
tFFTWComplex & operator()(const tUIndex &i, const tUIndex &j)
get the value of the matrix at row i and column j
Definition: MATH_MultiLevelsToeplitzMatrix.h:162
#define tULLInt
Definition: types.h:45
FFTW_ComplexArray & getValues()
get the values of the matrix
Definition: MATH_MultiLevelsToeplitzMatrix.h:324
MATH_MultiLevelsToeplitzMatrix(void)
create a multi level toeplitz matrix
Definition: MATH_MultiLevelsToeplitzMatrix.cpp:8
#define tReal
Definition: types.h:118
void setSpace(const tFlag &space)
set the space of the multi level block matrix
Definition: MATH_MultiLevelsToeplitzMatrix.h:189
tUIndex getBlockIndex(const tUIndex &ib, const tUIndex &jb, const tUIndex &N) const
get the index of the block in the block list
Definition: MATH_MultiLevelsToeplitzMatrix.h:489
#define tFlag
Definition: types.h:74