Thread overview
D2 phobos BigInt bug
Feb 06, 2009
ZHOU Zhenyu
Feb 06, 2009
dsimcha
Feb 06, 2009
Don
Feb 06, 2009
Simen Kjaeraas
February 06, 2009
BigInt b = "100000";
foreach( i; 1..20 ){
    b*=10;
    writeln(b*b);
}

system: Windows
CPU: Intel Core2 Duo T7250 2.00GHz
result:
1000000000000
100000000000000
10000000000000000
1000000000000000000
100000000000000000000
10000000000000000000000
999981553255926290448384
100000000000000000000000000
10000000000000000000000000000
1000000000000000000000000000000
100000000000000000000000000000000
10000000000000000000000000000000000
1000000000000000000000000000000000000
100000000000000000000000000000000000000
10000000000000000000000000000000000000000
999999999999999999999981553255926290448384
100000000000000000000000000000000000000000000
9999999999999999999999999981553255926290448384
1000000000000000000000000000000000000000000000000


February 06, 2009
== Quote from ZHOU Zhenyu (rinick@goozo.net)'s article
> BigInt b = "100000";
> foreach( i; 1..20 ){
>     b*=10;
>     writeln(b*b);
> }
> system: Windows
> CPU: Intel Core2 Duo T7250 2.00GHz
> result:
> 1000000000000
> 100000000000000
> 10000000000000000
> 1000000000000000000
> 100000000000000000000
> 10000000000000000000000
> 999981553255926290448384
> 100000000000000000000000000
> 10000000000000000000000000000
> 1000000000000000000000000000000
> 100000000000000000000000000000000
> 10000000000000000000000000000000000
> 1000000000000000000000000000000000000
> 100000000000000000000000000000000000000
> 10000000000000000000000000000000000000000
> 999999999999999999999981553255926290448384
> 100000000000000000000000000000000000000000000
> 9999999999999999999999999981553255926290448384
> 1000000000000000000000000000000000000000000000000

Yep, I can reproduce that on Windows on an Athlon 64 X2.  You're _not_ just going crazy.  Please file a Bugzila.
February 06, 2009
dsimcha wrote:
> == Quote from ZHOU Zhenyu (rinick@goozo.net)'s article
>> BigInt b = "100000";
>> foreach( i; 1..20 ){
>>     b*=10;
>>     writeln(b*b);
>> }
>> system: Windows
>> CPU: Intel Core2 Duo T7250 2.00GHz
>> result:
>> 1000000000000
>> 100000000000000
>> 10000000000000000
>> 1000000000000000000
>> 100000000000000000000
>> 10000000000000000000000
>> 999981553255926290448384
>> 100000000000000000000000000
>> 10000000000000000000000000000
>> 1000000000000000000000000000000
>> 100000000000000000000000000000000
>> 10000000000000000000000000000000000
>> 1000000000000000000000000000000000000
>> 100000000000000000000000000000000000000
>> 10000000000000000000000000000000000000000
>> 999999999999999999999981553255926290448384
>> 100000000000000000000000000000000000000000000
>> 9999999999999999999999999981553255926290448384
>> 1000000000000000000000000000000000000000000000000
> 
> Yep, I can reproduce that on Windows on an Athlon 64 X2.  You're _not_ just going
> crazy.  Please file a Bugzila.

I don't think that will ever get fixed (unless you make a patch yourself). Phobos BigInt was created by Janice, and she seems to have completely disappeared. I'm working on Tango BigInt, which is completely independent, and will replace Phobos BigInt eventually. ( == as soon as we get a common namespace to put it into). I don't think anyone is interested in debugging Phobos BigInt.
February 06, 2009
Don wrote:

> I don't think that will ever get fixed (unless you make a patch yourself). Phobos BigInt was created by Janice, and she seems to have completely disappeared. I'm working on Tango BigInt, which is completely independent, and will replace Phobos BigInt eventually. ( == as soon as we get a common namespace to put it into). I don't think anyone is interested in debugging Phobos BigInt.

Should still be bugzilla'd, so people know it's broken atm, and get notified when it's working.

--
Simen
February 06, 2009
Don wrote:
> dsimcha wrote:
>> == Quote from ZHOU Zhenyu (rinick@goozo.net)'s article
>>> BigInt b = "100000";
>>> foreach( i; 1..20 ){
>>>     b*=10;
>>>     writeln(b*b);
>>> }
>>> system: Windows
>>> CPU: Intel Core2 Duo T7250 2.00GHz
>>> result:
>>> 1000000000000
>>> 100000000000000
>>> 10000000000000000
>>> 1000000000000000000
>>> 100000000000000000000
>>> 10000000000000000000000
>>> 999981553255926290448384
>>> 100000000000000000000000000
>>> 10000000000000000000000000000
>>> 1000000000000000000000000000000
>>> 100000000000000000000000000000000
>>> 10000000000000000000000000000000000
>>> 1000000000000000000000000000000000000
>>> 100000000000000000000000000000000000000
>>> 10000000000000000000000000000000000000000
>>> 999999999999999999999981553255926290448384
>>> 100000000000000000000000000000000000000000000
>>> 9999999999999999999999999981553255926290448384
>>> 1000000000000000000000000000000000000000000000000
>>
>> Yep, I can reproduce that on Windows on an Athlon 64 X2.  You're _not_ just going
>> crazy.  Please file a Bugzila.
> 
> I don't think that will ever get fixed (unless you make a patch yourself). Phobos BigInt was created by Janice, and she seems to have completely disappeared. I'm working on Tango BigInt, which is completely independent, and will replace Phobos BigInt eventually. ( == as soon as we get a common namespace to put it into). I don't think anyone is interested in debugging Phobos BigInt.

I'd fix it but I know your BigInt is bound to work much better overall. Speaking of the common namespace name, it seems that problem won't go away soon. I kindly ask you to not make the inclusion of BigInt in Phobos hinge on that.

Andrei