42 #ifndef MATRIX_SYM_ADD_DEL_UPDATEABLE_H
43 #define MATRIX_SYM_ADD_DEL_UPDATEABLE_H
48 namespace AbstractLinAlgPack {
189 : std::logic_error(what_arg),
gamma(_gamma) {}
196 : std::logic_error(what_arg),
gamma(_gamma) {}
203 : std::logic_error(what_arg),
gamma(_gamma) {}
257 ,
bool force_factorization
259 ,PivotTolerances pivot_tols = PivotTolerances()
271 virtual Inertia
inertia()
const = 0;
324 ,
bool force_refactorization =
true
326 ,PivotTolerances pivot_tols = PivotTolerances()
365 ,
bool force_refactorization =
true
367 ,PivotTolerances pivot_tols = PivotTolerances()
376 #endif // MATRIX_SYM_ADD_DEL_UPDATEABLE_H
SingularUpdateException(const std::string &what_arg, value_type _gamma)
Base class for all polymorphic matrices.
virtual void delete_update(size_type jd, bool force_refactorization=true, EEigenValType drop_eigen_val=EIGEN_VAL_UNKNOWN, PivotTolerances pivot_tols=PivotTolerances())=0
Update by deleteing a symmetric row and column.
Thrown if matrix has the wrong inertia from what was expected.
virtual void augment_update(const DVectorSlice *t, value_type alpha, bool force_refactorization=true, EEigenValType add_eigen_val=EIGEN_VAL_UNKNOWN, PivotTolerances pivot_tols=PivotTolerances())=0
Update by adding a symmetric row and column.
RTOp_value_type value_type
PivotTolerances(value_type _warning_tol, value_type _singular_tol, value_type _wrong_inertia_tol)
Mix-in Interface for updating a serial symmetric matrix by adding and deleting rows and columns...
Thrown if the maximum size is exceeded in augment_update(...).
virtual void initialize(value_type alpha, size_type max_size)=0
Initialize to a 1x1 matrix.
virtual ~MatrixSymAddDelUpdateable()
virtual Inertia inertia() const =0
Return the inertia of the matrix (if it is known). If any of the members of the inertia is not known ...
value_type wrong_inertia_tol
RTOp_index_type size_type
virtual void set_uninitialized()=0
Set the matrix to uninitialized.
Struct for pivot tolerances to be used when initializing, and augmenting and deleting rows and column...
Thrown if the matrix is singular and should not have been.
MaxSizeExceededException(const std::string &what_arg)
Struct for the inertia of the matrix.
WarnNearSingularUpdateException(const std::string &what_arg, value_type _gamma)
Inertia(int neg_eigen_vals=UNKNOWN, int zero_eigen_vals=UNKNOWN, int pos_eigen_vals=UNKNOWN)
WrongInertiaUpdateException(const std::string &what_arg, value_type _gamma)
virtual size_type max_size() const =0
Return the maximum size the matrix is allowed to become.
Thrown if the matrix is near singular as a warning.