Also, as far as the topic is concerned... double precision is definitely helpful for physics. However, the reality of the matter is that if single-precision affords you 10x the performance, you're not ever going to use double precision no matter the benefits.
Most current physics engines are limited to mass ranges of 5 orders of magnitude (i.e. if you have a root mass of x, the heaviest object cannot be more massive than 100x and the lightest cannot be lighter than 0.01x). Beyond which they'll get horribly unstable and start blowing up. It would actually be slightly less of a problem if not for using iterative refinement methods. Also, using vector ops decreases the effective precision a fair bit because modern scalar FPUs operate internally at DP, so SP ops get the benefit of having accuracy over all their mantissa bits (unless you use a specifically not-fully-accurate op) -- doesn't really mean you're free of single-precision instabilities since bits get cut off on write anyway. However, with packed SIMD data formats, you can't really do that short of building 4 separate FPUs that partition the vector data.