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
.
|
opOpAssign
|
Implements assignment operators of the form .
|
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