I have looked for an answer to this but the near duplicates I could find seemed slightly distinct.

I have a matrix $A$ which has eigenvalues in pairs $lambda_1,-lambda_1,lambda_2,-lambda_2,dots$. I would like to sort the eigensystem such that the eigenvectors are in this order, with the eigenvalues having descending real parts. That is, I want to sort in descending order of the function $f=|Re(cdot)|$ and break ties by $g=Re(cdot)$.

What I was hoping for was something like:

```
f(z_) := Abs(Re(z));
g(z_) := Re(z);
{eval,evec} = SortBy(Eigensystem(N(A))(Transpose),{f,z})(Transpose);
```

but this doesn’t work. Replacing {f,g} with Abs@*Re does work but not for the tiebreak (neither does {Abs@*Re,Re}).