38 #ifndef MAT_MATRIXHIERARCHICBASE
39 #define MAT_MATRIXHIERARCHICBASE
49 template<
class Treal,
class Telement = Treal>
57 throw Failure(
"Matrix::operator== only implemented for k == 0");
82 (
int row,
int col)
const {
91 inline Telement&
operator[]
98 inline Telement
const &
operator[]
169 inline void assert_alloc() {
170 if (this->cap < this->nel) {
172 this->cap = this->nel;
173 this->elements = allocateElements<Telement>(this->cap);
174 for (
int ind = 0; ind < this->cap; ind++)
175 this->elements[ind] = 0;
185 template<
class Treal,
class Telement>
188 : rows(mat.rows), cols(mat.cols), elements(0) {
197 template<
class Treal,
class Telement>
208 if (is_zero() || (nElements() != mat.
nElements())) {
210 elements = allocateElements<Telement>(mat.
nElements());
214 for (
int i = 0; i < nElements(); i++)
219 template<
class Treal,
class Telement>
230 template<
class Treal,
class Telement>
SizesAndBlocks cols
Definition: MatrixHierarchicBase.h:163
MatrixHierarchicBase(SizesAndBlocks const &rowsInp, SizesAndBlocks const &colsInp)
Definition: MatrixHierarchicBase.h:149
bool highestLevel() const
Definition: MatrixHierarchicBase.h:131
int getNTotalScalars() const
Definition: SizesAndBlocks.h:76
const Telement int col const
Definition: MatrixHierarchicBase.h:82
MatrixHierarchicBase< Treal, Telement > & operator=(const MatrixHierarchicBase< Treal, Telement > &mat)
Definition: MatrixHierarchicBase.h:200
return elements[row+col *nrows()]
Definition: MatrixHierarchicBase.h:79
const int & ncols() const
Definition: MatrixHierarchicBase.h:69
const int & nScalarsRows() const
Definition: MatrixHierarchicBase.h:61
const int & nrows() const
Definition: MatrixHierarchicBase.h:67
Definition: allocate.cc:30
Describes dimensions of matrix and its blocks on all levels.
Definition: SizesAndBlocks.h:37
bool operator==(int k) const
Definition: MatrixHierarchicBase.h:53
virtual ~MatrixHierarchicBase()
Definition: MatrixHierarchicBase.h:231
bool is_empty() const
Definition: SizesAndBlocks.h:63
Telement * elements
Definition: MatrixHierarchicBase.h:164
Base class for Matrix and Matrix specialization.
Definition: MatrixHierarchicBase.h:50
void getRows(SizesAndBlocks &rowsCopy) const
Definition: MatrixHierarchicBase.h:123
void freeElements(float *ptr)
Definition: allocate.cc:40
int nElements() const
Definition: MatrixHierarchicBase.h:108
int const & getNScalars() const
Definition: SizesAndBlocks.h:65
void getCols(SizesAndBlocks &colsCopy) const
Definition: MatrixHierarchicBase.h:126
bool is_empty() const
Check if matrix is empty Empty is different from zero, a zero matrix contains information about block...
Definition: MatrixHierarchicBase.h:141
void resetCols(SizesAndBlocks const &newCols)
Definition: MatrixHierarchicBase.h:117
Copyright(c) Emanuel Rubensson 2006.
int const & getNBlocks() const
Definition: SizesAndBlocks.h:64
MatrixHierarchicBase()
Definition: MatrixHierarchicBase.h:147
Telement & operator()(int row
bool is_zero() const
Definition: MatrixHierarchicBase.h:106
SizesAndBlocks rows
Definition: MatrixHierarchicBase.h:162
const int & nScalarsCols() const
Definition: MatrixHierarchicBase.h:63
void resetRows(SizesAndBlocks const &newRows)
Definition: MatrixHierarchicBase.h:112
static void swap(MatrixHierarchicBase< Treal, Telement > &A, MatrixHierarchicBase< Treal, Telement > &B)
Definition: MatrixHierarchicBase.h:221