[Issue 5971] New: Some BigInt ideas
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Mon May 9 15:33:20 PDT 2011
http://d.puremagic.com/issues/show_bug.cgi?id=5971
Summary: Some BigInt ideas
Product: D
Version: D2
Platform: All
OS/Version: All
Status: NEW
Severity: enhancement
Priority: P2
Component: Phobos
AssignedTo: nobody at puremagic.com
ReportedBy: bearophile_hugs at eml.cc
--- Comment #0 from bearophile_hugs at eml.cc 2011-05-09 15:29:23 PDT ---
[idea 1 and 2] I'd like this very simple code to work:
import std.bigint, std.conv;
void main() {
text(BigInt(1));
to!string(BigInt(1));
}
----------------------------
[idea 3] I'd like this very simple code to work, thanks to a T
opCast(T:bool)(){} member function:
import std.bigint;
void main() {
BigInt x = BigInt(0);
if (x) {}
}
----------------------------
(The ideas 4 and 5 have a lower priority, because they are less commonly
useful.)
[idea 4] I'd like this code to work:
import std.bigint;
void main() {
BigInt b = BigInt(10);
auto result = b & 1;
}
---------------------
[idea 5] Sometimes I like to know how many decimal digits a BigInt is long.
Currently (DMD 2.053beta) this is the best way I have found to do it:
import std.bigint;
void main() {
BigInt b = BigInt(91) ^^ 35;
const(char)[] bstr;
b.toString((const(char)[] s){ bstr = s; }, "d");
int ndigits_b = bstr.length;
}
But a specific method avoids to keep all the decimal digits:
import std.bigint;
void main() {
BigInt b = BigInt(91) ^^ 35;
int ndigits_b = bstr.numDigits();
}
(Optionally a base for numDigits(), that defaults to 10.)
-----------------------
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list