Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

linalg_abstract.h File Reference

This file is the bottom of the LinAlg include hierarchy. More...

#include <complex>
#include <iostream>

Include dependency graph for linalg_abstract.h:

This graph shows which files directly or indirectly include this file:


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...


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.


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".


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".


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.

Detailed Description

This file is the bottom of the LinAlg include hierarchy.

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].

Generated on Wed Jun 14 22:25:27 2006 for linalg by  doxygen 1.4.4