44 #include "AbstractLinAlgPack_MatrixSymOpSerial.hpp"
45 #include "AbstractLinAlgPack_MatrixSymOpGetGMSSymMutable.hpp"
46 #include "AbstractLinAlgPack_GenPermMatrixSlice.hpp"
47 #include "AbstractLinAlgPack_EtaVector.hpp"
48 #include "DenseLinAlgPack_DMatrixOp.hpp"
49 #include "DenseLinAlgPack_DMatrixAsTriSym.hpp"
50 #include "AbstractLinAlgPack_LinAlgOpPackHack.hpp"
51 #include "DenseLinAlgPack_AssertOp.hpp"
52 #include "Teuchos_dyn_cast.hpp"
54 namespace AbstractLinAlgPack {
90 DenseLinAlgPack::MtM_assert_sizes(
93 DenseLinAlgPack::Mp_M_assert_sizes(
111 i_k = P_trans ==
no_trans ? P_itr->row_i() : P_itr->col_j(),
112 j_k = P_trans ==
no_trans ? P_itr->col_j() : P_itr->row_i();
119 if( S->
uplo() == BLAS_Cpp::upper )
153 ,gpms_rhs, gpms_rhs_trans
167 ,dyn_cast<const MatrixOpSerial>(mwo_rhs), mwo_rhs_trans
size_type cols() const
Returns this->rows()
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.
void Vp_StPtMtV(VectorMutable *v_lhs, value_type alpha, const GenPermMatrixSlice &P_rhs1, BLAS_Cpp::Transp P_rhs1_trans, const MatrixOp &M_rhs2, BLAS_Cpp::Transp M_rhs2_trans, const Vector &v_rhs3, value_type beta=1.0)
v_lhs = alpha * op(P_rhs1) * op(M_rhs2) * v_rhs3 + beta * v_rhs
void Vp_StV(VectorMutable *v_lhs, const value_type &alpha, const Vector &v_rhs)
v_lhs = alpha * v_rhs + v_lhs
T_To & dyn_cast(T_From &from)
const_iterator end() const
Return the end of this->const_iterator_begin().
BLAS_Cpp::Uplo uplo() const
Base class for all matrices implemented in a shared memory address space.
Interface adding operations specific for a symmetric matrix {abstract}.
const VectorSpace & space_rows() const
Must be overridden to call MatrixOpSerial::space_rows()
This is a full random access iterator for accessing row and colunmn indices.
Abstract interface for objects that represent a space for mutable coordinate vectors.
const_iterator begin() const
Return a random access iterator for accessing which row and column that each nonzero 1...
Helper class type that simplifies the usage of the MatrixSymOpGetGMSSymMutable interface for clients...
Create an eta vector (scaled by alpha = default 1).
Base class for all matrices that support basic matrix operations.
void Mt_S(MatrixOp *mwo_lhs, value_type alpha)
Transp trans_not(Transp _trans)
virtual size_type rows() const
Return the number of rows in the matrix.
DVectorSlice col(size_type j)
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).
size_type cols(size_type rows, size_type cols, BLAS_Cpp::Transp _trans)
#define TEUCHOS_TEST_FOR_EXCEPT(throw_exception_test)
Concrete matrix type to represent general permutation (mapping) matrices.
const VectorSpace & space_rows() const