void EigsGen::sortDesc(VectorXcd &values) { if(values.imag().isZero()) std::sort(values.data(), values.data() + values.size(), compare_complex_real); else std::sort(values.data(), values.data() + values.size(), compare_complex_mod); }
void EigsGen::sortDescPair(VectorXcd &values, VectorXi &index) { int len = values.size(); if(len != index.size()) return; std::vector<SortPair> v(len); for(int i = 0; i < len; i++) { v[i].first = values[i]; v[i].second = index[i]; } if(values.imag().isZero()) std::sort(v.begin(), v.end(), compare_pair<COMPREAL>); else std::sort(v.begin(), v.end(), compare_pair<COMPMOD>); for(int i = 0; i < len; i++) { values[i] = v[i].first; index[i] = v[i].second; } }