Example #1
0
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);
}
Example #2
0
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;
    }
}