[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