MOOCHO (Single Doxygen Collection) Version of the Day
Public Member Functions
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]

List of all members.

Public Member Functions

virtual MatrixSymOpoperator= (const MatrixSymOp &M)
 Calls operator=(MatrixOp&)

Public types

enum  EMatRhsPlaceHolder { DUMMY_ARG }
  More...
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).
virtual mat_mswo_ptr_t clone_mswo () const
 Clone the const matrix object (if supported).

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.

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.
size_type cols () const
 Returns this->rows()
const VectorSpacespace_rows () const
 Vector space for vectors that are compatible with the rows of the matrix.
mat_mut_ptr_t clone ()
 Returns this->clone_mswo().
mat_ptr_t clone () const
 Returns this->clone_mswo().

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 53 of file AbstractLinAlgPack_MatrixSymOp.hpp.


Member Enumeration Documentation

Enumerator:
DUMMY_ARG 

Definition at line 69 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 37 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 43 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 [protected, virtual]

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 48 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 [protected, virtual]

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 57 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 69 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 74 of file AbstractLinAlgPack_MatrixSymOp.cpp.

MatrixSymOp::mat_mut_ptr_t AbstractLinAlgPack::MatrixSymOp::clone ( ) [virtual]
MatrixSymOp::mat_ptr_t AbstractLinAlgPack::MatrixSymOp::clone ( ) const [virtual]
virtual MatrixSymOp& AbstractLinAlgPack::MatrixSymOp::operator= ( const MatrixSymOp M) [inline, virtual]

Calls operator=(MatrixOp&)

Definition at line 170 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 183 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 196 of file AbstractLinAlgPack_MatrixSymOp.hpp.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines