BigInt problem

Don nospam at nospam.com
Fri Feb 18 01:45:23 PST 2011


tsukikage wrote:
> Please see source in attachment.
> The output is
> 
>  M2 M3 M5 M7 M13 M17 M19 M31 M61 M89 M107 M127 M521 M607 M1279 M2203 
> M2281 M3217 M4253 M4423
> *** M9689***
>  M9941 M11213 M19937
> *** M21701***
>  M23209
> 
> It missed 2 Mersenne Primes 9689 & 21701.
> Is it my program bug or bigint broken?
> It seems subtle.
> 
> Thank you!
> 

That's quite a terrible bug in Bigint. It's slipped through testing 
because of a fault in the win32 Phobos makefile (someone disabled 
asserts!). If Phobos is compiled in debug mode, your code causes an 
assert failure inside the bigint code.

It's a straightforward problem with the fast recursive division 
implementation, failing to properly normalize intermediate quotients.
Unfortunately the fix won't make the next release, which happens in a 
few hours.


More information about the Digitalmars-d-learn mailing list