7#include <initializer_list>
12template <
typename Scalar>
13class DiagonalizerInterface;
18template <
typename Derived>
19void diagonalize(std::initializer_list<std::reference_wrapper<Derived>> systems,
20 const DiagonalizerInterface<typename Derived::scalar_t> &diagonalizer,
21 std::optional<typename Derived::real_t> min_eigenenergy = {},
22 std::optional<typename Derived::real_t> max_eigenenergy = {},
double rtol = 1e-6);
24template <
typename Derived>
26 const DiagonalizerInterface<typename Derived::scalar_t> &diagonalizer,
27 std::optional<typename Derived::real_t> min_eigenenergy = {},
28 std::optional<typename Derived::real_t> max_eigenenergy = {},
double rtol = 1e-6);
30template <
typename Derived>
31void diagonalize(std::vector<std::reference_wrapper<Derived>> systems,
32 const DiagonalizerInterface<typename Derived::scalar_t> &diagonalizer,
33 std::optional<typename Derived::real_t> min_eigenenergy = {},
34 std::optional<typename Derived::real_t> max_eigenenergy = {},
double rtol = 1e-6);
void diagonalize(std::initializer_list< std::reference_wrapper< Derived > > systems, const DiagonalizerInterface< typename Derived::scalar_t > &diagonalizer, std::optional< typename Derived::real_t > min_eigenenergy={}, std::optional< typename Derived::real_t > max_eigenenergy={}, double rtol=1e-6)