#include <complex>
#include <iostream>
Include dependency graph for linalg_abstract.h:
This graph shows which files directly or indirectly include this file:
Classes | |
class | linalg_traits< T > |
Helper class defining relationships between numerical types; e.g. of what type is norm(T)? More... | |
struct | interval |
A class to define index-sets, specifically for subvectors and submatrices. More... | |
class | Vector< T > |
The abstract base class for vectors; provides size and element access. More... | |
class | Matrix< T > |
The abstract base class for matrices; provides size/shape and element access. More... | |
Typedefs | |
typedef std::complex< double > | complex |
A convenient synonym for std::complex<double>, complex is one of LinAlg's most important datatypes. | |
typedef unsigned int | itype |
The type of all index variables that run from 0 to N. | |
Enumerations | |
enum | MatrixStorageType { Dense, UpperTri, LowerTri, Banded, Sparse, PermScale, Other } |
An enumerated list of all the types of matrices we expect to support (someday), including "other". | |
Functions | |
void | ThrowError (char *errstring, bool fatal=false) |
A routine for easily printing an error string, and aborting if necessary. | |
void | Profile (char *methodname, int p1, int p2, double p3) |
Prints methodname, p1, p2, and p3 to "profile.log". | |
Variables | |
std::ofstream * | ProfileStream |
Output stream, used by Profile(), which opens it to "profile.log". | |
const complex | I |
Defined in linalg.cpp as std::complex<double>(0,1). | |
const double | Pi |
Defined in linalg.cpp as M_PI. |
It defines two abstract linear algebra classes (Vector and Matrix), and some helper classes.
The abstract Vector<T> class provides the interface that a Vector must have:
The abstract Matrix<T> class provides the interface that a Matrix must have:
We define three simple types:
We define two helper classes.
Class linalg_traits<T> is a fundamental class containing typedefs which define (for various datatypes T) how the data type behaves under: Conjugation, Norm, Abs, Eigenvalue, Eigenvector. By default, these are all the same as the original type, but (for instance), (1) real matrices have complex eigenvalues, and (2) complex numbers have real norms.
Class interval is intended to simplify definition of subvectors and submatrices. It defines an interval of integers [start,end]. It can be constructed from a single integer: interval(i) = [i,i]. It can also be constructed from a pair of integers: interval(i,j) = [i,j].