GNU bug report logs - #14864
bitwise-arithmetic-shift-right is wrong for large shift amounts

Previous Next

Package: guile;

Reported by: Göran Weinholt <goran <at> weinholt.se>

Date: Sun, 14 Jul 2013 16:15:01 UTC

Severity: normal

Done: Mark H Weaver <mhw <at> netris.org>

Bug is archived. No further changes may be made.

Full log


Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Göran Weinholt <goran <at> weinholt.se>
To: bug-guile <at> gnu.org
Subject: bitwise-arithmetic-shift-right is wrong for large shift amounts
Date: Sun, 14 Jul 2013 18:08:55 +0200
[Message part 1 (text/plain, inline)]
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 <goran <at> weinholt.se>
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.
[Message part 2 (application/pgp-signature, inline)]

This bug report was last modified 12 years and 10 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.