I have found the mismatch in the result of some complex calculations. When i thoroughly observed the intermediate results, its the std::pow function which creates that misma
From the wikipedia page on long double
On the x86 architecture, most C compilers implement long double as the 80-bit extended precision type supported by x86 hardware [...]. An exception is Microsoft Visual C++ for x86, which makes long double a synonym for double.
So when you are compiling on 32 bit long double = double
, but on x64 long double
is actually an 80 bit floating point, so the results are different.