digitalmars.D.bugs - [Issue 4470] New: Problems with std.bigint mod and divide
- d-bugmail puremagic.com (32/32) Jul 16 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4470
- d-bugmail puremagic.com (23/23) Jul 16 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4470
- d-bugmail puremagic.com (23/23) Jul 16 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4470
- d-bugmail puremagic.com (26/26) Jul 16 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4470
- d-bugmail puremagic.com (10/10) Jul 16 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4470
- d-bugmail puremagic.com (9/9) Sep 20 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4470
http://d.puremagic.com/issues/show_bug.cgi?id=4470
Summary: Problems with std.bigint mod and divide
Product: D
Version: D2
Platform: x86
OS/Version: Windows
Status: NEW
Severity: normal
Priority: P2
Component: Phobos
AssignedTo: nobody puremagic.com
ReportedBy: yebblies gmail.com
With the version of std.bigint packaged with dmd2.047 (on winxp / x86)
1. You get 'object.Error: Win32 Exception'
when attempting any BigInt % BigInt(1) or BigInt % 1.
Test case:
import std.bigint;
void main()
{
auto r1 = BigInt(6) % 1;
auto r2 = BigInt(6) % BigInt(1);
}
2. BigInt % BigInt(0) seems to go into an infinite loop
import std.bigint;
void main()
{
auto r = BigInt(6) % BigInt(0);
}
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jul 16 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4470
The following tests should succeed when this issue has been fixed:
unittest
{
try
{
scope(success) assert(0);
auto r1 = BigInt(6) % BigInt(0);
} catch {}
try
{
scope(success) assert(0);
auto r1 = BigInt(6) % 0;
} catch {}
assert(BigInt(6) % BigInt(1) == 1);
assert(BigInt(6) % 1 == 1);
assert(BigInt(-6) % BigInt(-1) == -1);
assert(BigInt(-6) % -1 == -1);
}
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jul 16 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4470
My bad! That should be:
unittest
{
try
{
scope(success) assert(0);
auto r1 = BigInt(6) % BigInt(0);
} catch {}
try
{
scope(success) assert(0);
auto r1 = BigInt(6) % 0;
} catch {}
assert(BigInt(6) % BigInt(1) == 0);
assert(BigInt(6) % 1 == 0);
assert(BigInt(-6) % BigInt(-1) == 0);
assert(BigInt(-6) % -1 == 0);
}
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jul 16 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4470
This seems to crash with every power of two, int or BigInt.
import std.bigint;
void main()
{
foreach(a; 0..1000)
{
foreach(b; 0..1000)
{
try
{
scope(failure) writeln(a, " % ", b, " failed");
auto x = BigInt(a) % b;
} catch {}
try
{
scope(failure) writeln(a, " % BigInt(", b, ") failed");
auto x = BigInt(a) % BigInt(b);
} catch {}
}
}
}
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jul 16 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4470
Don <clugdbug yahoo.com.au> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |clugdbug yahoo.com.au
Fixed svn 1764. The 'power of 2' bug was already fixed in svn 1673.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jul 16 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4470
Don <clugdbug yahoo.com.au> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |FIXED
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Sep 20 2010









d-bugmail puremagic.com 