Josh Stokes <[email protected]> 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
