GNU bug report logs - #21901
bit shift wrong on maximal right shift

Previous Next

Package: guile;

Reported by: Zefram <zefram <at> fysh.org>

Date: Fri, 13 Nov 2015 10:23:02 UTC

Severity: normal

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

Bug is archived. No further changes may be made.

Full log


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

From: Andy Wingo <wingo <at> pobox.com>
To: Zefram <zefram <at> fysh.org>
Cc: 21901 <at> debbugs.gnu.org
Subject: Re: bug#21901: bit shift wrong on maximal right shift
Date: Mon, 20 Jun 2016 18:02:50 +0200
On Fri 13 Nov 2015 11:22, Zefram <zefram <at> fysh.org> writes:

> With Guile 2.0.11:
>
> scheme@(guile-user)> (ash 123 (ash -1 63))
> $1 = 123
>
> Correct result would of course be zero.  Problem only occurs for
> exactly this shift distance: one bit less produces the right answer.
> Problem also occurs on Guile 1.8.8.  Looking at the implementation,
> the problem is attributable to the negation of the shift distance,
> which in twos-complement fails to produce the expected positive result.
>
> Note the resemblance to bug #14864, fixed in 2.0.10.  This bug is of
> very similar form, but is distinct.  The test cases of #14864 pass for
> me on the 2.0.11 that shows the problem with a 2^63 bit shift.  My bug
> does occur with the rnrs bitwise-arithmetic-shift-right, which was used
> in #14864, as well as with ash.

Fascinating, thank you!  Also occurs on 2.1.3.

Andy




This bug report was last modified 6 years and 211 days ago.

Previous Next


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