Wow, thanks! That was subtle. - Clark
On Thu, May 31, 2012 at 12:49 PM, Claude Heiland-Allen <cla...@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<http://www.haskell.org/mailman/listinfo/haskell-cafe> >> > > > ______________________________**_________________ > Haskell-Cafe mailing list > Haskell-Cafe@haskell.org > http://www.haskell.org/**mailman/listinfo/haskell-cafe<http://www.haskell.org/mailman/listinfo/haskell-cafe> > >
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe