On Oct 31, 2008, at 11:44 AM, Bradley Lucier wrote:
Well, I ran things through my computable reals package (with a quick implementation of computable-sin and computable-cos, so there could be bugs here) and got
[descartes:computation/computational-reals/src] lucier% gsi Gambit v4.3.0
(load "exact-reals.scm")
"/Volumes/lucier/text/courses/computation/computational-reals/src/ exact-reals.scm"
(computable->inexact (computable-/-by-integer computable-pi 4))
.7853981633974483
(computable->inexact (computable-sin (computable-/-by-integer
computable-pi 4))) .7071067811865476
(computable->inexact (computable-sin (exact->computable (inexact- exact (computable->inexact (computable-/-by-integer computable-pi
4)))))) .7071067811865475
(computable->inexact (computable-cos (computable-/-by-integer
computable-pi 4))) .7071067811865476
(computable->inexact (computable-cos (exact->computable (inexact- exact (computable->inexact (computable-/-by-integer computable-pi
4)))))) .7071067811865476
So the inexact (double-precision floating-point) approximations to the sine and cosine of exact pi/4 are equal, as one would expect, but the inexact approximations to the sine and cosine of the inexact approximation to pi/4 are not equal (it's obvious that they're not equal to infinite precision, but indeed they round to different floating-point numbers) and it appears that glibc on linux is getting it right and the math library on Mac OS X 10.5.5 is getting it wrong.
There's the further test:
(computable-< (exact->computable (inexact->exact .
7853981633974483)) (computable-/-by-integer computable-pi 4)) #t
So the floating point approximation to pi/4 is smaller than pi/4, so its cosine is bigger than its sine.
Brad