In x86 Architectures the precision of floating point is 80-bit but a double
has only 64-bit. And with GCC Optimization evaluating an expression resulting a floating number and storing it on a double
can result different values since the optimization changes how the floating number get adjusted to less precision.
To get the same result with different GCC Otimizations use -ffloat-store
option.