42 #ifndef ABSTRACT_LINALG_PACK_MATRIX_NONSINGULAR_H
43 #define ABSTRACT_LINALG_PACK_MATRIX_NONSINGULAR_H
48 namespace AbstractLinAlgPack {
141 #ifndef DOXYGEN_COMPILE
152 {
public:
SingularMatrix(
const std::string& what_arg) : std::logic_error(what_arg) {}};
185 ,
const Vector& v_rhs2)
const = 0;
253 M_rhs1.
V_InvMtV(v_lhs,trans_rhs1,v_rhs2);
261 M_rhs1.
V_InvMtV(v_lhs,trans_rhs1,sv_rhs2);
292 M_rhs1.
M_StInvMtM(m_lhs,alpha,trans_rhs1,mwo_rhs2,trans_rhs2);
301 M_rhs2.
M_StMtInvM(m_lhs,alpha,mwo_rhs1,trans_rhs1,trans_rhs2);
312 #endif // ABSTRACT_LINALG_PACK_MATRIX_NONSINGULAR_H
virtual mat_mns_mut_ptr_t clone_mns()
Clone the non-const matrix object (if supported).
Base class for all polymorphic matrices.
value_type transVtInvMtV(const Vector &v_rhs1, const MatrixNonsing &M_rhs2, BLAS_Cpp::Transp trans_rhs2, const Vector &v_rhs3)
result = v_rhs1' * inv(op(M_rhs2)) * v_rhs3
Abstract interface for immutable, finite dimensional, coordinate vectors {abstract}.
friend void V_InvMtV(VectorMutable *v_lhs, const MatrixNonsing &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const Vector &v_rhs2)
RTOp_value_type value_type
Sparse Vector Slice class template.
void M_StMtInvM(MatrixOp *m_lhs, value_type alpha, const MatrixOp &mwo_rhs1, BLAS_Cpp::Transp trans_rhs1, const MatrixNonsing &M_rhs2, BLAS_Cpp::Transp trans_rhs2)
m_lhs = alpha * op(mwo_rhs1) * inv(op(M_rhs2)) (left)
SingularMatrix(const std::string &what_arg)
friend void M_StMtInvM(MatrixOp *m_lhs, value_type alpha, const MatrixOp &mwo_rhs1, BLAS_Cpp::Transp trans_rhs1, const MatrixNonsing &M_rhs2, BLAS_Cpp::Transp trans_rhs2)
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
Base class for all matrices that support basic matrix operations.
friend value_type transVtInvMtV(const Vector &v_rhs1, const MatrixNonsing &M_rhs2, BLAS_Cpp::Transp trans_rhs2, const Vector &v_rhs3)
Abstract interface for mutable coordinate vectors {abstract}.
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)
This exception will be thrown if it turns out at runtime that the matrix is numerically singular...
friend 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)
Abstract base class for all nonsingular polymorphic matrices that can solve for linear system with bu...