IMHO the sqrt(rational) thing is a better argument than the precision thing (which is what the discussion on the mailing list seems to center around). The only way to keep track of whether sqrt(number) is rational or irrational is to keep it unevaluated when it's irrational, which is what SymPy does for exact numbers. The basic design decision of func(float) -> float makes computing these assumptions impossible. Since trying to make floating point numbers work with all these features would basically amount to making them exact, we don't bother, since if you want them you can just use exact numbers in the first place.