#ifndef GRID_EIGENSORT_H #define GRID_EIGENSORT_H namespace Grid { ///////////////////////////////////////////////////////////// // Eigen sorter to begin with ///////////////////////////////////////////////////////////// template class SortEigen { private: static bool less_lmd(RealD left,RealD right){ return fabs(left) < fabs(right); } static bool less_pair(std::pair& left, std::pair& right){ return fabs(left.first) < fabs(right.first); } public: void push(DenseVector& lmd, DenseVector& evec,int N) { DenseVector > emod; typename DenseVector >::iterator it; for(int i=0;i(lmd[i],evec[i])); } partial_sort(emod.begin(),emod.begin()+N,emod.end(),less_pair); it=emod.begin(); for(int i=0;ifirst; evec[i]=it->second; ++it; } } void push(DenseVector& lmd,int N) { std::partial_sort(lmd.begin(),lmd.begin()+N,lmd.end(),less_lmd); } bool saturated(RealD lmd, RealD thrs) { return fabs(lmd) > fabs(thrs); } }; } #endif