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

Functions internal to LinAlg
[LinAlg Internals]

Collaboration diagram for Functions internal to LinAlg:

These functions take counterintuitive parameter lists and do math stuff. They get called by user-level routines. More...

Classes

class  FlexibleTable< T >
 FlexibleTable<T> is intended for reading a table of columnar data from a file. More...

Functions

template<typename T>
size_t StringToVector (std::vector< T > &vec, const std::string line, size_t size_guess)
 Reads a string into a vector<T> (ignoring [,], and #-commented lines!) and return number of items read. Used by FlexibleTable.
std::istream & eatwhite (std::istream &input)
 Fast-forward a stream pointer past all whitespace. Used by FlexibleTable.
template<class T>
std::istream & ReadComplex (std::istream &input, std::complex< T > &Z)
 Reads a complex number from a stream, and stores it in Z. Used by FlexibleTable.
template<class T>
std::complex< T > BuildComplex (T *real, bool *iflag, bool *negflag)
 Turns real into {+1,-1,+I,-I}*real, depending on flags. Used by FlexibleTable.
template<class T>
std::ostream & PrettyOutput (std::ostream &os, const T &var)
 PrettyOutput outputs a variable of type T to a stream; defaults to <<, but can be specialized, e.g. for std::complex<T>. Used by FlexibleTable.
template<class T>
std::ostream & PrettyOutput (std::ostream &output, const std::complex< T > &Z)
 (Template specialization) Prints a std::complex<T> to a stream, in "ai+b" form.
bool internalEigenFactor (DenseMatrix< complex > *matrix, DenseMatrix< complex > *L_ev, DenseMatrix< complex > *R_ev, DenseVector< complex > *evals)
 Private (internal) routine that interfaces to LAPACK complex eigenfactoring routines.
bool internalEigenFactor (DenseMatrix< double > *matrix, DenseMatrix< complex > *L_ev, DenseMatrix< complex > *R_ev, DenseVector< complex > *evals)
 Private (internal) routine that interfaces to LAPACK double eigenfactoring routines.
bool internalSymmetricEigenFactor (DenseMatrix< double > *matrix, DenseMatrix< double > *ev, DenseVector< double > *evals)
 Private (internal) routine that interfaces to LAPACK Hermitian-complex eigenfactoring routines.
bool internalHermitianEigenFactor (DenseMatrix< complex > *matrix, DenseMatrix< complex > *ev, DenseVector< double > *evals)
 Private (internal) routine that interfaces to LAPACK symmetric-double eigenfactoring routines.
int c_zgeev (char *jobvl, char *jobvr, integer n, doublecomplex *a, integer lda, doublecomplex *w, doublecomplex *vl, integer ldvl, doublecomplex *vr, integer ldvr, doublecomplex *work, integer lwork, doublereal *rwork, integer *info)
 C interface to the LAPACK routine ZGEEV, which eigenfactors general complex matrices.
int c_dgeev (char *jobvl, char *jobvr, integer n, doublereal *a, integer lda, doublereal *wr, doublereal *wi, doublereal *vl, integer ldvl, doublereal *vr, integer ldvr, doublereal *work, integer lwork, integer *info)
 C interface to the LAPACK routine DGEEV, which eigenfactors nonsymmmetric double matrices.
int c_dsyev (char *jobz, char *uplo, integer n, doublereal *a, integer lda, doublereal *w, doublereal *work, integer lwork, integer *info)
 C interface to the LAPACK routine DSYEV, which eigenfactors real symmetric matrices.
int c_zheev (char *jobz, char *uplo, integer n, doublecomplex *a, integer lda, doublereal *w, doublecomplex *work, integer lwork, doublereal *rwork, integer *info)
 C interface to the LAPACK routine ZHEEV, which eigenfactors Hermitian complex matrices.
int c_dpotrf (char *uplo, integer n, doublereal *a, integer lda, integer *info)
 C interface to the LAPACK routine DPOTRF, which Cholesky factorizes real SPD matrices.
int c_zpotrf (char *uplo, integer n, doublecomplex *a, integer lda, integer *info)
 C interface to the LAPACK routine ZPOTRF, which Cholesky factorizes complex HPD matrices.

Detailed Description

These functions take counterintuitive parameter lists and do math stuff. They get called by user-level routines.


Function Documentation

template<typename T>
size_t StringToVector std::vector< T > &  vec,
const std::string  line,
size_t  size_guess
 

Reads a string into a vector<T> (ignoring [,], and #-commented lines!) and return number of items read. Used by FlexibleTable.

A good guess at the number of elements (size_guess) will speed this method up substantially, since otherwise it has to increase the vector's size each time it finds a new element.

template<class T>
std::istream & ReadComplex std::istream &  input,
std::complex< T > &  Z
 

Reads a complex number from a stream, and stores it in Z. Used by FlexibleTable.

ReadComplex essentially enhances operator>>(std::istream&, std::complex<T>), although if it gets the right input, "(a,b)", it calls operator>>. It adds the ability to parse "ai+b" and "a+bi" (with full negative generality), to the input mechanism. Complex input numbers must be contiguous -- "a + bi" is not permitted, and will be read as 2 numbers. Format is EITHER:

  • "{space}(<T>,<T>)"
  • "{space}[+,-,]<T>[i,I,][+,-]<T>[i,I,]"

If and only if EXTRAWHITE is defined, it can be:

  • "{space}[+,-,]<T>{space}[i,I,]{space}[+,-]{space}<T>{space}[i,I,]"

However, this will not generally work -- consider the stream "2 -3i -4". There are three ways to interpret this: {2, -3i, -4}, {2-3i, -4}, {2, -3i-4}. The only way to uniquely parse a stream of complex numbers seems to be if the numbers themselves are contiguous strings -- "3+i" instead of "3 + i".

bool internalEigenFactor DenseMatrix< complex > *  matrix,
DenseMatrix< complex > *  L_ev,
DenseMatrix< complex > *  R_ev,
DenseVector< complex > *  evals
 

Private (internal) routine that interfaces to LAPACK complex eigenfactoring routines.

The output is controlled by the pointers supplied -- a NULL pointer for any of the outputs implies that output should not be generated.

bool internalEigenFactor DenseMatrix< double > *  matrix,
DenseMatrix< complex > *  L_ev,
DenseMatrix< complex > *  R_ev,
DenseVector< complex > *  evals
 

Private (internal) routine that interfaces to LAPACK double eigenfactoring routines.

The output is controlled by the pointers supplied -- a NULL pointer for any of the outputs implies that output should not be generated.

bool internalSymmetricEigenFactor DenseMatrix< double > *  matrix,
DenseMatrix< double > *  ev,
DenseVector< double > *  evals
 

Private (internal) routine that interfaces to LAPACK Hermitian-complex eigenfactoring routines.

The output is controlled by the pointers supplied -- a NULL pointer for any of the outputs implies that output should not be generated.

bool internalHermitianEigenFactor DenseMatrix< complex > *  matrix,
DenseMatrix< complex > *  ev,
DenseVector< double > *  evals
 

Private (internal) routine that interfaces to LAPACK symmetric-double eigenfactoring routines.

The output is controlled by the pointers supplied -- a NULL pointer for any of the outputs implies that output should not be generated.


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