pairinteraction
A Rydberg Interaction Calculator
DiagonalizerEigen.hpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2024 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
23private:
24 template <typename ScalarLim>
25 EigenSystemH<Scalar> dispatch_eigh(const Eigen::SparseMatrix<Scalar, Eigen::RowMajor> &matrix,
26 double rtol) const;
27};
28
29extern template class DiagonalizerEigen<double>;
30extern template class DiagonalizerEigen<std::complex<double>>;
31} // namespace pairinteraction
DiagonalizerEigen(FloatType float_type=FloatType::FLOAT64)
EigenSystemH< Scalar > eigh(const Eigen::SparseMatrix< Scalar, Eigen::RowMajor > &matrix, double rtol) const override
typename traits::NumTraits< Scalar >::real_t real_t