Re: Floating point differences between executables sharing a dll
<awong8@gmail.com> wrote:
I am encountering the following scenario while compiling a
project
under Visual Studio 2005 with the floating point model set
as precise.
Two executables A and B share a common dll C. Both call
the function
func() in C with the same input and get slightly different
floating
point results. Below is what func() looks like:
const long double pi = atanl(1.0) * 4.0;
long double func(long double myVar) {
long double res = myVar * pi / 180.0;
return res;
}
Changing func() into the following gives the same result
(although
different from the first version) in both executables:
const long double pi = atanl(1.0) * 4.0;
long double func(long double myVar) {
long double intermediateRes = pi / 180.0;
long double res = myVar * intermediateRes;
return res;
}
Does anyone know why this is happening?
It's a wild guess, but what will happen if you replace call
to `atanl' with predefined math constant? You can find them
here:
"Math Constants"
http://msdn2.microsoft.com/en-us/library/4hwaceh6(vs.80).aspx
Alex