8#include <nanobind/eigen/sparse.h>
9#include <nanobind/nanobind.h>
10#include <nanobind/stl/complex.h>
11#include <nanobind/stl/optional.h>
13namespace nb = nanobind;
17static void declare_diagonalizer_interface(nb::module_ &m, std::string
const &type_name) {
18 std::string pylass_name =
"DiagonalizerInterface" + type_name;
20 nb::class_<DiagonalizerInterface<T>> pyclass(m, pylass_name.c_str());
23 nb::overload_cast<
const Eigen::SparseMatrix<T, Eigen::RowMajor> &,
double>(
26 nb::overload_cast<
const Eigen::SparseMatrix<T, Eigen::RowMajor> &,
27 std::optional<real_t>, std::optional<real_t>,
double>(
32static void declare_eigen_system_h(nb::module_ &m, std::string
const &type_name) {
33 std::string pylass_name =
"EigenSystemH" + type_name;
34 nb::class_<EigenSystemH<T>> pyclass(m, pylass_name.c_str());
40 declare_diagonalizer_interface<double>(m,
"Real");
41 declare_diagonalizer_interface<std::complex<double>>(m,
"Complex");
42 declare_eigen_system_h<double>(m,
"Real");
43 declare_eigen_system_h<std::complex<double>>(m,
"Complex");
void bind_diagonalizer_interface(nb::module_ &m)
typename traits::NumTraits< Scalar >::real_t real_t