#include <fmatrix.hh>
Matrices represent linear maps from a vector space V to a vector space W. This class represents such a linear map by storing a two-dimensional array of numbers of a given field type K. The number of rows and columns is given at compile time.
Public Types | |
enum | { blocklevel = 1 } |
We are at the leaf of the block recursion. More... | |
enum | { rows = n, cols = m } |
export size More... | |
typedef K | field_type |
export the type representing the field | |
typedef K | block_type |
export the type representing the components | |
typedef std::size_t | size_type |
The type used for the index access and size operations. | |
typedef FieldVector< K, m > | row_type |
Each row is implemented by a field vector. | |
typedef FieldIterator < FieldMatrix< K, n, m > , row_type > | Iterator |
Iterator class for sequential access. | |
typedef Iterator | iterator |
typedef for stl compliant access | |
typedef Iterator | RowIterator |
rename the iterators for easier access | |
typedef row_type::Iterator | ColIterator |
rename the iterators for easier access | |
typedef FieldIterator< const FieldMatrix< K, n, m >, const row_type > | ConstIterator |
Iterator class for sequential access. | |
typedef ConstIterator | const_iterator |
typedef for stl compliant access | |
typedef ConstIterator | ConstRowIterator |
rename the iterators for easier access | |
typedef row_type::ConstIterator | ConstColIterator |
rename the iterators for easier access | |
Public Member Functions | |
FieldMatrix () | |
Default constructor. | |
FieldMatrix (const K &k) | |
Constructor initializing the whole matrix with a scalar. | |
row_type & | operator[] (size_type i) |
random access to the rows | |
const row_type & | operator[] (size_type i) const |
same for read only access | |
Iterator | begin () |
begin iterator | |
Iterator | end () |
end iterator | |
Iterator | rbegin () |
begin iterator | |
Iterator | rend () |
end iterator | |
ConstIterator | begin () const |
begin iterator | |
ConstIterator | end () const |
end iterator | |
ConstIterator | rbegin () const |
begin iterator | |
ConstIterator | rend () const |
end iterator | |
FieldMatrix & | operator+= (const FieldMatrix &y) |
vector space addition | |
FieldMatrix & | operator-= (const FieldMatrix &y) |
vector space subtraction | |
FieldMatrix & | operator*= (const K &k) |
vector space multiplication with scalar | |
FieldMatrix & | operator/= (const K &k) |
vector space division by scalar | |
FieldMatrix & | axpy (const K &k, const FieldMatrix &y) |
vector space axpy operation (*this += k y) | |
template<class X, class Y> | |
void | mv (const X &x, Y &y) const |
y = A x | |
template<class X, class Y> | |
void | umv (const X &x, Y &y) const |
y += A x | |
template<class X, class Y> | |
void | umtv (const X &x, Y &y) const |
y += A^T x | |
template<class X, class Y> | |
void | umhv (const X &x, Y &y) const |
y += A^H x | |
template<class X, class Y> | |
void | mmv (const X &x, Y &y) const |
y -= A x | |
template<class X, class Y> | |
void | mmtv (const X &x, Y &y) const |
y -= A^T x | |
template<class X, class Y> | |
void | mmhv (const X &x, Y &y) const |
y -= A^H x | |
template<class X, class Y> | |
void | usmv (const K &alpha, const X &x, Y &y) const |
y += alpha A x | |
template<class X, class Y> | |
void | usmtv (const K &alpha, const X &x, Y &y) const |
y += alpha A^T x | |
template<class X, class Y> | |
void | usmhv (const K &alpha, const X &x, Y &y) const |
y += alpha A^H x | |
double | frobenius_norm () const |
frobenius norm: sqrt(sum over squared values of entries) | |
double | frobenius_norm2 () const |
square of frobenius norm, need for block recursion | |
double | infinity_norm () const |
infinity norm (row sum norm, how to generalize for blocks?) | |
double | infinity_norm_real () const |
simplified infinity norm (uses Manhattan norm for complex values) | |
template<class V> | |
void | solve (V &x, const V &b) const |
Solve system A x = b. | |
void | invert () |
Compute inverse. | |
K | determinant () const |
calculates the determinant of this matrix | |
FieldMatrix & | leftmultiply (const FieldMatrix< K, n, n > &M) |
Multiplies M from the left to this matrix. | |
FieldMatrix & | rightmultiply (const FieldMatrix< K, m, m > &M) |
Multiplies M from the right to this matrix. | |
size_type | N () const |
number of blocks in row direction | |
size_type | M () const |
number of blocks in column direction | |
bool | exists (size_type i, size_type j) const |
return true when (i,j) is in pattern | |
Friends | |
std::ostream & | operator<< (std::ostream &s, const FieldMatrix< K, n, m > &a) |
Sends the matrix to an output stream. |
anonymous enum |
anonymous enum |