7 #ifndef DENSE_SYM_SHIFT_SOLVE_H
8 #define DENSE_SYM_SHIFT_SOLVE_H
12 #include "../LinAlg/SymmetricLDL.h"
21 template <
typename Scalar>
25 typedef arma::Mat<Scalar> Matrix;
26 typedef arma::Col<Scalar> Vector;
39 mat(mat_.memptr(), mat_.n_rows, mat_.n_cols, false),
43 throw std::invalid_argument(
"DenseSymShiftSolve: matrix must be square");
49 int rows() {
return dim_n; }
53 int cols() {
return dim_n; }
60 solver.
compute(mat - sigma * arma::eye<Matrix>(dim_n, dim_n));
72 Vector x(x_in, dim_n,
false);
73 Vector y(y_out, dim_n,
false);
79 #endif // DENSESYMSHIFTSOLVE_H
void compute(const Matrix &mat, const char uplo= 'L')
DenseSymShiftSolve(Matrix &mat_)
void set_shift(Scalar sigma)
void solve(Vector &vec_in, Vector &vec_out)
void perform_op(Scalar *x_in, Scalar *y_out)