12#include <Eigen/SparseCore>
17template <
typename Scalar>
25template <
typename Scalar>
35 double rtol)
const = 0;
37 std::optional<real_t> min_eigenvalue,
38 std::optional<real_t> max_eigenvalue,
double rtol)
const;
42 template <
typename ScalarLim>
45 template <
typename RealLim>
57 const Eigen::MatrixX<std::complex<double>> &matrix,
double &shift,
double rtol)
const;
70 const Eigen::MatrixX<std::complex<double>> &matrix,
double &shift,
double rtol)
const;
Eigen::MatrixX< ScalarLim > subtract_mean(const Eigen::MatrixX< Scalar > &matrix, real_t &shift, double rtol) const
virtual ~DiagonalizerInterface()=default
typename traits::NumTraits< Scalar >::real_t real_t
virtual EigenSystemH< Scalar > eigh(const Eigen::SparseMatrix< Scalar, Eigen::RowMajor > &matrix, double rtol) const =0
DiagonalizerInterface(FloatType float_type)
Eigen::VectorX< real_t > add_mean(const Eigen::VectorX< RealLim > &eigenvalues, real_t shift) const
Matrix< Type, Dynamic, Dynamic > MatrixX
Matrix< Type, Dynamic, 1 > VectorX
Eigen::SparseMatrix< Scalar, Eigen::RowMajor > eigenvectors
Eigen::VectorX< real_t > eigenvalues
typename traits::NumTraits< Scalar >::real_t real_t
Helper struct to extract types from a numerical type.