|
AbstractLinAlgPack: C++ Interfaces For Vectors, Matrices And Related Linear Algebra Objects
Version of the Day
|
Interface adding operations specific for a symmetric matrix {abstract}. More...
#include <AbstractLinAlgPack_MatrixSymOp.hpp>

Public Member Functions | |
| virtual MatrixSymOp & | operator= (const MatrixSymOp &M) |
| Calls operator=(MatrixOp&) | |
Public types | |
| enum | EMatRhsPlaceHolder |
| 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 VectorSpace & | space_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(). | |
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.
Definition at line 82 of file AbstractLinAlgPack_MatrixSymOp.hpp.
| 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 [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 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 [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 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 | ) | [inline, virtual] |
Calls operator=(MatrixOp&)
Definition at line 183 of file AbstractLinAlgPack_MatrixSymOp.hpp.
| 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.
1.7.6.1