February 13, 2011 BigInt problem | ||||
---|---|---|---|---|
| ||||
Attachments: | 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! |
February 18, 2011 Re: BigInt problem | ||||
---|---|---|---|---|
| ||||
Posted in reply to tsukikage | 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.
|
Copyright © 1999-2021 by the D Language Foundation