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;
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())) {
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>
Code for memory allocation/deallocation routines used by matrix library.
Base class for Matrix and Matrix specialization.
Definition MatrixHierarchicBase.h:52
bool highestLevel() const
Definition MatrixHierarchicBase.h:133
MatrixHierarchicBase(const MatrixHierarchicBase< Treal, Telement > &mat)
Definition MatrixHierarchicBase.h:189
const int & ncols() const
Definition MatrixHierarchicBase.h:71
void getRows(SizesAndBlocks &rowsCopy) const
Definition MatrixHierarchicBase.h:125
static void swap(MatrixHierarchicBase< Treal, Telement > &A, MatrixHierarchicBase< Treal, Telement > &B)
Definition MatrixHierarchicBase.h:223
const int & nrows() const
Definition MatrixHierarchicBase.h:69
void getCols(SizesAndBlocks &colsCopy) const
Definition MatrixHierarchicBase.h:128
SizesAndBlocks cols
Definition MatrixHierarchicBase.h:165
SizesAndBlocks rows
Definition MatrixHierarchicBase.h:164
Telement * elements
Definition MatrixHierarchicBase.h:166
bool operator==(int k) const
Definition MatrixHierarchicBase.h:55
virtual ~MatrixHierarchicBase()
Definition MatrixHierarchicBase.h:233
void resetRows(SizesAndBlocks const &newRows)
Definition MatrixHierarchicBase.h:114
const int & nScalarsCols() const
Definition MatrixHierarchicBase.h:65
MatrixHierarchicBase()
Definition MatrixHierarchicBase.h:149
Telement int col
Definition MatrixHierarchicBase.h:75
const int & nScalarsRows() const
Definition MatrixHierarchicBase.h:63
return elements[row+col *nrows()]
Definition MatrixHierarchicBase.h:81
int nElements() const
Definition MatrixHierarchicBase.h:110
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(SizesAndBlocks const &rowsInp, SizesAndBlocks const &colsInp)
Definition MatrixHierarchicBase.h:151
const Telement int col const
Definition MatrixHierarchicBase.h:84
MatrixHierarchicBase< Treal, Telement > & operator=(const MatrixHierarchicBase< Treal, Telement > &mat)
Definition MatrixHierarchicBase.h:202
bool is_zero() const
Definition MatrixHierarchicBase.h:108
Telement & operator()(int row
const Telement & operator()(int row
void resetCols(SizesAndBlocks const &newCols)
Definition MatrixHierarchicBase.h:119
Describes dimensions of matrix and its blocks on all levels.
Definition SizesAndBlocks.h:45
int const & getNScalars() const
Definition SizesAndBlocks.h:73
int const & getNBlocks() const
Definition SizesAndBlocks.h:72
bool is_empty() const
Definition SizesAndBlocks.h:71
int getNTotalScalars() const
Definition SizesAndBlocks.h:84
mat::SizesAndBlocks rows
Definition test.cc:51
mat::SizesAndBlocks cols
Definition test.cc:52
Copyright(c) Emanuel Rubensson 2006.
Definition allocate.cc:39
void freeElements(float *ptr)
Definition allocate.cc:49
T * allocateElements(int n)
Definition allocate.h:42