In most of the code I see around, `double` is favourite against `float`, even when a high precision is not needed. 

Since there are [performance penalties](http://en.wikipedia.org/wiki/Double-precision_floating-point_format#Execution_speed_with_double-precision_arithmetic) when using double types (CPU/GPU/memory/bus/cache/...), what is the reason of this double overuse?

*Example*: in computational fluid dynamics all the software I worked with uses doubles. In this case a high precision is useless (because of the errors due to the approximations in the mathematical model), and there is a huge amount of data to be moved around, which could be cut in half using floats. 

The fact that today's computers are powerful is meaningless, because they are used to solve more and more complex problems.