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::MatrixSymOp Class Reference

Interface adding operations specific for a symmetric matrix {abstract}. More...

#include <AbstractLinAlgPack_MatrixSymOp.hpp>

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

Public Member Functions

virtual MatrixSymOpoperator= (const MatrixSymOp &M)
 Calls operator=(MatrixOp&) More...
 
- 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...
 
virtual std::ostream & output (std::ostream &out) const
 Virtual output function. 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 const VectorSpacespace_cols () const =0
 Vector space for vectors that are compatible with the columns of the matrix. 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 types

enum  EMatRhsPlaceHolder
 
void Mp_StPtMtP (MatrixSymOp *sym_lhs, value_type alpha, EMatRhsPlaceHolder dummy_place_holder, const MatrixSymOp &M, const GenPermMatrixSlice &gpms_rhs, BLAS_Cpp::Transp gpms_rhs_trans, value_type beta)
 
void Mp_StMtMtM (MatrixSymOp *sym_lhs, value_type alpha, EMatRhsPlaceHolder dummy_place_holder, const MatrixSymOp &M, const MatrixOp &mwo_rhs, BLAS_Cpp::Transp mwo_rhs_trans, value_type beta)
 

Clone

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

Level-1 BLAS

virtual void Mp_StPtMtP (MatrixSymOp *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...
 

Level-3 BLAS

virtual void Mp_StMtMtM (MatrixSymOp *sym_lhs, value_type alpha, EMatRhsPlaceHolder dummy_place_holder, const MatrixOp &mwo_rhs, BLAS_Cpp::Transp mwo_rhs_trans, value_type beta) const
 sym_lhs = alpha * op(mwo_rhs') * M * op(mwo_rhs) + beta * sym_lhs. More...
 
size_type cols () const
 Returns this->rows() More...
 
const VectorSpacespace_rows () const
 Vector space for vectors that are compatible with the rows of the matrix. More...
 
mat_mut_ptr_t clone ()
 Returns this->clone_mswo(). More...
 
mat_ptr_t clone () const
 Returns this->clone_mswo(). More...
 

Detailed Description

Interface adding operations specific for a symmetric matrix {abstract}.

This interface defines two addition methods to those found in MatrixOp:

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

The reason that these methods could not be defined in the MatrixOp interface is that the lhs matrix matrix argument sym_lhs is only guaranteed to be symmetric if the rhs matrix argument M (which is this matrix) is guaranteed to be symmetric. Since a MatrixOp matrix object may be unsymmetric (as well as rectangular), it can not implement this operation, only a symmetric matrix can.

Clients should use the provided non-member functions to call the methods and not the methods themselves.

Definition at line 66 of file AbstractLinAlgPack_MatrixSymOp.hpp.

Member Enumeration Documentation

Definition at line 82 of file AbstractLinAlgPack_MatrixSymOp.hpp.

Member Function Documentation

MatrixSymOp::mat_mswo_mut_ptr_t AbstractLinAlgPack::MatrixSymOp::clone_mswo ( )
virtual

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

Definition at line 50 of file AbstractLinAlgPack_MatrixSymOp.cpp.

MatrixSymOp::mat_mswo_ptr_t AbstractLinAlgPack::MatrixSymOp::clone_mswo ( ) const
virtual

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.

Reimplemented in AbstractLinAlgPack::MatrixSymOpNonsing.

Definition at line 56 of file AbstractLinAlgPack_MatrixSymOp.cpp.

void AbstractLinAlgPack::MatrixSymOp::Mp_StPtMtP ( MatrixSymOp sym_lhs,
value_type  alpha,
EMatRhsPlaceHolder  dummy_place_holder,
const GenPermMatrixSlice gpms_rhs,
BLAS_Cpp::Transp  gpms_rhs_trans,
value_type  beta 
) const
protectedvirtual

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

The default operation is based on 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::MatrixSymOpSerial.

Definition at line 61 of file AbstractLinAlgPack_MatrixSymOp.cpp.

void AbstractLinAlgPack::MatrixSymOp::Mp_StMtMtM ( MatrixSymOp sym_lhs,
value_type  alpha,
EMatRhsPlaceHolder  dummy_place_holder,
const MatrixOp mwo_rhs,
BLAS_Cpp::Transp  mwo_rhs_trans,
value_type  beta 
) const
protectedvirtual

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

The default operation is based on 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::MatrixSymOpSerial.

Definition at line 70 of file AbstractLinAlgPack_MatrixSymOp.cpp.

size_type AbstractLinAlgPack::MatrixSymOp::cols ( ) const
virtual

Returns this->rows()

Overridden from MatrixOp

Reimplemented from AbstractLinAlgPack::MatrixBase.

Definition at line 82 of file AbstractLinAlgPack_MatrixSymOp.cpp.

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

Vector space for vectors that are compatible with the rows of the matrix.

Implements AbstractLinAlgPack::MatrixBase.

Reimplemented in AbstractLinAlgPack::MatrixSymDiagStd, and AbstractLinAlgPack::MatrixSymOpSerial.

Definition at line 87 of file AbstractLinAlgPack_MatrixSymOp.cpp.

MatrixSymOp::mat_mut_ptr_t AbstractLinAlgPack::MatrixSymOp::clone ( )
virtual

Returns this->clone_mswo().

Reimplemented from AbstractLinAlgPack::MatrixOp.

Reimplemented in AbstractLinAlgPack::MatrixSymOpNonsing.

Definition at line 93 of file AbstractLinAlgPack_MatrixSymOp.cpp.

MatrixSymOp::mat_ptr_t AbstractLinAlgPack::MatrixSymOp::clone ( ) const
virtual

Returns this->clone_mswo().

Reimplemented from AbstractLinAlgPack::MatrixOp.

Reimplemented in AbstractLinAlgPack::MatrixSymOpNonsing.

Definition at line 99 of file AbstractLinAlgPack_MatrixSymOp.cpp.

virtual MatrixSymOp& AbstractLinAlgPack::MatrixSymOp::operator= ( const MatrixSymOp M)
inlinevirtual

Calls operator=(MatrixOp&)

Definition at line 183 of file AbstractLinAlgPack_MatrixSymOp.hpp.

Friends And Related Function Documentation

void Mp_StPtMtP ( MatrixSymOp sym_lhs,
value_type  alpha,
MatrixSymOp::EMatRhsPlaceHolder  dummy_place_holder,
const MatrixSymOp M,
const GenPermMatrixSlice gpms_rhs,
BLAS_Cpp::Transp  gpms_rhs_trans,
value_type  beta = 1.0 
)
friend

Definition at line 196 of file AbstractLinAlgPack_MatrixSymOp.hpp.

void Mp_StMtMtM ( MatrixSymOp sym_lhs,
value_type  alpha,
MatrixSymOp::EMatRhsPlaceHolder  dummy_place_holder,
const MatrixSymOp M,
const MatrixOp mwo_rhs,
BLAS_Cpp::Transp  mwo_rhs_trans,
value_type  beta = 1.0 
)
friend

Definition at line 209 of file AbstractLinAlgPack_MatrixSymOp.hpp.


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