1#ifndef LAMBDA_LANCZOS_EIGENPAIR_MANAGER_H_
2#define LAMBDA_LANCZOS_EIGENPAIR_MANAGER_H_
24 template <
typename n_type>
37 comp = std::greater<real_t<T>>();
39 comp = std::less<real_t<T>>();
42 std::vector<std::pair<real_t<T>, std::vector<T>>> dummy;
43 this->eigenpairs = std::multimap<real_t<T>, std::vector<T>, std::function<bool(
real_t<T>,
real_t<T>)>>(
44 dummy.begin(), dummy.end(), comp);
53 assert(eigenvalues.size() == eigenvectors.size());
55 bool nothing_added =
true;
56 for (
size_t i = 0; i < eigenvalues.size(); ++i) {
57 auto inserted =
eigenpairs.emplace(std::move(eigenvalues[i]), std::move(eigenvectors[i]));
61 if (inserted != last) {
62 nothing_added =
false;
66 nothing_added =
false;
std::multimap< real_t< T >, std::vector< T >, std::function< bool(real_t< T >, real_t< T >)> > eigenpairs
Definition eigenpair_manager.hpp:30
EigenPairManager(bool find_maximum, size_t num_eigs)
Definition eigenpair_manager.hpp:34
size_t size() const
Definition eigenpair_manager.hpp:48
const size_t num_eigs
Definition eigenpair_manager.hpp:28
const bool find_maximum
Definition eigenpair_manager.hpp:27
decltype(eigenpairs) & getEigenpairs()
Definition eigenpair_manager.hpp:77
lambda_lanczos::util::MapValueIterable< decltype(eigenpairs)> getEigenvectors() const
Definition eigenpair_manager.hpp:73
bool insertEigenpairs(std::vector< real_t< T > > &eigenvalues, std::vector< std::vector< T > > &eigenvectors)
Definition eigenpair_manager.hpp:52
util::real_t< n_type > real_t
Definition eigenpair_manager.hpp:25
Definition eigenpair_manager.hpp:10
typename realTypeMap< T >::type real_t
Type mapper from T to real type of T.
Definition common.hpp:102
Definition eigenpair_manager.hpp:9