This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Sine and Cosine Accuracy
On Thu, 26 May 2005, Paul Koning wrote:
> >>>>> "Kevin" == Kevin Handy <kth@srv.net> writes:
>
> Kevin> But, you are using a number in the range of 2^90, only have 64
> Kevin> bits for storing the floating point representation, and some
> Kevin> of that is needed for the exponent.
>
> 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.
When I discussed this question with Nick Maclaren a while back after a UK
C Panel meeting, his view was that for most applications (a) the output
should be close (within 1 or a few ulp) to the sine/cosine of a value
close (within 1 or a few ulp) to the floating-point input and (b) sin^2 +
cos^2 (of any input value) should equal 1 with high precision, but most
applications (using floating-point values as approximations of
unrepresentable real numbers) wouldn't care about the answer being close
to the sine or cosine of the exact real number represented by the
floating-point value when 1ulp is on the order of 2pi or bigger. This
does of course disallow 1.2e+27 as a safe answer for sin or cos to give
for any input. (And a few applications may care for stronger degrees of
accuracy.)
--
Joseph S. Myers http://www.srcf.ucam.org/~jsm28/gcc/
jsm@polyomino.org.uk (personal mail)
joseph@codesourcery.com (CodeSourcery mail)
jsm28@gcc.gnu.org (Bugzilla assignments and CCs)