template void diagonalize(std::initializer_list<std::reference_wrapper<TYPE<SCALAR>>> systems, \
const DiagonalizerInterface<TYPE<SCALAR>::scalar_t> &diagonalizer, \
std::optional<TYPE<SCALAR>::real_t> min_eigenenergy, \
std::optional<TYPE<SCALAR>::real_t> max_eigenenergy, double rtol); \
template
void diagonalize(std::vector<TYPE<SCALAR>> &systems, \
const DiagonalizerInterface<TYPE<SCALAR>::scalar_t> &diagonalizer, \
std::optional<TYPE<SCALAR>::real_t> min_eigenenergy, \
std::optional<TYPE<SCALAR>::real_t> max_eigenenergy, double rtol); \
template
void diagonalize(std::vector<std::reference_wrapper<TYPE<SCALAR>>> systems, \
const DiagonalizerInterface<TYPE<SCALAR>::scalar_t> &diagonalizer, \
std::optional<TYPE<SCALAR>::real_t> min_eigenenergy, \
std::optional<TYPE<SCALAR>::real_t> max_eigenenergy, double rtol);
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)