MatrixNonsing inline non-member operation functions

Classes

class  AbstractLinAlgPack::MatrixNonsing::SingularMatrix
 This exception will be thrown if it turns out at runtime that the matrix is numerically singular. More...

Friends



void AbstractLinAlgPack::MatrixNonsing::V_InvMtV (VectorMutable *v_lhs, const MatrixNonsing &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const Vector &v_rhs2)
 
void AbstractLinAlgPack::MatrixNonsing::V_InvMtV (VectorMutable *v_lhs, const MatrixNonsing &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const SpVectorSlice &sv_rhs2)
 
value_type AbstractLinAlgPack::MatrixNonsing::transVtInvMtV (const Vector &v_rhs1, const MatrixNonsing &M_rhs2, BLAS_Cpp::Transp trans_rhs2, const Vector &v_rhs3)
 
value_type AbstractLinAlgPack::MatrixNonsing::transVtInvMtV (const SpVectorSlice &sv_rhs1, const MatrixNonsing &M_rhs2, BLAS_Cpp::Transp trans_rhs2, const SpVectorSlice &sv_rhs3)
 
void AbstractLinAlgPack::MatrixNonsing::M_StInvMtM (MatrixOp *m_lhs, value_type alpha, const MatrixNonsing &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const MatrixOp &mwo_rhs2, BLAS_Cpp::Transp trans_rhs2)
 
void AbstractLinAlgPack::MatrixNonsing::M_StMtInvM (MatrixOp *m_lhs, value_type alpha, const MatrixOp &mwo_rhs1, BLAS_Cpp::Transp trans_rhs1, const MatrixNonsing &M_rhs2, BLAS_Cpp::Transp trans_rhs2)
 

Clone



virtual mat_mns_mut_ptr_t AbstractLinAlgPack::MatrixNonsing::clone_mns ()
 Clone the non-const matrix object (if supported).
virtual mat_mns_ptr_t AbstractLinAlgPack::MatrixNonsing::clone_mns () const
 Clone the const matrix object (if supported).

Level-2 BLAS



virtual void AbstractLinAlgPack::MatrixNonsing::V_InvMtV (VectorMutable *v_lhs, BLAS_Cpp::Transp trans_rhs1, const Vector &v_rhs2) const =0
 v_lhs = inv(op(M_rhs1)) * vs_rhs2
virtual void AbstractLinAlgPack::MatrixNonsing::V_InvMtV (VectorMutable *v_lhs, BLAS_Cpp::Transp trans_rhs1, const SpVectorSlice &sv_rhs2) const
 v_lhs = inv(op(M_rhs1)) * sv_rhs2
virtual value_type AbstractLinAlgPack::MatrixNonsing::transVtInvMtV (const Vector &v_rhs1, BLAS_Cpp::Transp trans_rhs2, const Vector &v_rhs3) const
 result = vs_rhs1' * inv(op(M_rhs2)) * vs_rhs3
virtual value_type AbstractLinAlgPack::MatrixNonsing::transVtInvMtV (const SpVectorSlice &sv_rhs1, BLAS_Cpp::Transp trans_rhs2, const SpVectorSlice &sv_rhs3) const
 result = sv_rhs1' * inv(op(M_rhs2)) * sv_rhs3

Level-3 BLAS



virtual void AbstractLinAlgPack::MatrixNonsing::M_StInvMtM (MatrixOp *m_lhs, value_type alpha, BLAS_Cpp::Transp trans_rhs1, const MatrixOp &mwo_rhs2, BLAS_Cpp::Transp trans_rhs2) const
 m_lhs = alpha * inv(op(M_rhs1)) * op(mwo_rhs2) (right).
virtual void AbstractLinAlgPack::MatrixNonsing::M_StMtInvM (MatrixOp *m_lhs, value_type alpha, const MatrixOp &mwo_rhs1, BLAS_Cpp::Transp trans_rhs1, BLAS_Cpp::Transp trans_rhs2) const
 m_lhs = alpha * op(mwo_rhs1) * inv(op(M_rhs2)) (left).

Level-2 BLAS



void AbstractLinAlgPack::V_InvMtV (VectorMutable *v_lhs, const MatrixNonsing &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const Vector &v_rhs2)
 v_lhs = inv(op(M_rhs1)) * v_rhs2
void AbstractLinAlgPack::V_InvMtV (VectorMutable *v_lhs, const MatrixNonsing &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const SpVectorSlice &sv_rhs2)
 v_lhs = inv(op(M_rhs1)) * sv_rhs2
value_type AbstractLinAlgPack::transVtInvMtV (const Vector &v_rhs1, const MatrixNonsing &M_rhs2, BLAS_Cpp::Transp trans_rhs2, const Vector &v_rhs3)
 result = v_rhs1' * inv(op(M_rhs2)) * v_rhs3
value_type AbstractLinAlgPack::transVtInvMtV (const SpVectorSlice &sv_rhs1, const MatrixNonsing &M_rhs2, BLAS_Cpp::Transp trans_rhs2, const SpVectorSlice &sv_rhs3)
 result = sv_rhs1' * inv(op(M_rhs2)) * sv_rhs3
void AbstractLinAlgPack::Vp_StMtV (VectorMutable *v_lhs, value_type alpha, const MatrixOp &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const Vector &v_rhs2, value_type beta=1.0)
 v_lhs = alpha * op(M_rhs1) * v_rhs2 + beta * v_lhs (BLAS xGEMV)
void AbstractLinAlgPack::Vp_StMtV (VectorMutable *v_lhs, value_type alpha, const MatrixOp &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const SpVectorSlice &sv_rhs2, value_type beta=1.0)
 v_lhs = alpha * op(M_rhs1) * sv_rhs2 + beta * v_lhs (BLAS xGEMV)
void AbstractLinAlgPack::Vp_StPtMtV (VectorMutable *v_lhs, value_type alpha, const GenPermMatrixSlice &P_rhs1, BLAS_Cpp::Transp P_rhs1_trans, const MatrixOp &M_rhs2, BLAS_Cpp::Transp M_rhs2_trans, const Vector &v_rhs3, value_type beta=1.0)
 v_lhs = alpha * op(P_rhs1) * op(M_rhs2) * v_rhs3 + beta * v_rhs
