40 #ifndef MAT_MATRIXHIERARCHICBASE 41 #define MAT_MATRIXHIERARCHICBASE 51 template<
class Treal,
class Telement = Treal>
59 throw Failure(
"Matrix::operator== only implemented for k == 0");
84 (
int row,
int col)
const {
93 inline Telement&
operator[]
100 inline Telement
const &
operator[]
171 inline void assert_alloc() {
172 if (this->cap < this->nel) {
174 this->cap = this->nel;
175 this->elements = allocateElements<Telement>(this->cap);
176 for (
int ind = 0; ind < this->cap; ind++)
177 this->elements[ind] = 0;
187 template<
class Treal,
class Telement>
191 if (!
mat.is_zero()) {
192 elements = allocateElements<Telement>(nElements());
193 for (
int i = 0; i < nElements(); i++)
194 elements[i] =
mat.elements[i];
199 template<
class Treal,
class Telement>
210 if (is_zero() || (nElements() !=
mat.nElements())) {
212 elements = allocateElements<Telement>(
mat.nElements());
216 for (
int i = 0; i < nElements(); i++)
217 elements[i] =
mat.elements[i];
221 template<
class Treal,
class Telement>
225 assert(
A.rows ==
B.rows &&
A.cols ==
B.cols);
226 Telement* elementsTmp =
A.elements;
227 A.elements =
B.elements;
228 B.elements = elementsTmp;
232 template<
class Treal,
class Telement>
mat::SizesAndBlocks rows
Definition: test.cc:51
bool is_empty() const
Definition: SizesAndBlocks.h:71
SizesAndBlocks cols
Definition: MatrixHierarchicBase.h:165
mat::SizesAndBlocks cols
Definition: test.cc:52
MatrixHierarchicBase(SizesAndBlocks const &rowsInp, SizesAndBlocks const &colsInp)
Definition: MatrixHierarchicBase.h:151
const int & nScalarsRows() const
Definition: MatrixHierarchicBase.h:63
int const & getNBlocks() const
Definition: SizesAndBlocks.h:72
bool highestLevel() const
Definition: MatrixHierarchicBase.h:133
const Telement int col const
Definition: MatrixHierarchicBase.h:84
MatrixHierarchicBase< Treal, Telement > & operator=(const MatrixHierarchicBase< Treal, Telement > &mat)
Definition: MatrixHierarchicBase.h:202
return elements[row+col *nrows()]
Definition: MatrixHierarchicBase.h:81
int const & getNScalars() const
Definition: SizesAndBlocks.h:73
Definition: allocate.cc:39
Describes dimensions of matrix and its blocks on all levels.
Definition: SizesAndBlocks.h:45
int getNTotalScalars() const
Definition: SizesAndBlocks.h:84
const int & ncols() const
Definition: MatrixHierarchicBase.h:71
virtual ~MatrixHierarchicBase()
Definition: MatrixHierarchicBase.h:233
Code for memory allocation/deallocation routines used by matrix library.
Telement * elements
Definition: MatrixHierarchicBase.h:166
Telement int col
Definition: MatrixHierarchicBase.h:75
Base class for Matrix and Matrix specialization.
Definition: MatrixHierarchicBase.h:52
bool is_zero() const
Definition: MatrixHierarchicBase.h:108
int nElements() const
Definition: MatrixHierarchicBase.h:110
void getCols(SizesAndBlocks &colsCopy) const
Definition: MatrixHierarchicBase.h:128
const int & nrows() const
Definition: MatrixHierarchicBase.h:69
void freeElements(float *ptr)
Definition: allocate.cc:49
const int & nScalarsCols() const
Definition: MatrixHierarchicBase.h:65
bool operator==(int k) const
Definition: MatrixHierarchicBase.h:55
void getRows(SizesAndBlocks &rowsCopy) const
Definition: MatrixHierarchicBase.h:125
void resetCols(SizesAndBlocks const &newCols)
Definition: MatrixHierarchicBase.h:119
Copyright(c) Emanuel Rubensson 2006.
bool is_empty() const
Check if matrix is empty Empty is different from zero, a zero matrix contains information about block...
Definition: MatrixHierarchicBase.h:143
MatrixHierarchicBase()
Definition: MatrixHierarchicBase.h:149
Telement & operator()(int row
SizesAndBlocks rows
Definition: MatrixHierarchicBase.h:164
void resetRows(SizesAndBlocks const &newRows)
Definition: MatrixHierarchicBase.h:114
static void swap(MatrixHierarchicBase< Treal, Telement > &A, MatrixHierarchicBase< Treal, Telement > &B)
Definition: MatrixHierarchicBase.h:223