--- Begin Message ---
Subject: |
[2.0.7] Rational number representation problem |
Date: |
Tue, 10 Sep 2013 14:28:37 +0100 |
It seems that certain small numbers are represented as integers, as (* 4294967296 4294967296) results in 0, but (* 3294967296 3294967296) returns the correct value of 10856809481709551616. In addition, (ash 1 64) gives 0, but (ash 1 65) works correctly.
--- End Message ---
--- Begin Message ---
Subject: |
Re: bug#15320: [2.0.7] Rational number representation problem |
Date: |
Thu, 12 Sep 2013 17:03:34 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) |
Josh Stokes <address@hidden> writes:
> It seems that certain small numbers are represented as integers, as (*
> 4294967296 4294967296) results in 0, but (* 3294967296 3294967296)
> returns the correct value of 10856809481709551616. In addition, (ash 1
> 64) gives 0, but (ash 1 65) works correctly.
This is fixed in Guile 2.0.9.
In case you're curious: this bug came into existence when C compilers
started optimizing out overflow checks, on the theory that if a signed
integer overflow occurs then the behavior is unspecified and thus the
compiler can do whatever it likes.
http://stackoverflow.com/questions/14495636/strange-multiplication-behavior-in-guile-scheme-interpreter/14498437#14498437
Thanks,
Mark
--- End Message ---