Wow, thanks! That was subtle.

  - Clark

On Thu, May 31, 2012 at 12:49 PM, Claude Heiland-Allen <claude@goto10.org> wrote:
Hi Clark,

ghci is defaulting to Integer
modexp2 forces Int
Int overflows with 3^40


On 31/05/12 17:35, Clark Gaebel wrote:
*X>  3^40 `mod` 3 == modexp2 3 40 3
False

*X> fromInteger (3^40 `mod` 3) == modexp2 3 40 3
True


*X>  modexp2 3 40 3
0
*X>  3^40 `mod` 3
0

*X> 3^40 `mod` 3 ::Int

2

I'm confused. Last I checked, 0 == 0.

Int overflow is ugly!

*X> 3^40
12157665459056928801
*X> maxBound :: Int
9223372036854775807


Claude


Using GHC 7.4.1, and the file x.hs (which has been loaded in ghci) can be
found here: http://hpaste.org/69342

I noticed this after prop_sanemodexp was failing.

Any help would be appreciated,
  - Clark




_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe