www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - D2 phobos BigInt bug

reply ZHOU Zhenyu <rinick goozo.net> writes:
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
Feb 05 2009
parent reply dsimcha <dsimcha yahoo.com> writes:
== 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.
Feb 05 2009
parent reply Don <nospam nospam.com> writes:
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.
Feb 06 2009
next sibling parent "Simen Kjaeraas" <simen.kjaras gmail.com> writes:
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
Feb 06 2009
prev sibling parent Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes:
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
Feb 06 2009