pairinteraction
A Rydberg Interaction Calculator
DiagonalizerLapackeEvr.hpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2025 Pairinteraction Developers
2// SPDX-License-Identifier: LGPL-3.0-or-later
3
4#pragma once
5
9
10#include <Eigen/SparseCore>
11#include <complex>
12
13namespace pairinteraction {
14template <typename Scalar>
16public:
18
20 EigenSystemH<Scalar> eigh(const Eigen::SparseMatrix<Scalar, Eigen::RowMajor> &matrix,
21 double rtol) const override;
22 EigenSystemH<Scalar> eigh(const Eigen::SparseMatrix<Scalar, Eigen::RowMajor> &matrix,
23 std::optional<real_t> min_eigenvalue,
24 std::optional<real_t> max_eigenvalue, double rtol) const override;
25
26private:
27 template <typename ScalarLim>
28 EigenSystemH<Scalar> dispatch_eigh(const Eigen::SparseMatrix<Scalar, Eigen::RowMajor> &matrix,
29 std::optional<real_t> min_eigenvalue,
30 std::optional<real_t> max_eigenvalue, double rtol) const;
31};
32
33extern template class DiagonalizerLapackeEvr<double>;
35} // namespace pairinteraction
typename traits::NumTraits< Scalar >::real_t real_t
EigenSystemH< Scalar > eigh(const Eigen::SparseMatrix< Scalar, Eigen::RowMajor > &matrix, double rtol) const override
DiagonalizerLapackeEvr(FloatType float_type=FloatType::FLOAT64)