View source code Display the source code in std/bigint.d from which this page was generated on github. Improve this page Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using local clone. Page wiki View or edit the community-maintained wiki page associated with this page.

Struct std.bigint.BigInt

A struct representing an arbitrary precision integer.

All arithmetic operations are supported, except unsigned shift right (>>>). Bitwise operations (|, &, ^, ~) are supported, and behave as if BigInt was an infinite length 2's complement number.

BigInt implements value semantics using copy-on-write. This means that assignment is cheap, but operations such as x++ will cause heap allocation. (But note that for most bigint operations, heap allocation is inevitable anyway.)

Constructors

Name Description
this Construct a BigInt from a decimal or hexadecimal string.
this Construct a BigInt from another BigInt.
this Construct a BigInt from a built-in integral type.

Properties

Name Type Description
uintLength [get] ulong Number of significant uints which are used in storing this number.
ulongLength [get] ulong Number of significant ulongs which are used in storing this number.

Methods

Name Description
opAssign Assignment from built-in integer types.
opAssign Assignment from another BigInt.
opBinary Implements binary operators between BigInts.
opBinary Implements binary operators between BigInt's and built-in integers.
opBinary Implements a narrowing remainder operation with built-in integer types.
opBinaryRight Implements operators with built-in integers on the left-hand side and BigInt on the right-hand side.
opCast Implements casting to bool.
opCast Implements casting to/from qualified BigInt's.
opCmp Implements 3-way comparisons of BigInt with BigInt or BigInt with built-in integers.
opEquals Implements BigInt equality test with other BigInt's and built-in integer types.
opOpAssign Implements assignment operators from built-in integers of the form BigInt op= integer.
opOpAssign Implements assignment operators of the form BigInt op= BigInt.
opUnary Implements BigInt unary operators.
toHash
toInt
toLong
toString Convert the BigInt to string, passing it to the given sink.

Example

BigInt a = "9588669891916142";
BigInt b = "7452469135154800";
auto c = a * b;
assert(c == BigInt("71459266416693160362545788781600"));
auto d = b * a;
assert(d == BigInt("71459266416693160362545788781600"));
assert(d == c);
d = c * BigInt("794628672112");
assert(d == BigInt("56783581982794522489042432639320434378739200"));
auto e = c + d;
assert(e == BigInt("56783581982865981755459125799682980167520800"));
auto f = d + c;
assert(f == e);
auto g = f - c;
assert(g == d);
g = f - d;
assert(g == c);
e = 12345678;
g = c + e;
auto h = g / b;
auto i = g % b;
assert(h == a);
assert(i == e);
BigInt j = "-0x9A56_57f4_7B83_AB78";
j ^^= 11;

Authors

Don Clugston

License

Boost License 1.0.

Comments