7 #ifndef DENSE_GEN_COMPLEX_SHIFT_SOLVE_H 8 #define DENSE_GEN_COMPLEX_SHIFT_SOLVE_H 24 template <
typename Scalar>
56 m_mat(mat), m_n(mat.
rows())
58 if (mat.rows() != mat.cols())
59 throw std::invalid_argument(
"DenseGenComplexShiftSolve: matrix must be square");
79 m_solver.
compute(m_mat.template cast<Complex>() - Complex(sigmar, sigmai) * ComplexMatrix::Identity(m_n, m_n));
96 y.noalias() = m_solver.
solve(m_x_cache).real();
102 #endif // DENSE_GEN_COMPLEX_SHIFT_SOLVE_H DenseGenComplexShiftSolve(ConstGenericMatrix &mat)
const Solve< Derived, Rhs > solve(const MatrixBase< Rhs > &b) const
EIGEN_DEVICE_FUNC Derived & setZero(Index size)
PartialPivLU & compute(const EigenBase< InputType > &matrix)
A matrix or vector expression mapping an existing array of data.
std::complex< Scalar > Complex
const Eigen::Ref< const Matrix > ConstGenericMatrix
void set_shift(Scalar sigmar, Scalar sigmai)
void perform_op(const Scalar *x_in, Scalar *y_out)
Eigen::Map< Vector > MapVec
Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > Matrix
Eigen::Matrix< Scalar, Eigen::Dynamic, 1 > Vector
Eigen::Matrix< Complex, Eigen::Dynamic, Eigen::Dynamic > ComplexMatrix
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void resize(Index rows, Index cols)
Eigen::Map< const Vector > MapConstVec
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Eigen::PartialPivLU< ComplexMatrix > ComplexSolver
Eigen::Matrix< Complex, Eigen::Dynamic, 1 > ComplexVector