44 #include "AbstractLinAlgPack_MatrixSymNonsingSerial.hpp"
45 #include "AbstractLinAlgPack_MatrixSymOpGetGMSSymMutable.hpp"
46 #include "AbstractLinAlgPack_MatrixOpSerial.hpp"
47 #include "AbstractLinAlgPack_EtaVector.hpp"
48 #include "DenseLinAlgPack_DMatrixClass.hpp"
49 #include "DenseLinAlgPack_DMatrixOp.hpp"
50 #include "DenseLinAlgPack_DMatrixAsTriSym.hpp"
51 #include "AbstractLinAlgPack_LinAlgOpPackHack.hpp"
52 #include "DenseLinAlgPack_AssertOp.hpp"
53 #include "Teuchos_dyn_cast.hpp"
55 namespace LinAlgOpPack {
60 namespace AbstractLinAlgPack {
70 using DenseLinAlgPack::nonconst_tri_ele;
71 using DenseLinAlgPack::tri_ele;
73 using LinAlgOpPack::M_StMtM;
100 for( size_type j = 1; j <= m; ++j ) {
102 LinAlgOpPack::V_MtV( &t1, B,
trans_not(B_trans), e_j() );
104 LinAlgOpPack::V_StMtV( &t3, a, B, B_trans, t2() );
106 rng = ( S->
uplo() == BLAS_Cpp::upper ?
Range1D(1,j) : Range1D(j,m) );
107 S->
gms().
col(j)(rng) = t3(rng);
122 ,dyn_cast<const MatrixOpSerial>(mwo), mwo_trans
void Mp_StMtM(MatrixOp *mwo_lhs, value_type alpha, const MatrixOp &mwo_rhs1, BLAS_Cpp::Transp trans_rhs1, const MatrixOp &mwo_rhs2, BLAS_Cpp::Transp trans_rhs2, value_type beta=1.0)
mwo_lhs = alpha * op(mwo_rhs1) * op(mwo_rhs2) + beta * mwo_lhs (right) (xGEMM).
T_To & dyn_cast(T_From &from)
void assign(VectorMutable *v_lhs, const V &V_rhs)
v_lhs = V_rhs.
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}.
virtual size_type cols() const
Return the number of columns in the matrix.
Helper class type that simplifies the usage of the MatrixSymOpGetGMSSymMutable interface for clients...
Create an eta vector (scaled by alpha = default 1).
void V_InvMtV(VectorMutable *v_lhs, const MatrixNonsing &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const Vector &v_rhs2)
v_lhs = inv(op(M_rhs1)) * v_rhs2
void Vp_StMtV(VectorMutable *v_lhs, value_type alpha, const MatrixOp &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const Vector &v_rhs2, value_type beta=1.0)
v_lhs = alpha * op(M_rhs1) * v_rhs2 + beta * v_lhs (BLAS xGEMV)
Base class for all matrices that support basic matrix operations.
Transp trans_not(Transp _trans)
void M_StInvMtM(MatrixOp *m_lhs, value_type alpha, const MatrixNonsing &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const MatrixOp &mwo_rhs2, BLAS_Cpp::Transp trans_rhs2)
m_lhs = alpha * inv(op(mwo_rhs1)) * op(mwo_rhs2) (right)
virtual size_type rows() const
Return the number of rows in the matrix.
virtual void M_StMtInvMtM(DMatrixSliceSym *sym_gms_lhs, value_type alpha, const MatrixOpSerial &mwo, BLAS_Cpp::Transp mwo_trans, EMatrixDummyArg) const
sym_gms_lhs = alpha * op(mwo) * inv(M) * op(mwo)'.
DVectorSlice col(size_type j)
size_type cols(size_type rows, size_type cols, BLAS_Cpp::Transp _trans)