void AbstractLinAlgPack::Vp_StPtMtV (VectorMutable *v_lhs, value_type alpha, const GenPermMatrixSlice &P_rhs1, BLAS_Cpp::Transp P_rhs1_trans, const MatrixOp &M_rhs2, BLAS_Cpp::Transp M_rhs2_trans, const SpVectorSlice &sv_rhs3, value_type beta=1.0)
 v_lhs = alpha * op(P_rhs1) * op(M_rhs2) * sv_rhs3 + beta * v_rhs
value_type AbstractLinAlgPack::transVtMtV (const Vector &v_rhs1, const MatrixOp &M_rhs2, BLAS_Cpp::Transp trans_rhs2, const Vector &v_rhs3)
 result = v_rhs1' * op(M_rhs2) * v_rhs3
value_type AbstractLinAlgPack::transVtMtV (const SpVectorSlice &sv_rhs1, const MatrixOp &M_rhs2, BLAS_Cpp::Transp trans_rhs2, const SpVectorSlice &sv_rhs3)
 result = sv_rhs1' * op(M_rhs2) * sv_rhs3
void AbstractLinAlgPack::syr2k (const MatrixOp &M, BLAS_Cpp::Transp M_trans, value_type alpha, const GenPermMatrixSlice &P1, BLAS_Cpp::Transp P1_trans, const GenPermMatrixSlice &P2, BLAS_Cpp::Transp P2_trans, value_type beta, MatrixSymOp *symwo_lhs)
 symwo_lhs += alpha*op(P1')*op(M)*op(P2) + alpha*op(P2')*op(M')*op(P1) + beta*symwo_lhs
void AbstractLinAlgPack::V_InvMtV (DVector *v_lhs, const MatrixNonsingSerial &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const DVectorSlice &vs_rhs2)
 v_lhs = inv(op(M_rhs1)) * vs_rhs2
void AbstractLinAlgPack::V_InvMtV (DVectorSlice *vs_lhs, const MatrixNonsingSerial &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const DVectorSlice &vs_rhs2)
 vs_lhs = inv(op(M_rhs1)) * vs_rhs2
void AbstractLinAlgPack::V_InvMtV (DVector *v_lhs, const MatrixNonsingSerial &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const SpVectorSlice &sv_rhs2)
 v_lhs = inv(op(M_rhs1)) * sv_rhs2
void AbstractLinAlgPack::V_InvMtV (DVectorSlice *vs_lhs, const MatrixNonsingSerial &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const SpVectorSlice &sv_rhs2)
 vs_lhs = inv(op(M_rhs1)) * sv_rhs2
value_type AbstractLinAlgPack::transVtInvMtV (const DVectorSlice &vs_rhs1, const MatrixNonsingSerial &M_rhs2, BLAS_Cpp::Transp trans_rhs2, const DVectorSlice &sv_rhs3)
 result = vs_rhs1' * inv(op(M_rhs2)) * vs_rhs3
value_type AbstractLinAlgPack::transVtInvMtV (const SpVectorSlice &sv_rhs1, const MatrixNonsingSerial &M_rhs2, BLAS_Cpp::Transp trans_rhs2, const SpVectorSlice &sv_rhs3)
 result = sv_rhs1' * inv(op(M_rhs2)) * sv_rhs3
void AbstractLinAlgPack::Vp_StMtV (DVectorSlice *vs_lhs, value_type alpha, const MatrixOpSerial &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const DVectorSlice &vs_rhs2, value_type beta=1.0)
 vs_lhs = alpha * op(M_rhs1) * vs_rhs2 + beta * vs_lhs (BLAS xGEMV)
void AbstractLinAlgPack::Vp_StMtV (DVectorSlice *vs_lhs, value_type alpha, const MatrixOpSerial &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const SpVectorSlice &sv_rhs2, value_type beta=1.0)
 vs_lhs = alpha * op(M_rhs1) * sv_rhs2 + beta * vs_lhs (BLAS xGEMV)
void AbstractLinAlgPack::Vp_StPtMtV (DVectorSlice *vs_lhs, value_type alpha, const GenPermMatrixSlice &P_rhs1, BLAS_Cpp::Transp P_rhs1_trans, const MatrixOpSerial &M_rhs2, BLAS_Cpp::Transp M_rhs2_trans, const DVectorSlice &vs_rhs3, value_type beta=1.0)
 vs_lhs = alpha * op(P_rhs1) * op(M_rhs2) * vs_rhs3 + beta * vs_rhs
void AbstractLinAlgPack::Vp_StPtMtV (DVectorSlice *vs_lhs, value_type alpha, const GenPermMatrixSlice &P_rhs1, BLAS_Cpp::Transp P_rhs1_trans, const MatrixOpSerial &M_rhs2, BLAS_Cpp::Transp M_rhs2_trans, const SpVectorSlice &sv_rhs3, value_type beta=1.0)
 vs_lhs = alpha * op(P_rhs1) * op(M_rhs2) * sv_rhs3 + beta * vs_rhs
value_type AbstractLinAlgPack::transVtMtV (const DVectorSlice &vs_rhs1, const MatrixOpSerial &M_rhs2, BLAS_Cpp::Transp trans_rhs2, const DVectorSlice &vs_rhs3)
 result = vs_rhs1' * op(M_rhs2) * vs_rhs3
value_type AbstractLinAlgPack::transVtMtV (const SpVectorSlice &sv_rhs1, const MatrixOpSerial &M_rhs2, BLAS_Cpp::Transp trans_rhs2, const SpVectorSlice &sv_rhs3)
 result = sv_rhs1' * op(M_rhs2) * sv_rhs3

Level-3 BLAS



void AbstractLinAlgPack::M_StInvMtM (MatrixOp *m_lhs, value_type alpha, const MatrixNonsing &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const MatrixOp &mwo_rhs2, BLAS_Cpp::Transp trans_rhs2)
 m_lhs = alpha * inv(op(mwo_rhs1)) * op(mwo_rhs2) (right)
void AbstractLinAlgPack::M_StMtInvM (MatrixOp *m_lhs, value_type alpha, const MatrixOp &mwo_rhs1, BLAS_Cpp::Transp trans_rhs1, const MatrixNonsing &M_rhs2, BLAS_Cpp::Transp trans_rhs2)
 m_lhs = alpha * op(mwo_rhs1) * inv(op(M_rhs2)) (left)
void AbstractLinAlgPack::Mp_StMtM (MatrixOp *mwo_lhs, value_type alpha, const MatrixOp &mwo_rhs1, BLAS_Cpp::Transp trans_rhs1, const MatrixOp &mwo_rhs2, BLAS_Cpp::Transp trans_rhs2, value_type beta=1.0)
 mwo_lhs = alpha * op(mwo_rhs1) * op(mwo_rhs2) + beta * mwo_lhs (right) (xGEMM).
void AbstractLinAlgPack::syrk (const MatrixOp &mwo_rhs, BLAS_Cpp::Transp M_trans, value_type alpha, value_type beta, MatrixSymOp *sym_lhs)
 Perform a rank-k update of a symmetric matrix of the form:
void AbstractLinAlgPack::M_StInvMtM (DMatrix *gm_lhs, value_type alpha, const MatrixNonsingSerial &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const DMatrixSlice &gms_rhs2, BLAS_Cpp::Transp trans_rhs2)
 gm_lhs = alpha * inv(op(M_rhs1)) * op(gms_rhs2) (right)
void AbstractLinAlgPack::M_StInvMtM (DMatrixSlice *gms_lhs, value_type alpha, const MatrixNonsingSerial &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const DMatrixSlice &gms_rhs2, BLAS_Cpp::Transp trans_rhs2)
 gms_lhs = alpha * inv(op(M_rhs1)) * op(gms_rhs2) (right)
void AbstractLinAlgPack::M_StMtInvM (DMatrix *gm_lhs, value_type alpha, const DMatrixSlice &gms_rhs1, BLAS_Cpp::Transp trans_rhs1, const MatrixNonsingSerial &M_rhs2, BLAS_Cpp::Transp trans_rhs2)
 gm_lhs = alpha * op(gms_rhs1) * inv(op(M_rhs2)) (left)
void AbstractLinAlgPack::M_StMtInvM (DMatrixSlice *gms_lhs, value_type alpha, const DMatrixSlice &gms_rhs1, BLAS_Cpp::Transp trans_rhs1, const MatrixNonsingSerial &M_rhs2, BLAS_Cpp::Transp trans_rhs2)
 gms_lhs = alpha * op(gms_rhs1) * inv(op(M_rhs2)) (left)
void AbstractLinAlgPack::M_StInvMtM (DMatrix *gm_lhs, value_type alpha, const MatrixNonsingSerial &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const MatrixOpSerial &mwo_rhs2, BLAS_Cpp::Transp trans_rhs2)
 gm_lhs = alpha * inv(op(M_rhs1)) * op(mwo_rhs2) (right)
void AbstractLinAlgPack::M_StInvMtM (DMatrixSlice *gms_lhs, value_type alpha, const MatrixNonsingSerial &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const MatrixOpSerial &mwo_rhs2, BLAS_Cpp::Transp trans_rhs2)
 gms_lhs = alpha * inv(op(M_rhs1)) * op(mwo_rhs2) (right)
void AbstractLinAlgPack::M_StMtInvM (DMatrix *gm_lhs, value_type alpha, const MatrixOpSerial &mwo_rhs1, BLAS_Cpp::Transp trans_rhs1, const MatrixNonsingSerial &M_rhs2, BLAS_Cpp::Transp trans_rhs2)
 gm_lhs = alpha * op(mwo_rhs1) * inv(op(M_rhs2)) (left)
void AbstractLinAlgPack::M_StMtInvM (DMatrixSlice *gms_lhs, value_type alpha, const MatrixOpSerial &mwo_rhs1, BLAS_Cpp::Transp trans_rhs1, const MatrixNonsingSerial &M_rhs2, BLAS_Cpp::Transp trans_rhs2)
 gms_lhs = alpha * op(mwo_rhs1) * inv(op(M_rhs2)) (left)
void AbstractLinAlgPack::Mp_StMtM (DMatrixSlice *gms_lhs, value_type alpha, const MatrixOpSerial &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const DMatrixSlice &gms_rhs2, BLAS_Cpp::Transp trans_rhs2, value_type beta=1.0)
 gms_lhs = alpha * op(M_rhs1) * op(gms_rhs2) + beta * gms_lhs (right) (xGEMM)
void AbstractLinAlgPack::Mp_StMtM (DMatrixSlice *gms_lhs, value_type alpha, const DMatrixSlice &gms_rhs1, BLAS_Cpp::Transp trans_rhs1, const MatrixOpSerial &M_rhs2, BLAS_Cpp::Transp trans_rhs2, value_type beta=1.0)
 gms_lhs = alpha * op(gms_rhs1) * op(M_rhs2) + beta * gms_lhs (left) (xGEMM)
void AbstractLinAlgPack::Mp_StMtM (DMatrixSlice *gms_lhs, value_type alpha, const MatrixOpSerial &mwo_rhs1, BLAS_Cpp::Transp trans_rhs1, const MatrixOpSerial &gms_rhs2, BLAS_Cpp::Transp trans_rhs2, value_type beta=1.0)
 gms_lhs = alpha * op(mwo_rhs1) * op(mwo_rhs2) + beta * gms_lhs (right) (xGEMM)
void AbstractLinAlgPack::Mp_StMtM (DMatrixSlice *gms_lhs, value_type alpha, const MatrixOpSerial &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const DMatrixSliceSym &sym_rhs2, BLAS_Cpp::Transp trans_rhs2, value_type beta=1.0)
 gms_lhs = alpha * op(M_rhs1) * op(sym_rhs2) + beta * gms_lhs (right) (xSYMM)
void AbstractLinAlgPack::Mp_StMtM (DMatrixSlice *gms_lhs, value_type alpha, const DMatrixSliceSym &sym_rhs1, BLAS_Cpp::Transp trans_rhs1, const MatrixOpSerial &M_rhs2, BLAS_Cpp::Transp trans_rhs2, value_type beta=1.0)
 gms_lhs = alpha * op(sym_rhs1) * op(M_rhs2) + beta * gms_lhs (left) (xSYMM)
void AbstractLinAlgPack::Mp_StMtM (DMatrixSlice *gms_lhs, value_type alpha, const MatrixOpSerial &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const DMatrixSliceTri &tri_rhs2, BLAS_Cpp::Transp trans_rhs2, value_type beta=1.0)
 gms_lhs = alpha * op(M_rhs1) * op(tri_rhs2) + beta * gms_lhs (right) (xTRMM)
void AbstractLinAlgPack::Mp_StMtM (DMatrixSlice *gms_lhs, value_type alpha, const DMatrixSliceTri &tri_rhs1, BLAS_Cpp::Transp trans_rhs1, const MatrixOpSerial &M_rhs2, BLAS_Cpp::Transp trans_rhs2, value_type beta=1.0)
 gms_lhs = alpha * op(tri_rhs1) * op(M_rhs2) + beta * gms_lhs (left) (xTRMM)

Detailed Description

that call virtual functions.

These allow nonmember functions to act like virtual functions and thereby allow the same syntax as in DenseLinAlgPack.


Function Documentation

MatrixNonsing::mat_mns_mut_ptr_t AbstractLinAlgPack::MatrixNonsing::clone_mns (  )  [virtual, inherited]

Clone the non-const matrix object (if supported).

The default implementation returns NULL which is perfectly acceptable. A matrix object is not required to return a non-NULL value but almost every good matrix implementation will.

Reimplemented in AbstractLinAlgPack::MatrixOpNonsing, AbstractLinAlgPack::MatrixSymNonsing, AbstractLinAlgPack::MatrixSymOpNonsing, and AbstractLinAlgPack::MatrixSymOpNonsingSerial.

Definition at line 45 of file AbstractLinAlgPack_MatrixNonsing.cpp.

MatrixNonsing::mat_mns_ptr_t AbstractLinAlgPack::MatrixNonsing::clone_mns (  )  const [virtual, inherited]

Clone the const matrix object (if supported).

The behavior of this method is the same as for the non-const version above except it returns a smart pointer to a const matrix object.

The default implementation of this method will call the non-const version and then cast to constant.

Reimplemented in AbstractLinAlgPack::MatrixOpNonsing, AbstractLinAlgPack::MatrixSymNonsing, AbstractLinAlgPack::MatrixSymOpNonsing, and AbstractLinAlgPack::MatrixSymOpNonsingSerial.

Definition at line 51 of file AbstractLinAlgPack_MatrixNonsing.cpp.

virtual void AbstractLinAlgPack::MatrixNonsing::V_InvMtV ( VectorMutable v_lhs,
BLAS_Cpp::Transp  trans_rhs1,
const Vector v_rhs2 
) const [pure virtual, inherited]
void AbstractLinAlgPack::MatrixNonsing::V_InvMtV ( VectorMutable v_lhs,
BLAS_Cpp::Transp  trans_rhs1,
const SpVectorSlice sv_rhs2 
) const [virtual, inherited]

v_lhs = inv(op(M_rhs1)) * sv_rhs2

Definition at line 58 of file AbstractLinAlgPack_MatrixNonsing.cpp.

value_type AbstractLinAlgPack::MatrixNonsing::transVtInvMtV ( const Vector v_rhs1,
BLAS_Cpp::Transp  trans_rhs2,
const Vector v_rhs3 
) const [virtual, inherited]

result = vs_rhs1' * inv(op(M_rhs2)) * vs_rhs3

Reimplemented in AbstractLinAlgPack::MatrixOpNonsingAggr, and AbstractLinAlgPack::MatrixNonsingSerial.

Definition at line 76 of file AbstractLinAlgPack_MatrixNonsing.cpp.

value_type AbstractLinAlgPack::MatrixNonsing::transVtInvMtV ( const SpVectorSlice sv_rhs1,
BLAS_Cpp::Transp  trans_rhs2,
const SpVectorSlice sv_rhs3 
) const [virtual, inherited]

result = sv_rhs1' * inv(op(M_rhs2)) * sv_rhs3

Definition at line 89 of file AbstractLinAlgPack_MatrixNonsing.cpp.

void AbstractLinAlgPack::MatrixNonsing::M_StInvMtM ( MatrixOp m_lhs,
value_type  alpha,
BLAS_Cpp::Transp  trans_rhs1,
const MatrixOp mwo_rhs2,
BLAS_Cpp::Transp  trans_rhs2 
) const [virtual, inherited]

m_lhs = alpha * inv(op(M_rhs1)) * op(mwo_rhs2) (right).

The default implemention performs a dynamic_cast<MultiVectorMutable>(m_lhs). If this dynamic_cast<> does not return NULL , then this operation is implemented in terms of this->V_InvMtV() one row or column at a time. If this dynamic_cast<> returns false, then this default implementation has no choice but to throw an exception (std::invalid_argument).

Reimplemented in AbstractLinAlgPack::MatrixOpNonsingAggr, AbstractLinAlgPack::MatrixNonsingSerial, and AbstractLinAlgPack::MatrixOpNonsingThyra.

Definition at line 104 of file AbstractLinAlgPack_MatrixNonsing.cpp.

void AbstractLinAlgPack::MatrixNonsing::M_StMtInvM ( MatrixOp m_lhs,
value_type  alpha,
const MatrixOp mwo_rhs1,
BLAS_Cpp::Transp  trans_rhs1,
BLAS_Cpp::Transp  trans_rhs2 
) const [virtual, inherited]

m_lhs = alpha * op(mwo_rhs1) * inv(op(M_rhs2)) (left).

The default implemention performs a dynamic_cast<MultiVectorMutable>(m_lhs). If this dynamic_cast<> does not return NULL , then this operation is implemented in terms of this->V_InvMtV() one row or column at a time. If this dynamic_cast<> returns false, then this default implementation has no choice but to throw an exception (std::invalid_argument).

Reimplemented in AbstractLinAlgPack::MatrixOpNonsingAggr, and AbstractLinAlgPack::MatrixNonsingSerial.

Definition at line 159 of file AbstractLinAlgPack_MatrixNonsing.cpp.

void AbstractLinAlgPack::V_InvMtV ( VectorMutable *  v_lhs,
const MatrixNonsing &  M_rhs1,
BLAS_Cpp::Transp  trans_rhs1,
const Vector v_rhs2 
) [inline]

v_lhs = inv(op(M_rhs1)) * v_rhs2

Definition at line 236 of file AbstractLinAlgPack_MatrixNonsing.hpp.

void AbstractLinAlgPack::V_InvMtV ( VectorMutable *  v_lhs,
const MatrixNonsing &  M_rhs1,
BLAS_Cpp::Transp  trans_rhs1,
const SpVectorSlice &  sv_rhs2 
) [inline]

v_lhs = inv(op(M_rhs1)) * sv_rhs2

Definition at line 244 of file AbstractLinAlgPack_MatrixNonsing.hpp.

value_type AbstractLinAlgPack::transVtInvMtV ( const Vector v_rhs1,
const MatrixNonsing &  M_rhs2,
BLAS_Cpp::Transp  trans_rhs2,
const Vector v_rhs3 
) [inline]

result = v_rhs1' * inv(op(M_rhs2)) * v_rhs3

Definition at line 252 of file AbstractLinAlgPack_MatrixNonsing.hpp.

value_type AbstractLinAlgPack::transVtInvMtV ( const SpVectorSlice &  sv_rhs1,
const MatrixNonsing &  M_rhs2,
BLAS_Cpp::Transp  trans_rhs2,
const SpVectorSlice &  sv_rhs3 
) [inline]

result = sv_rhs1' * inv(op(M_rhs2)) * sv_rhs3

Definition at line 260 of file AbstractLinAlgPack_MatrixNonsing.hpp.

void AbstractLinAlgPack::M_StInvMtM ( MatrixOp *  m_lhs,
value_type  alpha,
const MatrixNonsing &  M_rhs1,
BLAS_Cpp::Transp  trans_rhs1,
const MatrixOp &  mwo_rhs2,
BLAS_Cpp::Transp  trans_rhs2 
) [inline]

m_lhs = alpha * inv(op(mwo_rhs1)) * op(mwo_rhs2) (right)

Definition at line 274 of file AbstractLinAlgPack_MatrixNonsing.hpp.

void AbstractLinAlgPack::M_StMtInvM ( MatrixOp *  m_lhs,
value_type  alpha,
const MatrixOp &  mwo_rhs1,
BLAS_Cpp::Transp  trans_rhs1,
const MatrixNonsing &  M_rhs2,
BLAS_Cpp::Transp  trans_rhs2 
) [inline]

m_lhs = alpha * op(mwo_rhs1) * inv(op(M_rhs2)) (left)

Definition at line 283 of file AbstractLinAlgPack_MatrixNonsing.hpp.

void AbstractLinAlgPack::Vp_StMtV ( VectorMutable *  v_lhs,
value_type  alpha,
const MatrixOp &  M_rhs1,
BLAS_Cpp::Transp  trans_rhs1,
const Vector v_rhs2,
value_type  beta = 1.0 
) [inline]

v_lhs = alpha * op(M_rhs1) * v_rhs2 + beta * v_lhs (BLAS xGEMV)

Definition at line 844 of file AbstractLinAlgPack_MatrixOp.hpp.

void AbstractLinAlgPack::Vp_StMtV ( VectorMutable *  v_lhs,
value_type  alpha,
const MatrixOp &  M_rhs1,
BLAS_Cpp::Transp  trans_rhs1,
const SpVectorSlice &  sv_rhs2,
value_type  beta = 1.0 
) [inline]

v_lhs = alpha * op(M_rhs1) * sv_rhs2 + beta * v_lhs (BLAS xGEMV)

Definition at line 853 of file AbstractLinAlgPack_MatrixOp.hpp.

void AbstractLinAlgPack::Vp_StPtMtV ( VectorMutable *  v_lhs,
value_type  alpha,
const GenPermMatrixSlice &  P_rhs1,
BLAS_Cpp::Transp  P_rhs1_trans,
const MatrixOp &  M_rhs2,
BLAS_Cpp::Transp  M_rhs2_trans,
const Vector v_rhs3,
value_type  beta = 1.0 
) [inline]

v_lhs = alpha * op(P_rhs1) * op(M_rhs2) * v_rhs3 + beta * v_rhs

Definition at line 862 of file AbstractLinAlgPack_MatrixOp.hpp.

void AbstractLinAlgPack::Vp_StPtMtV ( VectorMutable *  v_lhs,
value_type  alpha,
const GenPermMatrixSlice &  P_rhs1,
BLAS_Cpp::Transp  P_rhs1_trans,
const MatrixOp &  M_rhs2,
BLAS_Cpp::Transp  M_rhs2_trans,
const SpVectorSlice &  sv_rhs3,
value_type  beta = 1.0 
) [inline]

v_lhs = alpha * op(P_rhs1) * op(M_rhs2) * sv_rhs3 + beta * v_rhs

Definition at line 873 of file AbstractLinAlgPack_MatrixOp.hpp.

value_type AbstractLinAlgPack::transVtMtV ( const Vector v_rhs1,
const MatrixOp &  M_rhs2,
BLAS_Cpp::Transp  trans_rhs2,
const Vector v_rhs3 
) [inline]

result = v_rhs1' * op(M_rhs2) * v_rhs3

Definition at line 884 of file AbstractLinAlgPack_MatrixOp.hpp.

value_type AbstractLinAlgPack::transVtMtV ( const SpVectorSlice &  sv_rhs1,
const MatrixOp &  M_rhs2,
BLAS_Cpp::Transp  trans_rhs2,
const SpVectorSlice &  sv_rhs3 
) [inline]

result = sv_rhs1' * op(M_rhs2) * sv_rhs3

Definition at line 893 of file AbstractLinAlgPack_MatrixOp.hpp.

void AbstractLinAlgPack::syr2k ( const MatrixOp &  M,
BLAS_Cpp::Transp  M_trans,
value_type  alpha,
const GenPermMatrixSlice &  P1,
BLAS_Cpp::Transp  P1_trans,
const GenPermMatrixSlice &  P2,
BLAS_Cpp::Transp  P2_trans,
value_type  beta,
MatrixSymOp *  symwo_lhs 
) [inline]

symwo_lhs += alpha*op(P1')*op(M)*op(P2) + alpha*op(P2')*op(M')*op(P1) + beta*symwo_lhs

Definition at line 902 of file AbstractLinAlgPack_MatrixOp.hpp.

void AbstractLinAlgPack::Mp_StMtM ( MatrixOp *  mwo_lhs,
value_type  alpha,
const MatrixOp &  mwo_rhs1,
BLAS_Cpp::Transp  trans_rhs1,
const MatrixOp &  mwo_rhs2,
BLAS_Cpp::Transp  trans_rhs2,
value_type  beta = 1.0 
)

mwo_lhs = alpha * op(mwo_rhs1) * op(mwo_rhs2) + beta * mwo_lhs (right) (xGEMM).

This method first calls mwo_rhs1.Mp_StMtM(...) to perform the opeation. If mwo_rhs1.Mp_StMtM(...) returns false, then mwo_rhs2.Mp_StMtM(...) is called. If mwo_rhs2.Mp_StMtM(...) returns false, then mwo_lhs.Mp_StMtM(...) is called.

As a last resort, the function attempts to cast dynamic_cast<MultiVectorMutable*>(mwo_lhs). If this dynamic cast fails, the this function throws an exception. Otherwise, the operation is implemented in terms of Vp_StMtV().

Definition at line 566 of file AbstractLinAlgPack_MatrixOp.cpp.

void AbstractLinAlgPack::syrk ( const MatrixOp &  mwo_rhs,
BLAS_Cpp::Transp  M_trans,
value_type  alpha,
value_type  beta,
MatrixSymOp *  sym_lhs 
)

Perform a rank-k update of a symmetric matrix of the form:

symwo_lhs += alpha*op(mwo_rhs)*op(mwo_rhs') + beta*symwo_lhs

The default implementation returns false and does nothing.

Definition at line 618 of file AbstractLinAlgPack_MatrixOp.cpp.

void AbstractLinAlgPack::V_InvMtV ( DVector v_lhs,
const MatrixNonsingSerial &  M_rhs1,
BLAS_Cpp::Transp  trans_rhs1,
const DVectorSlice &  vs_rhs2 
) [inline]

v_lhs = inv(op(M_rhs1)) * vs_rhs2

Definition at line 171 of file AbstractLinAlgPack_MatrixNonsingSerial.hpp.

void AbstractLinAlgPack::V_InvMtV ( DVectorSlice *  vs_lhs,
const MatrixNonsingSerial &  M_rhs1,
BLAS_Cpp::Transp  trans_rhs1,
const DVectorSlice &  vs_rhs2 
) [inline]

vs_lhs = inv(op(M_rhs1)) * vs_rhs2

Definition at line 178 of file AbstractLinAlgPack_MatrixNonsingSerial.hpp.

void AbstractLinAlgPack::V_InvMtV ( DVector v_lhs,
const MatrixNonsingSerial &  M_rhs1,
BLAS_Cpp::Transp  trans_rhs1,
const SpVectorSlice &  sv_rhs2 
) [inline]

v_lhs = inv(op(M_rhs1)) * sv_rhs2

Definition at line 185 of file AbstractLinAlgPack_MatrixNonsingSerial.hpp.

void AbstractLinAlgPack::V_InvMtV ( DVectorSlice *  vs_lhs,
const MatrixNonsingSerial &  M_rhs1,
BLAS_Cpp::Transp  trans_rhs1,
const SpVectorSlice &  sv_rhs2 
) [inline]

vs_lhs = inv(op(M_rhs1)) * sv_rhs2

Definition at line 192 of file AbstractLinAlgPack_MatrixNonsingSerial.hpp.

value_type AbstractLinAlgPack::transVtInvMtV ( const DVectorSlice &  vs_rhs1,
const MatrixNonsingSerial &  M_rhs2,
BLAS_Cpp::Transp  trans_rhs2,
const DVectorSlice &  sv_rhs3 
) [inline]

result = vs_rhs1' * inv(op(M_rhs2)) * vs_rhs3

Definition at line 199 of file AbstractLinAlgPack_MatrixNonsingSerial.hpp.

value_type AbstractLinAlgPack::transVtInvMtV ( const SpVectorSlice &  sv_rhs1,
const MatrixNonsingSerial &  M_rhs2,
BLAS_Cpp::Transp  trans_rhs2,
const SpVectorSlice &  sv_rhs3 
) [inline]

result = sv_rhs1' * inv(op(M_rhs2)) * sv_rhs3

Definition at line 206 of file AbstractLinAlgPack_MatrixNonsingSerial.hpp.

void AbstractLinAlgPack::M_StInvMtM ( DMatrix gm_lhs,
value_type  alpha,
const MatrixNonsingSerial &  M_rhs1,
BLAS_Cpp::Transp  trans_rhs1,
const DMatrixSlice &  gms_rhs2,
BLAS_Cpp::Transp  trans_rhs2 
) [inline]

gm_lhs = alpha * inv(op(M_rhs1)) * op(gms_rhs2) (right)

Definition at line 219 of file AbstractLinAlgPack_MatrixNonsingSerial.hpp.

void AbstractLinAlgPack::M_StInvMtM ( DMatrixSlice *  gms_lhs,
value_type  alpha,
const MatrixNonsingSerial &  M_rhs1,
BLAS_Cpp::Transp  trans_rhs1,
const DMatrixSlice &  gms_rhs2,
BLAS_Cpp::Transp  trans_rhs2 
) [inline]

gms_lhs = alpha * inv(op(M_rhs1)) * op(gms_rhs2) (right)

Definition at line 229 of file AbstractLinAlgPack_MatrixNonsingSerial.hpp.

void AbstractLinAlgPack::M_StMtInvM ( DMatrix gm_lhs,
value_type  alpha,
const DMatrixSlice &  gms_rhs1,
BLAS_Cpp::Transp  trans_rhs1,
const MatrixNonsingSerial &  M_rhs2,
BLAS_Cpp::Transp  trans_rhs2 
) [inline]

gm_lhs = alpha * op(gms_rhs1) * inv(op(M_rhs2)) (left)

Definition at line 239 of file AbstractLinAlgPack_MatrixNonsingSerial.hpp.

void AbstractLinAlgPack::M_StMtInvM ( DMatrixSlice *  gms_lhs,
value_type  alpha,
const DMatrixSlice &  gms_rhs1,
BLAS_Cpp::Transp  trans_rhs1,
const MatrixNonsingSerial &  M_rhs2,
BLAS_Cpp::Transp  trans_rhs2 
) [inline]

gms_lhs = alpha * op(gms_rhs1) * inv(op(M_rhs2)) (left)

Definition at line 249 of file AbstractLinAlgPack_MatrixNonsingSerial.hpp.

void AbstractLinAlgPack::M_StInvMtM ( DMatrix gm_lhs,
value_type  alpha,
const MatrixNonsingSerial &  M_rhs1,
BLAS_Cpp::Transp  trans_rhs1,
const MatrixOpSerial &  mwo_rhs2,
BLAS_Cpp::Transp  trans_rhs2 
) [inline]

gm_lhs = alpha * inv(op(M_rhs1)) * op(mwo_rhs2) (right)

Definition at line 259 of file AbstractLinAlgPack_MatrixNonsingSerial.hpp.

void AbstractLinAlgPack::M_StInvMtM ( DMatrixSlice *  gms_lhs,
value_type  alpha,
const MatrixNonsingSerial &  M_rhs1,
BLAS_Cpp::Transp  trans_rhs1,
const MatrixOpSerial &  mwo_rhs2,
BLAS_Cpp::Transp  trans_rhs2 
) [inline]

gms_lhs = alpha * inv(op(M_rhs1)) * op(mwo_rhs2) (right)

Definition at line 269 of file AbstractLinAlgPack_MatrixNonsingSerial.hpp.

void AbstractLinAlgPack::M_StMtInvM ( DMatrix gm_lhs,
value_type  alpha,
const MatrixOpSerial &  mwo_rhs1,
BLAS_Cpp::Transp  trans_rhs1,
const MatrixNonsingSerial &  M_rhs2,
BLAS_Cpp::Transp  trans_rhs2 
) [inline]

gm_lhs = alpha * op(mwo_rhs1) * inv(op(M_rhs2)) (left)

Definition at line 279 of file AbstractLinAlgPack_MatrixNonsingSerial.hpp.

void AbstractLinAlgPack::M_StMtInvM ( DMatrixSlice *  gms_lhs,
value_type  alpha,
const MatrixOpSerial &  mwo_rhs1,
BLAS_Cpp::Transp  trans_rhs1,
const MatrixNonsingSerial &  M_rhs2,
BLAS_Cpp::Transp  trans_rhs2 
) [inline]

gms_lhs = alpha * op(mwo_rhs1) * inv(op(M_rhs2)) (left)

Definition at line 289 of file AbstractLinAlgPack_MatrixNonsingSerial.hpp.

void AbstractLinAlgPack::Vp_StMtV ( DVectorSlice *  vs_lhs,
value_type  alpha,
const MatrixOpSerial &  M_rhs1,
BLAS_Cpp::Transp  trans_rhs1,
const DVectorSlice &  vs_rhs2,
value_type  beta = 1.0 
) [inline]

vs_lhs = alpha * op(M_rhs1) * vs_rhs2 + beta * vs_lhs (BLAS xGEMV)

Definition at line 350 of file AbstractLinAlgPack_MatrixOpSerial.hpp.

void AbstractLinAlgPack::Vp_StMtV ( DVectorSlice *  vs_lhs,
value_type  alpha,
const MatrixOpSerial &  M_rhs1,
BLAS_Cpp::Transp  trans_rhs1,
const SpVectorSlice &  sv_rhs2,
value_type  beta = 1.0 
) [inline]

vs_lhs = alpha * op(M_rhs1) * sv_rhs2 + beta * vs_lhs (BLAS xGEMV)

Definition at line 357 of file AbstractLinAlgPack_MatrixOpSerial.hpp.

void AbstractLinAlgPack::Vp_StPtMtV ( DVectorSlice *  vs_lhs,
value_type  alpha,
const GenPermMatrixSlice &  P_rhs1,
BLAS_Cpp::Transp  P_rhs1_trans,
const MatrixOpSerial &  M_rhs2,
BLAS_Cpp::Transp  M_rhs2_trans,
const DVectorSlice &  vs_rhs3,
value_type  beta = 1.0 
) [inline]

vs_lhs = alpha * op(P_rhs1) * op(M_rhs2) * vs_rhs3 + beta * vs_rhs

Definition at line 364 of file AbstractLinAlgPack_MatrixOpSerial.hpp.

void AbstractLinAlgPack::Vp_StPtMtV ( DVectorSlice *  vs_lhs,
value_type  alpha,
const GenPermMatrixSlice &  P_rhs1,
BLAS_Cpp::Transp  P_rhs1_trans,
const MatrixOpSerial &  M_rhs2,
BLAS_Cpp::Transp  M_rhs2_trans,
const SpVectorSlice &  sv_rhs3,
value_type  beta = 1.0 
) [inline]

vs_lhs = alpha * op(P_rhs1) * op(M_rhs2) * sv_rhs3 + beta * vs_rhs

Definition at line 373 of file AbstractLinAlgPack_MatrixOpSerial.hpp.

value_type AbstractLinAlgPack::transVtMtV ( const DVectorSlice &  vs_rhs1,
const MatrixOpSerial &  M_rhs2,
BLAS_Cpp::Transp  trans_rhs2,
const DVectorSlice &  vs_rhs3 
) [inline]

result = vs_rhs1' * op(M_rhs2) * vs_rhs3

Definition at line 382 of file AbstractLinAlgPack_MatrixOpSerial.hpp.

value_type AbstractLinAlgPack::transVtMtV ( const SpVectorSlice &  sv_rhs1,
const MatrixOpSerial &  M_rhs2,
BLAS_Cpp::Transp  trans_rhs2,
const SpVectorSlice &  sv_rhs3 
) [inline]

result = sv_rhs1' * op(M_rhs2) * sv_rhs3

Definition at line 389 of file AbstractLinAlgPack_MatrixOpSerial.hpp.

void AbstractLinAlgPack::Mp_StMtM ( DMatrixSlice *  gms_lhs,
value_type  alpha,
const MatrixOpSerial &  M_rhs1,
BLAS_Cpp::Transp  trans_rhs1,
const DMatrixSlice &  gms_rhs2,
BLAS_Cpp::Transp  trans_rhs2,
value_type  beta = 1.0 
) [inline]

gms_lhs = alpha * op(M_rhs1) * op(gms_rhs2) + beta * gms_lhs (right) (xGEMM)

Definition at line 401 of file AbstractLinAlgPack_MatrixOpSerial.hpp.

void AbstractLinAlgPack::Mp_StMtM ( DMatrixSlice *  gms_lhs,
value_type  alpha,
const DMatrixSlice &  gms_rhs1,
BLAS_Cpp::Transp  trans_rhs1,
const MatrixOpSerial &  M_rhs2,
BLAS_Cpp::Transp  trans_rhs2,
value_type  beta = 1.0 
) [inline]

gms_lhs = alpha * op(gms_rhs1) * op(M_rhs2) + beta * gms_lhs (left) (xGEMM)

Definition at line 409 of file AbstractLinAlgPack_MatrixOpSerial.hpp.

void AbstractLinAlgPack::Mp_StMtM ( DMatrixSlice *  gms_lhs,
value_type  alpha,
const MatrixOpSerial &  mwo_rhs1,
BLAS_Cpp::Transp  trans_rhs1,
const MatrixOpSerial &  gms_rhs2,
BLAS_Cpp::Transp  trans_rhs2,
value_type  beta = 1.0 
) [inline]

gms_lhs = alpha * op(mwo_rhs1) * op(mwo_rhs2) + beta * gms_lhs (right) (xGEMM)

Definition at line 417 of file AbstractLinAlgPack_MatrixOpSerial.hpp.

void AbstractLinAlgPack::Mp_StMtM ( DMatrixSlice *  gms_lhs,
value_type  alpha,
const MatrixOpSerial &  M_rhs1,
BLAS_Cpp::Transp  trans_rhs1,
const DMatrixSliceSym &  sym_rhs2,
BLAS_Cpp::Transp  trans_rhs2,
value_type  beta = 1.0 
) [inline]

gms_lhs = alpha * op(M_rhs1) * op(sym_rhs2) + beta * gms_lhs (right) (xSYMM)

Definition at line 425 of file AbstractLinAlgPack_MatrixOpSerial.hpp.

void AbstractLinAlgPack::Mp_StMtM ( DMatrixSlice *  gms_lhs,
value_type  alpha,
const DMatrixSliceSym &  sym_rhs1,
BLAS_Cpp::Transp  trans_rhs1,
const MatrixOpSerial &  M_rhs2,
BLAS_Cpp::Transp  trans_rhs2,
value_type  beta = 1.0 
) [inline]

gms_lhs = alpha * op(sym_rhs1) * op(M_rhs2) + beta * gms_lhs (left) (xSYMM)

Definition at line 433 of file AbstractLinAlgPack_MatrixOpSerial.hpp.

void AbstractLinAlgPack::Mp_StMtM ( DMatrixSlice *  gms_lhs,
value_type  alpha,
const MatrixOpSerial &  M_rhs1,
BLAS_Cpp::Transp  trans_rhs1,
const DMatrixSliceTri &  tri_rhs2,
BLAS_Cpp::Transp  trans_rhs2,
value_type  beta = 1.0 
) [inline]

gms_lhs = alpha * op(M_rhs1) * op(tri_rhs2) + beta * gms_lhs (right) (xTRMM)

Definition at line 441 of file AbstractLinAlgPack_MatrixOpSerial.hpp.

void AbstractLinAlgPack::Mp_StMtM ( DMatrixSlice *  gms_lhs,
value_type  alpha,
const DMatrixSliceTri &  tri_rhs1,
BLAS_Cpp::Transp  trans_rhs1,
const MatrixOpSerial &  M_rhs2,
BLAS_Cpp::Transp  trans_rhs2,
value_type  beta = 1.0 
) [inline]

gms_lhs = alpha * op(tri_rhs1) * op(M_rhs2) + beta * gms_lhs (left) (xTRMM)

Definition at line 449 of file AbstractLinAlgPack_MatrixOpSerial.hpp.


Friends

void V_InvMtV ( VectorMutable v_lhs,
const MatrixNonsing M_rhs1,
BLAS_Cpp::Transp  trans_rhs1,
const Vector v_rhs2 
) [friend, inherited]

Definition at line 236 of file AbstractLinAlgPack_MatrixNonsing.hpp.

void V_InvMtV ( VectorMutable v_lhs,
const MatrixNonsing M_rhs1,
BLAS_Cpp::Transp  trans_rhs1,
const SpVectorSlice sv_rhs2 
) [friend, inherited]

Definition at line 244 of file AbstractLinAlgPack_MatrixNonsing.hpp.

value_type transVtInvMtV ( const Vector v_rhs1,
const MatrixNonsing M_rhs2,
BLAS_Cpp::Transp  trans_rhs2,
const Vector v_rhs3 
) [friend, inherited]

Definition at line 252 of file AbstractLinAlgPack_MatrixNonsing.hpp.

value_type transVtInvMtV ( const SpVectorSlice sv_rhs1,
const MatrixNonsing M_rhs2,
BLAS_Cpp::Transp  trans_rhs2,
const SpVectorSlice sv_rhs3 
) [friend, inherited]

Definition at line 260 of file AbstractLinAlgPack_MatrixNonsing.hpp.

void M_StInvMtM ( MatrixOp m_lhs,
value_type  alpha,
const MatrixNonsing M_rhs1,
BLAS_Cpp::Transp  trans_rhs1,
const MatrixOp mwo_rhs2,
BLAS_Cpp::Transp  trans_rhs2 
) [friend, inherited]

Definition at line 274 of file AbstractLinAlgPack_MatrixNonsing.hpp.

void M_StMtInvM ( MatrixOp m_lhs,
value_type  alpha,
const MatrixOp mwo_rhs1,
BLAS_Cpp::Transp  trans_rhs1,
const MatrixNonsing M_rhs2,
BLAS_Cpp::Transp  trans_rhs2 
) [friend, inherited]

Definition at line 283 of file AbstractLinAlgPack_MatrixNonsing.hpp.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Generated on Wed Apr 13 10:17:06 2011 for MOOCHO (Single Doxygen Collection) by  doxygen 1.6.3