Hello schemers, bitwise-arithmetic-shift-right from (rnrs) is wrong for ridiculously large shift amounts:
scheme@(guile-user)> (import (rnrs)) scheme@(guile-user)> (bitwise-arithmetic-shift-right -2 (+ (greatest-fixnum) 1)) $1 = -2 The correct result is -1. Tested on an amd64 system with guile-2.0.9.20-10454-dirty. Here are a few more failing cases, if it helps: (bitwise-arithmetic-shift-right -1939573486025768832 1842615318141600354) => -112898036 ; *** failed *** ; expected result: -1 (bitwise-arithmetic-shift-right 1344211617424411880 1877595747324902264) => 18 ; *** failed *** ; expected result: 0 (bitwise-arithmetic-shift-right -1152921504606846979 88553614889043251) => -513 ; *** failed *** ; expected result: -1 (bitwise-arithmetic-shift-right -870600743868926059 1508151148) => -49488 ; *** failed *** ; expected result: -1 Regards, -- Göran Weinholt <[email protected]> 13 MR. JAKES: I think our economy was based on 14 industrial process. 15 JUSTICE SCALIA: It was based on horses, for 16 Pete's sake.
pgpPI122sPp0N.pgp
Description: PGP signature
