Hello!

Fair enough, so with 64 bit floats you have no right to expect an
accurate answer for sin(2^90).  However, you DO have a right to expect
an answer in the range [-1,+1] rather than the 1.2e+27 that Richard
quoted.  I see no words in the description of
-funsafe-math-optimizations to lead me to expect such a result.

The source operand to fsin, fcos and fsincos x87 insns must be within the range of +-2^63, otherwise a C2 flag is set in FP status word that marks insufficient operand reduction. Limited operand range is the reason, why fsin & friends are enabled only with -funsafe-math-optimizations.

However, the argument to fsin can be reduced to an acceptable range by using fmod builtin. Internally, this builtin is implemented as a very tight loop that check for insufficient reduction, and could reduce whatever finite value one wishes.

Out of curiosity, where could sin(2^90) be needed? It looks rather big angle to me.

Uros.

Reply via email to