eigenvalues – Sorting Eigensystem According to Complicated Rule

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}).