In two commits at https://github.com/pernici/sympy/pull/11 I 1) use subs with evalf (which is the right way to do it) and start with a lower precision and jump to default precision if there is a tie; 2) use the root intervals in a very simple sort of way.