On Wed, 4 Apr 2001, Bill Schottstaedt wrote:

> Out of mild curiousity, I translated some of Clisp's numerical tests
> (released under GPL in Clisp, so presumably this is ok) to Scheme
> using the "pass-if" style of Guile's tests, and noticed some odd
> cases.  I spot-checked some of the worst looking results in
> gmp-3.0.1's pexpr program which agreed with Clisp (i.e. that the test
> should return 0).  For example, test 313, guile=8192.0, 335 got 5+e123
> etc.  In case there's interest (some of the tests are a bit nutty),
> the file is at ccrma-ftp.stanford.edu/pub/Lisp/number-tests.scm.

The problems seem to come from the fact, that the reader, as soon as it
sees an expression like <digits>/<digits>, will use a floating point
variable while parsing the digits.  This can lead to inaccuracies during
parsing, because the construction of the floating point number itself
takes a number of potentially inaccurate floating point operations.  In
contrast, (/ <digits> <digits>) will first read two exact integers, and
after that will perform a division to produce a floating point value.  
Thus, any possible inaccuracy comes from the single final divide
operation.

Best regards,
Dirk Herrmann


_______________________________________________
Bug-guile mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/bug-guile

Reply via email to