AbstractLinAlgPack: C++ Interfaces For Vectors, Matrices And Related Linear Algebra Objects  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Public Member Functions | List of all members
AbstractLinAlgPack::MatrixSymOpSerial Class Reference

Abstract base class for all AbstractLinAlgPack::MatrixSymOp objects implemented in shared memory space. More...

#include <AbstractLinAlgPack_MatrixSymOpSerial.hpp>

Inheritance diagram for AbstractLinAlgPack::MatrixSymOpSerial:
Inheritance graph
[legend]

Public Member Functions

virtual void Mp_StPtMtP (DMatrixSliceSym *sym_lhs, value_type alpha, EMatRhsPlaceHolder dummy_place_holder, const GenPermMatrixSlice &gpms_rhs, BLAS_Cpp::Transp gpms_rhs_trans, value_type beta) const
 sym_lhs = alpha * op(gpms_rhs') * M * op(gpms_rhs) + beta * sym_lhs. More...
 
virtual void Mp_StMtMtM (DMatrixSliceSym *sym_lhs, value_type alpha, EMatRhsPlaceHolder dummy_place_holder, const MatrixOpSerial &mwo_rhs, BLAS_Cpp::Transp mwo_rhs_trans, value_type beta) const
 sym_lhs = alpha * op(mwo_rhs') * M * op(mwo_rhs). More...
 
- Public Member Functions inherited from AbstractLinAlgPack::MatrixOpSerial
virtual void Mp_StM (DMatrixSlice *gms_lhs, value_type alpha, BLAS_Cpp::Transp trans_rhs) const
 gms_lhs += alpha * op(M_rhs) (BLAS xAXPY) More...
 
virtual void Mp_StMtP (DMatrixSlice *gms_lhs, value_type alpha, BLAS_Cpp::Transp M_trans, const GenPermMatrixSlice &P_rhs, BLAS_Cpp::Transp P_rhs_trans) const
 gms_lhs += alpha * op(M_rhs) * op(P_rhs) More...
 
virtual void Mp_StPtM (DMatrixSlice *gms_lhs, value_type alpha, const GenPermMatrixSlice &P_rhs, BLAS_Cpp::Transp P_rhs_trans, BLAS_Cpp::Transp M_trans) const
 gms_lhs += alpha * op(P) * op(M_rhs) More...
 
virtual void Mp_StPtMtP (DMatrixSlice *gms_lhs, value_type alpha, const GenPermMatrixSlice &P_rhs1, BLAS_Cpp::Transp P_rhs1_trans, BLAS_Cpp::Transp M_trans, const GenPermMatrixSlice &P_rhs2, BLAS_Cpp::Transp P_rhs2_trans) const
 gms_lhs += alpha * op(P_rhs1) * op(M_rhs) * op(P_rhs2) More...
 
virtual void Vp_StMtV (DVectorSlice *vs_lhs, value_type alpha, BLAS_Cpp::Transp trans_rhs1, const DVectorSlice &vs_rhs2, value_type beta) const =0
 vs_lhs = alpha * op(M_rhs1) * vs_rhs2 + beta * vs_lhs (BLAS xGEMV) More...
 
virtual void Vp_StMtV (DVectorSlice *vs_lhs, value_type alpha, BLAS_Cpp::Transp trans_rhs1, const SpVectorSlice &sv_rhs2, value_type beta) const
 vs_lhs = alpha * op(M_rhs1) * sv_rhs2 + beta * vs_lhs (BLAS xGEMV) More...
 
virtual void Vp_StPtMtV (DVectorSlice *vs_lhs, value_type alpha, const GenPermMatrixSlice &P_rhs1, BLAS_Cpp::Transp P_rhs1_trans, BLAS_Cpp::Transp M_rhs2_trans, const DVectorSlice &vs_rhs3, value_type beta) const
 vs_lhs = alpha * op(P_rhs1) * op(M_rhs2) * vs_rhs3 + beta * vs_rhs More...
 
virtual void Vp_StPtMtV (DVectorSlice *vs_lhs, value_type alpha, const GenPermMatrixSlice &P_rhs1, BLAS_Cpp::Transp P_rhs1_trans, BLAS_Cpp::Transp M_rhs2_trans, const SpVectorSlice &sv_rhs3, value_type beta) const
 vs_lhs = alpha * op(P_rhs1) * op(M_rhs2) * sv_rhs3 + beta * vs_rhs More...
 
virtual value_type transVtMtV (const DVectorSlice &vs_rhs1, BLAS_Cpp::Transp trans_rhs2, const DVectorSlice &vs_rhs3) const
 result = vs_rhs1' * op(M_rhs2) * vs_rhs3 More...
 
virtual void syr2k (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, DMatrixSliceSym *sym_lhs) const
 Perform a specialized rank-2k update of a dense symmetric matrix of the form: More...
 
virtual void Mp_StMtM (DMatrixSlice *gms_lhs, value_type alpha, BLAS_Cpp::Transp trans_rhs1, const DMatrixSlice &gms_rhs2, BLAS_Cpp::Transp trans_rhs2, value_type beta) const
 gms_lhs = alpha * op(M_rhs1) * op(gms_rhs2) + beta * gms_lhs (right) (xGEMM) More...
 
virtual void Mp_StMtM (DMatrixSlice *gms_lhs, value_type alpha, const DMatrixSlice &gms_rhs1, BLAS_Cpp::Transp trans_rhs1, BLAS_Cpp::Transp trans_rhs2, value_type beta) const
 gms_lhs = alpha * op(gms_rhs1) * op(M_rhs2) + beta * gms_lhs (left) (xGEMM) More...
 
virtual void Mp_StMtM (DMatrixSlice *gms_lhs, value_type alpha, BLAS_Cpp::Transp trans_rhs1, const MatrixOpSerial &mwo_rhs2, BLAS_Cpp::Transp trans_rhs2, value_type beta) const
 gms_lhs = alpha * op(M_rhs1) * op(mwo_rhs2) + beta * gms_lhs (right) (xGEMM) More...
 
virtual void Mp_StMtM (DMatrixSlice *gms_lhs, value_type alpha, BLAS_Cpp::Transp trans_rhs1, const DMatrixSliceSym &sym_rhs2, BLAS_Cpp::Transp trans_rhs2, value_type beta) const
 gms_lhs = alpha * op(M_rhs1) * op(sym_rhs2) + beta * gms_lhs (right) (xSYMM) More...
 
virtual void Mp_StMtM (DMatrixSlice *gms_lhs, value_type alpha, const DMatrixSliceSym &sym_rhs1, BLAS_Cpp::Transp trans_rhs1, BLAS_Cpp::Transp trans_rhs2, value_type beta) const
 gms_lhs = alpha * op(sym_rhs1) * op(M_rhs2) + beta * gms_lhs (left) (xSYMM) More...
 
virtual void Mp_StMtM (DMatrixSlice *gms_lhs, value_type alpha, BLAS_Cpp::Transp trans_rhs1, const DMatrixSliceTri &tri_rhs2, BLAS_Cpp::Transp trans_rhs2, value_type beta) const
 gms_lhs = alpha * op(M_rhs1) * op(tri_rhs2) + beta * gms_lhs (right) (xTRMM) More...
 
virtual void Mp_StMtM (DMatrixSlice *gms_lhs, value_type alpha, const DMatrixSliceTri &tri_rhs1, BLAS_Cpp::Transp trans_rhs1, BLAS_Cpp::Transp trans_rhs2, value_type beta) const
 gms_lhs = alpha * op(tri_rhs1) * op(M_rhs2) + beta * gms_lhs (left) (xTRMM) More...
 
virtual void syrk (BLAS_Cpp::Transp M_trans, value_type alpha, value_type beta, DMatrixSliceSym *sym_lhs) const
 Perform a rank-k update of a dense symmetric matrix of the form: More...
 
const VectorSpacespace_cols () const
 
std::ostream & output (std::ostream &out) const
 
bool Mp_StM (MatrixOp *mwo_lhs, value_type alpha, BLAS_Cpp::Transp trans_rhs) const
 
bool Mp_StMtP (MatrixOp *mwo_lhs, value_type alpha, BLAS_Cpp::Transp M_trans, const GenPermMatrixSlice &P_rhs, BLAS_Cpp::Transp P_rhs_trans) const
 
bool Mp_StPtM (MatrixOp *mwo_lhs, value_type alpha, const GenPermMatrixSlice &P_rhs, BLAS_Cpp::Transp P_rhs_trans, BLAS_Cpp::Transp M_trans) const
 
bool Mp_StPtMtP (MatrixOp *mwo_lhs, value_type alpha, const GenPermMatrixSlice &P_rhs1, BLAS_Cpp::Transp P_rhs1_trans, BLAS_Cpp::Transp M_trans, const GenPermMatrixSlice &P_rhs2, BLAS_Cpp::Transp P_rhs2_trans) const
 
void Vp_StMtV (VectorMutable *v_lhs, value_type alpha, BLAS_Cpp::Transp trans_rhs1, const Vector &v_rhs2, value_type beta) const
 
void Vp_StMtV (VectorMutable *v_lhs, value_type alpha, BLAS_Cpp::Transp trans_rhs1, const SpVectorSlice &sv_rhs2, value_type beta) const
 
void Vp_StPtMtV (VectorMutable *v_lhs, value_type alpha, const GenPermMatrixSlice &P_rhs1, BLAS_Cpp::Transp P_rhs1_trans, BLAS_Cpp::Transp M_rhs2_trans, const Vector &v_rhs3, value_type beta) const
 
void Vp_StPtMtV (VectorMutable *v_lhs, value_type alpha, const GenPermMatrixSlice &P_rhs1, BLAS_Cpp::Transp P_rhs1_trans, BLAS_Cpp::Transp M_rhs2_trans, const SpVectorSlice &sv_rhs3, value_type beta) const
 
value_type transVtMtV (const Vector &v_rhs1, BLAS_Cpp::Transp trans_rhs2, const Vector &v_rhs3) const
 
value_type transVtMtV (const SpVectorSlice &sv_rhs1, BLAS_Cpp::Transp trans_rhs2, const SpVectorSlice &sv_rhs3) const
 
void syr2k (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) const
 
bool Mp_StMtM (MatrixOp *mwo_lhs, value_type alpha, BLAS_Cpp::Transp trans_rhs1, const MatrixOp &mwo_rhs2, BLAS_Cpp::Transp trans_rhs2, value_type beta) const
 
bool syrk (BLAS_Cpp::Transp M_trans, value_type alpha, value_type beta, MatrixSymOp *sym_lhs) const
 
- Public Member Functions inherited from AbstractLinAlgPack::MatrixOp
virtual void zero_out ()
 M_lhs = 0 : Zero out the matrix. More...
 
virtual void Mt_S (value_type alpha)
 M_lhs *= alpha : Multiply a matrix by a scalar. More...
 
virtual MatrixOpoperator= (const MatrixOp &mwo_rhs)
 M_lhs = mwo_rhs : Virtual assignment operator. More...
 
const MatNorm calc_norm (EMatNormType requested_norm_type=MAT_NORM_1, bool allow_replacement=false) const
 Compute a norm of this matrix. More...
 
virtual mat_ptr_t sub_view (const Range1D &row_rng, const Range1D &col_rng) const
 Create a transient constant sub-matrix view of this matrix (if supported). More...
 
mat_ptr_t sub_view (const index_type &rl, const index_type &ru, const index_type &cl, const index_type &cu) const
 Inlined implementation calls this->sub_view(Range1D(rl,ru),Range1D(cl,cu)). More...
 
virtual mat_ptr_t perm_view (const Permutation *P_row, const index_type row_part[], int num_row_part, const Permutation *P_col, const index_type col_part[], int num_col_part) const
 Create a permuted view: M_perm = P_row' * M * P_col. More...
 
virtual mat_ptr_t perm_view_update (const Permutation *P_row, const index_type row_part[], int num_row_part, const Permutation *P_col, const index_type col_part[], int num_col_part, const mat_ptr_t &perm_view) const
 Reinitialize a permuted view: M_perm = P_row' * M * P_col. More...
 
- Public Member Functions inherited from AbstractLinAlgPack::MatrixBase
virtual ~MatrixBase ()
 Virtual destructor. More...
 
virtual size_type rows () const
 Return the number of rows in the matrix. More...
 
virtual size_type nz () const
 Return the number of nonzero elements in the matrix. More...
 
- Public Member Functions inherited from AbstractLinAlgPack::MatrixSymOp
virtual MatrixSymOpoperator= (const MatrixSymOp &M)
 Calls operator=(MatrixOp&) More...
 
virtual mat_mswo_mut_ptr_t clone_mswo ()
 Clone the non-const matrix object (if supported). More...
 
virtual mat_mswo_ptr_t clone_mswo () const
 Clone the const matrix object (if supported). More...
 
size_type cols () const
 Returns this->rows() More...
 
mat_mut_ptr_t clone ()
 Returns this->clone_mswo(). More...
 
mat_ptr_t clone () const
 Returns this->clone_mswo(). More...
 

Overridden from MatrixSymOp

const VectorSpacespace_rows () const
 Must be overridden to call MatrixOpSerial::space_rows() More...
 
void Mp_StPtMtP (MatrixSymOp *symwo_lhs, value_type alpha, EMatRhsPlaceHolder dummy_place_holder, const GenPermMatrixSlice &gpms_rhs, BLAS_Cpp::Transp gpms_rhs_trans, value_type beta) const
 symwo_lhs = alpha * op(gpms_rhs') * M * op(gpms_rhs) + beta * sym_lhs. More...
 
void Mp_StMtMtM (MatrixSymOp *symwo_lhs, value_type alpha, EMatRhsPlaceHolder dummy_place_holder, const MatrixOp &mwo_rhs, BLAS_Cpp::Transp mwo_rhs_trans, value_type beta) const
 symwo_lhs = alpha * op(mwo_rhs') * M * op(mwo_rhs). More...
 

Detailed Description

Abstract base class for all AbstractLinAlgPack::MatrixSymOp objects implemented in shared memory space.

This base class does a mapping from fully abstract linear algebra to shared memory linear algebra.

These methods should not be called directly but instead should be called through the line non-member functions that are provided.

Definition at line 59 of file AbstractLinAlgPack_MatrixSymOpSerial.hpp.

Member Function Documentation

void AbstractLinAlgPack::MatrixSymOpSerial::Mp_StPtMtP ( DMatrixSliceSym sym_lhs,
value_type  alpha,
EMatRhsPlaceHolder  dummy_place_holder,
const GenPermMatrixSlice gpms_rhs,
BLAS_Cpp::Transp  gpms_rhs_trans,
value_type  beta 
) const
virtual

sym_lhs = alpha * op(gpms_rhs') * M * op(gpms_rhs) + beta * sym_lhs.

The default operation is based on this->Vp_StMtV(...) and assumes that the matrix is symmetric. Of course, a more efficient implementation is often needed and the sublcass would like to override this.

Definition at line 56 of file AbstractLinAlgPack_MatrixSymOpSerial.cpp.

void AbstractLinAlgPack::MatrixSymOpSerial::Mp_StMtMtM ( DMatrixSliceSym sym_lhs,
value_type  alpha,
EMatRhsPlaceHolder  dummy_place_holder,
const MatrixOpSerial mwo_rhs,
BLAS_Cpp::Transp  mwo_rhs_trans,
value_type  beta 
) const
virtual

sym_lhs = alpha * op(mwo_rhs') * M * op(mwo_rhs).

The default operation is based on this->Vp_StMtV(...) and assumes that the matrix is symmetric. Of course, a more efficient implementation is often needed and the sublcass would like to override this.

Reimplemented in AbstractLinAlgPack::MatrixSymDiagSparse.

Definition at line 126 of file AbstractLinAlgPack_MatrixSymOpSerial.cpp.

const VectorSpace & AbstractLinAlgPack::MatrixSymOpSerial::space_rows ( ) const
virtual

Must be overridden to call MatrixOpSerial::space_rows()

Reimplemented from AbstractLinAlgPack::MatrixSymOp.

Definition at line 139 of file AbstractLinAlgPack_MatrixSymOpSerial.cpp.

void AbstractLinAlgPack::MatrixSymOpSerial::Mp_StPtMtP ( MatrixSymOp symwo_lhs,
value_type  alpha,
EMatRhsPlaceHolder  dummy_place_holder,
const GenPermMatrixSlice gpms_rhs,
BLAS_Cpp::Transp  gpms_rhs_trans,
value_type  beta 
) const
virtual

symwo_lhs = alpha * op(gpms_rhs') * M * op(gpms_rhs) + beta * sym_lhs.

Reimplemented from AbstractLinAlgPack::MatrixSymOp.

Definition at line 144 of file AbstractLinAlgPack_MatrixSymOpSerial.cpp.

void AbstractLinAlgPack::MatrixSymOpSerial::Mp_StMtMtM ( MatrixSymOp symwo_lhs,
value_type  alpha,
EMatRhsPlaceHolder  dummy_place_holder,
const MatrixOp mwo_rhs,
BLAS_Cpp::Transp  mwo_rhs_trans,
value_type  beta 
) const
virtual

symwo_lhs = alpha * op(mwo_rhs') * M * op(mwo_rhs).

Reimplemented from AbstractLinAlgPack::MatrixSymOp.

Definition at line 157 of file AbstractLinAlgPack_MatrixSymOpSerial.cpp.


The documentation for this class was generated from the following files: