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