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&) 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 MatrixOp & | operator= (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 VectorSpace & | space_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 VectorSpace & | space_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... | |
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.
|
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.
|
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.
|
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.
|
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.
|
virtual |
Returns this->rows()
Overridden from MatrixOp
Reimplemented from AbstractLinAlgPack::MatrixBase.
Definition at line 82 of file AbstractLinAlgPack_MatrixSymOp.cpp.
|
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.
|
virtual |
Returns this->clone_mswo()
.
Reimplemented from AbstractLinAlgPack::MatrixOp.
Reimplemented in AbstractLinAlgPack::MatrixSymOpNonsing.
Definition at line 93 of file AbstractLinAlgPack_MatrixSymOp.cpp.
|
virtual |
Returns this->clone_mswo()
.
Reimplemented from AbstractLinAlgPack::MatrixOp.
Reimplemented in AbstractLinAlgPack::MatrixSymOpNonsing.
Definition at line 99 of file AbstractLinAlgPack_MatrixSymOp.cpp.
|
inlinevirtual |
Calls operator=(MatrixOp&)
Definition at line 183 of file AbstractLinAlgPack_MatrixSymOp.hpp.
|
friend |
Definition at line 196 of file AbstractLinAlgPack_MatrixSymOp.hpp.
|
friend |
Definition at line 209 of file AbstractLinAlgPack_MatrixSymOp.hpp.