The VS2005 floating point model fixes the lack of a defined floating point model in VS2003. What this means for you is that there is no real analog to VS2003 in VS2005. With VS2005 we tried to construct rules around FP behavior that you can expect, whereas in VS2003 it was a lot more like "we'll do what we can but no promises".
With that said the reason we moved to /fp:precise as the default is that in terms of performance the generated code performs about as well as the default for VS2003, but with the added benefit of some guarantees around what we will do and what we won't.
If you are getting different results between VS2003 and VS2005 then you are probably seeing the result of VS2005 not performing a certain type of optimization that loses some accuracy, but VS2003 was doing so. Also remember that spilling registers can affect your code since you only get 11-bits in the exponent when in memory.
While we'll probably never implement a "Do the same thing as VS2003 switch" we are open to suggestions in our FP model, and would love to hear them.
Hope that helps.
|