It looks like you are overflowing `Int` with 3^40. In your QuickCheck test, the function signature uses Int:
prop_sanemodexp :: Int -> Int -> Int -> Property Note: Prelude> 3^40 12157665459056928801 Prelude> 3^40 :: Int 689956897 Prelude> 3^40 `mod` 3 0 Prelude> (3^40 `mod` 3) :: Int 1 L. On Thu, May 31, 2012 at 5:35 PM, Clark Gaebel <cgae...@uwaterloo.ca> wrote: > *X> 3^40 `mod` 3 == modexp2 3 40 3 > False > *X> modexp2 3 40 3 > 0 > *X> 3^40 `mod` 3 > 0 > > I'm confused. Last I checked, 0 == 0. > > 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