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

Reply via email to