1#ifndef LAMBDA_LANCZOS_EIGENPAIR_MANAGER_H_
2#define LAMBDA_LANCZOS_EIGENPAIR_MANAGER_H_
25 template <
typename n_type>
39 comp = std::greater<real_t<T>>();
41 comp =std::less<real_t<T>>();
44 std::vector<std::pair<real_t<T>, std::vector<T>>> dummy;
46 std::multimap<real_t<T>, std::vector<T>, std::function<bool (
real_t<T>,
real_t<T>)>>(dummy.begin(), dummy.end(), comp);
55 std::vector<std::vector<T>>& eigenvectors) {
56 assert(eigenvalues.size() == eigenvectors.size());
58 bool nothing_added =
true;
59 for(
size_t i = 0; i < eigenvalues.size(); ++i) {
60 auto inserted =
eigenpairs.emplace(std::move(eigenvalues[i]), std::move(eigenvectors[i]));
64 if(inserted != last) {
65 nothing_added =
false;
69 nothing_added =
false;
Class to manage calculated eigenpairs.
Definition: eigenpair_manager.hpp:23
EigenPairManager(bool find_maximum, size_t num_eigs)
Definition: eigenpair_manager.hpp:35
size_t size() const
Definition: eigenpair_manager.hpp:50
const size_t num_eigs
Definition: eigenpair_manager.hpp:29
const bool find_maximum
Definition: eigenpair_manager.hpp:28
std::multimap< real_t< T >, std::vector< T >, std::function< bool(real_t< T >, real_t< T >)> > eigenpairs
Definition: eigenpair_manager.hpp:31
decltype(eigenpairs) & getEigenpairs()
Definition: eigenpair_manager.hpp:80
lambda_lanczos::util::MapValueIterable< decltype(eigenpairs)> getEigenvectors() const
Definition: eigenpair_manager.hpp:76
bool insertEigenpairs(std::vector< real_t< T > > &eigenvalues, std::vector< std::vector< T > > &eigenvectors)
Definition: eigenpair_manager.hpp:54
util::real_t< n_type > real_t
Definition: eigenpair_manager.hpp:26
Definition: lambda_lanczos_util.hpp:59
typename realTypeMap< T >::type real_t
Type mapper from T to real type of T.
Definition: lambda_lanczos_util.hpp:103
Definition: eigenpair_manager.hpp:10