chris jefferson wrote: > I would like to say yes, I disagree that this should be true. By your > argument, why isn't sin(pow(2.0,90.0)+1) == sin(6.153104..)? Also, how > the heck do you intend to actually calculate that value? You can't just > keep subtracting multiples of 2*pi from pow(2.0, 90.0) else nothing will > happen, and if you choose to subtract some large multiple of 2*pi, your > answer wouldn't end up accurate to anywhere near that many decimal > places. Floating point numbers approximate real numbers, and at the size > you are considering, the approximation contains values for which sin(x) > takes all values in the range [-1,1].
Nonsense. Show me an example where the following function should *not* print the same values for a and b: void same_sines(double x) { double a = sin(x); double b = sin(fmod(x, 2.0 * PI)); printf("%20.15f,%20.15f\n",a,b); } Granted, -funsafe-math-optimizations *will* produce different values for certain values, such as x = pow(2.0,90.0), on x87 hardware, but that is an error in computing a, not a violation of principle. ..Scott