MOOCHO (Single Doxygen Collection)  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Namespaces | Typedefs | Functions
AbstractLinAlgPack_LinAlgOpPack.hpp File Reference
#include "AbstractLinAlgPack_Types.hpp"
#include "AbstractLinAlgPack_MatrixOpNonsing.hpp"
#include "AbstractLinAlgPack_VectorMutable.hpp"
#include "AbstractLinAlgPack_VectorStdOps.hpp"
#include "AbstractLinAlgPack_AssertOp.hpp"
Include dependency graph for AbstractLinAlgPack_LinAlgOpPack.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

 LinAlgOpPack
 

Typedefs

typedef
AbstractLinAlgPack::size_type 
LinAlgOpPack::size_type
 
typedef
AbstractLinAlgPack::value_type 
LinAlgOpPack::value_type
 

Functions

void LinAlgOpPack::assign (MatrixOp *M_lhs, const MatrixOp &M_rhs, BLAS_Cpp::Transp trans_rhs)
 M_lhs = op(M_rhs). More...
 
void LinAlgOpPack::M_StM (MatrixOp *M_lhs, value_type alpha, const MatrixOp &M_rhs, BLAS_Cpp::Transp trans_rhs)
 gm_lhs = alpha * M_rhs. More...
 
void LinAlgOpPack::M_mM (MatrixOp *M_lhs, const MatrixOp &M_rhs, BLAS_Cpp::Transp trans_rhs)
 gm_lhs = - op(M_rhs). More...
 
void LinAlgOpPack::M_MpM (MatrixOp *M_lhs, const MatrixOp &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const MatrixOp &M_rhs2, BLAS_Cpp::Transp trans_rhs2)
 
void LinAlgOpPack::M_MmM (MatrixOp *M_lhs, const MatrixOp &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const MatrixOp &M_rhs2, BLAS_Cpp::Transp trans_rhs2)
 M_lhs = op(M_rhs1) - op(M_rhs2). More...
 
void LinAlgOpPack::M_StMpM (MatrixOp *M_lhs, value_type alpha, const MatrixOp &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const MatrixOp &gms_rhs2, BLAS_Cpp::Transp trans_rhs2)
 M_lhs = alpha * op(M_rhs1) + op(gms_rhs2). More...
 
template<class V >
void LinAlgOpPack::Vp_MtV (VectorMutable *v_lhs, const MatrixOp &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const V &V_rhs2, value_type beta)
 
void LinAlgOpPack::M_InvMtM (MatrixOp *M_lhs, const MatrixNonsing &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const MatrixOp &M_rhs2, BLAS_Cpp::Transp trans_rhs2)
 

Level 1 BLAS for Vectors

For these functions to work for the type V the following function must be defined:

// v_lhs += alpha * V_rhs
void Vp_StV(VectorMutable* v_lhs, value_type alpha, const V& V_rhs);

The rest of these level 1 BLAS functions implement the variations.

template<class V >
void LinAlgOpPack::Vp_V (VectorMutable *v_lhs, const V &V_rhs)
 v_lhs += V_rhs. More...
 
template<class V >
void LinAlgOpPack::assign (VectorMutable *v_lhs, const V &V_rhs)
 v_lhs = V_rhs. More...
 
template<class V >
void LinAlgOpPack::V_StV (VectorMutable *v_lhs, value_type alpha, const V &V_rhs)
 v_lhs = alpha * V_rhs. More...
 
template<class V >
void LinAlgOpPack::V_mV (VectorMutable *v_lhs, const V &V_rhs)
 v_lhs = - V_rhs. More...
 
template<class V1 , class V2 >
void LinAlgOpPack::V_VpV (VectorMutable *v_lhs, const V1 &V1_rhs1, const V2 &V2_rhs2)
 
template<class V1 , class V2 >
void LinAlgOpPack::V_VmV (VectorMutable *v_lhs, const V1 &V1_rhs1, const V2 &V2_rhs2)
 v_lhs = V_rhs1 - V_rhs2. More...
 
template<class V >
void LinAlgOpPack::V_StVpV (VectorMutable *v_lhs, value_type alpha, const V &V_rhs1, const Vector &vs_rhs2)
 v_lhs = alpha * V_rhs1 + vs_rhs2. More...
 

Level 1 BLAS for Matrices

For these functions to work for the type M the following function must be defined:

// M_lhs += alpha * op(M_rhs) \ void Mp_StM(MatrixOp* v_lhs, value_type alpha, const V& V_rhs, BLAS_Cpp::Transp);

The rest of these level 1 BLAS functions implement the variations.

void LinAlgOpPack::Mp_M (MatrixOp *M_lhs, const MatrixOp &M_rhs, BLAS_Cpp::Transp trans_rhs)
 M_lhs += op(M_rhs). More...
 

Level 2 BLAS

These operations implement variations on the Level-2 BLAS operation:\

v_lhs = alpha * op(M_rhs1) * V_rhs2 + beta * v_lhs

template<class V >
void LinAlgOpPack::Vp_MtV (VectorMutable *v_lhs, const MatrixOp &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const V &V_rhs2)
 v_lhs += op(M_rhs1) * V_rhs2. More...
 
template<class V >
void LinAlgOpPack::V_StMtV (VectorMutable *v_lhs, value_type alpha, const MatrixOp &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const V &V_rhs2)
 v_lhs = alpha * op(M_rhs1) * V_rhs2. More...
 
template<class V >
void LinAlgOpPack::V_MtV (VectorMutable *v_lhs, const MatrixOp &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const V &V_rhs2)
 v_lhs = op(M_rhs1) * V_rhs2. More...
 

Level 3 BLAS

These operations are based on the Level-3 BLAS operation:

M_lhs = alpha * op(M_rhs1) * op(M_rhs2) + beta * M_lhs

void LinAlgOpPack::Mp_MtM (MatrixOp *M_lhs, const MatrixOp &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const MatrixOp &M_rhs2, BLAS_Cpp::Transp trans_rhs2)
 M_lhs += op(M_rhs1) * op(M_rhs2). More...
 
void LinAlgOpPack::Mp_MtM (MatrixOp *M_lhs, const MatrixOp &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const MatrixOp &M_rhs2, BLAS_Cpp::Transp trans_rhs2, value_type beta)
 M_lhs = op(M_rhs1) * op(M_rhs2) + beta * gms_rhs. More...
 
void LinAlgOpPack::M_StMtM (MatrixOp *M_lhs, value_type alpha, const MatrixOp &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const MatrixOp &M_rhs2, BLAS_Cpp::Transp trans_rhs2)
 M_lhs = alpha * op(M_rhs1) * op(M_rhs2). More...
 
void LinAlgOpPack::M_MtM (MatrixOp *M_lhs, const MatrixOp &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const MatrixOp &M_rhs2, BLAS_Cpp::Transp trans_rhs2)
 M_lhs = op(M_rhs1) * op(M_rhs2). More...