GNU bug report logs -
#21901
bit shift wrong on maximal right shift
Previous Next
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):
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.