[Haskell-cafe] Bug in Data.Bits.shift?
Keith
keith.wygant at gmail.com
Thu Oct 14 20:05:42 UTC 2021
As currently defined, `shift x minBound` calls `shiftR` with a negative displacement.
This would avoid that:
```
shift x n
| n >= 0 = shiftL x n
| n == minBound = shiftR (shiftR x maxBound) 1
| otherwise = shiftR x (-n)
```
P.S. Philosophically, `rotate` on a negative `Integer` should do sign extension in the least significant bits (though by the description of `rotate` it should not...).
—
Sent from my phone with K-9 Mail.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20211014/1927ebc2/attachment.html>
More information about the Haskell-Cafe
mailing list