So it turns out that balancing the matrix prior to taking the eigenvalues is absolutely crucial (for my problem at the very least).
I rapidly came to this conclusion after giving up on Eigen's eigenvalue solver due to the terrible eigenvalues that I was obtaining due to the ill-conditioning of the matrix. Numpy
crucially does balance the matrix prior to eigenvalue solving. I would recommend that a method like the attached in my stack overflow question be made available :
http://stackoverflow.com/a/43169781/1360263 . I'm not sure what the protocol is for PR (I don't use mercurial), and I am sure my solution needs a bit more templating magic, but without this, the eigenvalues from Eigen are useless for some challenging eigenvalue solving problems.