public class TBigInteger extends Number implements Comparable<TBigInteger>, Serializable
Since the class was modeled to offer all the functionality as the
Integer
class does, it provides even methods that operate bitwise on
a two's complement representation of large integers. Note however that the
implementations favors an internal representation where magnitude and sign
are treated separately. Hence such operations are inefficient and should be
discouraged. In simple words: Do NOT implement any bit fields based on
BigInteger.
Modifier and Type | Field and Description |
---|---|
static TBigInteger |
ONE
The
BigInteger constant 1. |
static TBigInteger |
TEN
The
BigInteger constant 10. |
static TBigInteger |
ZERO
The
BigInteger constant 0. |
Constructor and Description |
---|
TBigInteger(byte[] val)
Constructs a new
BigInteger from the given two's complement
representation. |
TBigInteger(int signum,
byte[] magnitude)
Constructs a new
BigInteger instance with the given sign and the
given magnitude. |
TBigInteger(int bitLength,
int certainty,
Random rnd)
Constructs a random
BigInteger instance in the range [0,
2^(bitLength)-1] which is probably prime. |
TBigInteger(int numBits,
Random rnd)
Constructs a random non-negative
BigInteger instance in the range
[0, 2^(numBits)-1]. |
TBigInteger(String val)
Constructs a new
BigInteger instance from the string
representation. |
TBigInteger(String val,
int radix)
Constructs a new
BigInteger instance from the string
representation. |
Modifier and Type | Method and Description |
---|---|
TBigInteger |
abs()
Returns a (new)
BigInteger whose value is the absolute value of
this . |
TBigInteger |
add(TBigInteger val)
Returns a new
BigInteger whose value is this + val . |
TBigInteger |
and(TBigInteger val)
Returns a new
BigInteger whose value is this & val . |
TBigInteger |
andNot(TBigInteger val)
Returns a new
BigInteger whose value is this & ~val . |
int |
bitCount()
Use
bitLength(0) if you want to know the length of the binary
value in bits. |
int |
bitLength()
Returns the length of the value's two's complement representation without
leading zeros for positive numbers / without leading ones for negative
values.
|
TBigInteger |
clearBit(int n)
Returns a new
BigInteger which has the same binary representation
as this but with the bit at position n cleared. |
int |
compareTo(TBigInteger val)
Compares this
BigInteger with val . |
TBigInteger |
divide(TBigInteger divisor)
Returns a new
BigInteger whose value is this / divisor . |
TBigInteger[] |
divideAndRemainder(TBigInteger divisor)
Returns a
BigInteger array which contains this / divisor
at index 0 and this % divisor at index 1. |
double |
doubleValue()
Returns this
BigInteger as an double value. |
boolean |
equals(Object x)
Returns
true if x is a BigInteger instance and if this
instance is equal to this BigInteger . |
TBigInteger |
flipBit(int n)
Returns a new
BigInteger which has the same binary representation
as this but with the bit at position n flipped. |
float |
floatValue()
Returns this
BigInteger as an float value. |
TBigInteger |
gcd(TBigInteger val)
Returns a new
BigInteger whose value is greatest common divisor
of this and val . |
int |
getLowestSetBit()
Returns the position of the lowest set bit in the two's complement
representation of this
BigInteger . |
int |
hashCode()
Returns a hash code for this
BigInteger . |
int |
intValue()
Returns this
BigInteger as an int value. |
boolean |
isProbablePrime(int certainty)
Tests whether this
BigInteger is probably prime. |
long |
longValue()
Returns this
BigInteger as an long value. |
TBigInteger |
max(TBigInteger val)
Returns the maximum of this
BigInteger and val . |
TBigInteger |
min(TBigInteger val)
Returns the minimum of this
BigInteger and val . |
TBigInteger |
mod(TBigInteger m)
Returns a new
BigInteger whose value is this mod m . |
TBigInteger |
modInverse(TBigInteger m)
Returns a new
BigInteger whose value is 1/this mod m . |
TBigInteger |
modPow(TBigInteger exponent,
TBigInteger m)
Returns a new
BigInteger whose value is this^exponent mod
m . |
TBigInteger |
multiply(TBigInteger val)
Returns a new
BigInteger whose value is this * val . |
TBigInteger |
negate()
Returns a new
BigInteger whose value is the -this . |
TBigInteger |
nextProbablePrime()
Returns the smallest integer x >
this which is probably prime as
a BigInteger instance. |
TBigInteger |
not()
Returns a new
BigInteger whose value is ~this . |
TBigInteger |
or(TBigInteger val)
Returns a new
BigInteger whose value is this | val . |
TBigInteger |
pow(int exp)
Returns a new
BigInteger whose value is this ^ exp . |
static TBigInteger |
probablePrime(int bitLength,
Random rnd)
Returns a random positive
BigInteger instance in the range [0,
2^(bitLength)-1] which is probably prime. |
TBigInteger |
remainder(TBigInteger divisor)
Returns a new
BigInteger whose value is this % divisor . |
TBigInteger |
setBit(int n)
Returns a new
BigInteger which has the same binary representation
as this but with the bit at position n set. |
TBigInteger |
shiftLeft(int n)
Returns a new
BigInteger whose value is this << n . |
TBigInteger |
shiftRight(int n)
Returns a new
BigInteger whose value is this >> n . |
int |
signum()
Returns the sign of this
BigInteger . |
TBigInteger |
subtract(TBigInteger val)
Returns a new
BigInteger whose value is this - val . |
boolean |
testBit(int n)
Tests whether the bit at position n in
this is set. |
byte[] |
toByteArray()
Returns the two's complement representation of this BigInteger in a byte
array.
|
String |
toString()
Returns a string representation of this
BigInteger in decimal
form. |
String |
toString(int radix)
Returns a string containing a string representation of this
BigInteger with base radix. |
static TBigInteger |
valueOf(long val) |
TBigInteger |
xor(TBigInteger val)
Returns a new
BigInteger whose value is this ^ val . |
byteValue, shortValue
public static final TBigInteger ZERO
BigInteger
constant 0.public static final TBigInteger ONE
BigInteger
constant 1.public static final TBigInteger TEN
BigInteger
constant 10.public TBigInteger(int numBits, Random rnd)
BigInteger
instance in the range
[0, 2^(numBits)-1].numBits
- maximum length of the new BigInteger
in bits.rnd
- is an optional random generator to be used.IllegalArgumentException
- if numBits
< 0.public TBigInteger(int bitLength, int certainty, Random rnd)
BigInteger
instance in the range [0,
2^(bitLength)-1] which is probably prime. The probability that the
returned BigInteger
is prime is beyond (1-1/2^certainty).bitLength
- length of the new BigInteger
in bits.certainty
- tolerated primality uncertainty.rnd
- is an optional random generator to be used.ArithmeticException
- if bitLength
< 2.public TBigInteger(String val)
BigInteger
instance from the string
representation. The string representation consists of an optional minus
sign followed by a non-empty sequence of decimal digits.val
- string representation of the new BigInteger
.NullPointerException
- if val == null
.NumberFormatException
- if val
is not a valid representation of a
BigInteger
.public TBigInteger(String val, int radix)
BigInteger
instance from the string
representation. The string representation consists of an optional minus
sign followed by a non-empty sequence of digits in the specified radix.
For the conversion the method Character.digit(char, radix)
is
used.val
- string representation of the new BigInteger
.radix
- the base to be used for the conversion.NullPointerException
- if val == null
.NumberFormatException
- if val
is not a valid representation of a
BigInteger
or if radix < Character.MIN_RADIX
or radix > Character.MAX_RADIX
.public TBigInteger(int signum, byte[] magnitude)
BigInteger
instance with the given sign and the
given magnitude. The sign is given as an integer (-1 for negative, 0 for
zero, 1 for positive). The magnitude is specified as a byte array. The
most significant byte is the entry at index 0.signum
- sign of the new BigInteger
(-1 for negative, 0 for
zero, 1 for positive).magnitude
- magnitude of the new BigInteger
with the most
significant byte first.NullPointerException
- if magnitude == null
.NumberFormatException
- if the sign is not one of -1, 0, 1 or if the sign is zero and
the magnitude contains non-zero entries.public TBigInteger(byte[] val)
BigInteger
from the given two's complement
representation. The most significant byte is the entry at index 0. The
most significant bit of this entry determines the sign of the new
BigInteger
instance. The given array must not be empty.val
- two's complement representation of the new BigInteger
.NullPointerException
- if val == null
.NumberFormatException
- if the length of val
is zero.public static TBigInteger valueOf(long val)
public byte[] toByteArray()
this
.public TBigInteger abs()
BigInteger
whose value is the absolute value of
this
.abs(this)
.public TBigInteger negate()
BigInteger
whose value is the -this
.-this
.public TBigInteger add(TBigInteger val)
BigInteger
whose value is this + val
.val
- value to be added to this
.this + val
.NullPointerException
- if val == null
.public TBigInteger subtract(TBigInteger val)
BigInteger
whose value is this - val
.val
- value to be subtracted from this
.this - val
.NullPointerException
- if val == null
.public int signum()
BigInteger
.-1
if this < 0
, 0
if this == 0
,
1
if this > 0
.public TBigInteger shiftRight(int n)
BigInteger
whose value is this >> n
. For
negative arguments, the result is also negative. The shift distance may
be negative which means that this
is shifted left.
Implementation Note: Usage of this method on negative values is not recommended as the current implementation is not efficient.
n
- shift distancethis >> n
if n >= 0
; this << (-n)
otherwisepublic TBigInteger shiftLeft(int n)
BigInteger
whose value is this << n
. The
result is equivalent to this * 2^n
if n >= 0. The shift distance
may be negative which means that this
is shifted right. The
result then corresponds to floor(this / 2^(-n))
.
Implementation Note: Usage of this method on negative values is not recommended as the current implementation is not efficient.
n
- shift distance.this << n
if n >= 0
; this >> (-n)
.
otherwisepublic int bitLength()
The two's complement representation of this
will be at least
bitLength() + 1
bits long.
The value will fit into an int
if bitLength() < 32
or
into a long
if bitLength() < 64
.
this
without the sign bit.public boolean testBit(int n)
this
is set. The result is
equivalent to this & (2^n) != 0
.
Implementation Note: Usage of this method is not recommended as the current implementation is not efficient.
n
- position where the bit in this
has to be inspected.this & (2^n) != 0
.ArithmeticException
- if n < 0
.public TBigInteger setBit(int n)
BigInteger
which has the same binary representation
as this
but with the bit at position n set. The result is
equivalent to this | 2^n
.
Implementation Note: Usage of this method is not recommended as the current implementation is not efficient.
n
- position where the bit in this
has to be set.this | 2^n
.ArithmeticException
- if n < 0
.public TBigInteger clearBit(int n)
BigInteger
which has the same binary representation
as this
but with the bit at position n cleared. The result is
equivalent to this & ~(2^n)
.
Implementation Note: Usage of this method is not recommended as the current implementation is not efficient.
n
- position where the bit in this
has to be cleared.this & ~(2^n)
.ArithmeticException
- if n < 0
.public TBigInteger flipBit(int n)
BigInteger
which has the same binary representation
as this
but with the bit at position n flipped. The result is
equivalent to this ^ 2^n
.
Implementation Note: Usage of this method is not recommended as the current implementation is not efficient.
n
- position where the bit in this
has to be flipped.this ^ 2^n
.ArithmeticException
- if n < 0
.public int getLowestSetBit()
BigInteger
. If all bits are zero (this=0)
then -1 is returned as result.
Implementation Note: Usage of this method is not recommended as the current implementation is not efficient.
this != 0
, -1
otherwisepublic int bitCount()
bitLength(0)
if you want to know the length of the binary
value in bits.
Returns the number of bits in the binary representation of this
which differ from the sign bit. If this
is positive the result is
equivalent to the number of bits set in the binary representation of
this
. If this
is negative the result is equivalent to the
number of bits set in the binary representation of -this-1
.
Implementation Note: Usage of this method is not recommended as the current implementation is not efficient.
this
which
differ from the sign bitpublic TBigInteger not()
BigInteger
whose value is ~this
. The result
of this operation is -this-1
.
Implementation Note: Usage of this method is not recommended as the current implementation is not efficient.
~this
.public TBigInteger and(TBigInteger val)
BigInteger
whose value is this & val
.
Implementation Note: Usage of this method is not recommended as the current implementation is not efficient.
val
- value to be and'ed with this
.this & val
.NullPointerException
- if val == null
.public TBigInteger or(TBigInteger val)
BigInteger
whose value is this | val
.
Implementation Note: Usage of this method is not recommended as the current implementation is not efficient.
val
- value to be or'ed with this
.this | val
.NullPointerException
- if val == null
.public TBigInteger xor(TBigInteger val)
BigInteger
whose value is this ^ val
.
Implementation Note: Usage of this method is not recommended as the current implementation is not efficient.
val
- value to be xor'ed with this
this ^ val
NullPointerException
- if val == null
public TBigInteger andNot(TBigInteger val)
BigInteger
whose value is this & ~val
.
Evaluating x.andNot(val)
returns the same result as
x.and(val.not())
.
Implementation Note: Usage of this method is not recommended as the current implementation is not efficient.
val
- value to be not'ed and then and'ed with this
.this & ~val
.NullPointerException
- if val == null
.public int intValue()
BigInteger
as an int value. If this
is too
big to be represented as an int, then this
% 2^32 is returned.public long longValue()
BigInteger
as an long value. If this
is too
big to be represented as an long, then this
% 2^64 is returned.public float floatValue()
BigInteger
as an float value. If this
is too
big to be represented as an float, then Float.POSITIVE_INFINITY
or Float.NEGATIVE_INFINITY
is returned. Note, that not all
integers x in the range [-Float.MAX_VALUE, Float.MAX_VALUE] can be
represented as a float. The float representation has a mantissa of length
24. For example, 2^24+1 = 16777217 is returned as float 16777216.0.floatValue
in class Number
BigInteger
as a float value.public double doubleValue()
BigInteger
as an double value. If this
is
too big to be represented as an double, then
Double.POSITIVE_INFINITY
or Double.NEGATIVE_INFINITY
is
returned. Note, that not all integers x in the range [-Double.MAX_VALUE,
Double.MAX_VALUE] can be represented as a double. The double
representation has a mantissa of length 53. For example, 2^53+1 =
9007199254740993 is returned as double 9007199254740992.0.doubleValue
in class Number
BigInteger
as a double valuepublic int compareTo(TBigInteger val)
BigInteger
with val
. Returns one of the
three values 1, 0, or -1.compareTo
in interface Comparable<TBigInteger>
val
- value to be compared with this
.1
if this > val
, -1
if this < val
, 0
if this == val
.NullPointerException
- if val == null
.public TBigInteger min(TBigInteger val)
BigInteger
and val
.val
- value to be used to compute the minimum with this
.min(this, val)
.NullPointerException
- if val == null
.public TBigInteger max(TBigInteger val)
BigInteger
and val
.val
- value to be used to compute the maximum with this
max(this, val)
NullPointerException
- if val == null
public int hashCode()
BigInteger
.public boolean equals(Object x)
true
if x
is a BigInteger instance and if this
instance is equal to this BigInteger
.public String toString()
BigInteger
in decimal
form.public String toString(int radix)
BigInteger
with base radix. If
radix < Character.MIN_RADIX
or
radix > Character.MAX_RADIX
then a decimal representation is
returned. The characters of the string representation are generated with
method Character.forDigit
.radix
- base to be used for the string representation.public TBigInteger gcd(TBigInteger val)
BigInteger
whose value is greatest common divisor
of this
and val
. If this==0
and val==0
then zero is returned, otherwise the result is positive.val
- value with which the greatest common divisor is computed.gcd(this, val)
.NullPointerException
- if val == null
.public TBigInteger multiply(TBigInteger val)
BigInteger
whose value is this * val
.val
- value to be multiplied with this
.this * val
.NullPointerException
- if val == null
.public TBigInteger pow(int exp)
BigInteger
whose value is this ^ exp
.exp
- exponent to which this
is raised.this ^ exp
.ArithmeticException
- if exp < 0
.public TBigInteger[] divideAndRemainder(TBigInteger divisor)
BigInteger
array which contains this / divisor
at index 0 and this % divisor
at index 1.divisor
- value by which this
is divided.[this / divisor, this % divisor]
.NullPointerException
- if divisor == null
.ArithmeticException
- if divisor == 0
.divide(org.teavm.classlib.java.math.TBigInteger)
,
remainder(org.teavm.classlib.java.math.TBigInteger)
public TBigInteger divide(TBigInteger divisor)
BigInteger
whose value is this / divisor
.divisor
- value by which this
is divided.this / divisor
.NullPointerException
- if divisor == null
.ArithmeticException
- if divisor == 0
.public TBigInteger remainder(TBigInteger divisor)
BigInteger
whose value is this % divisor
.
Regarding signs this methods has the same behavior as the % operator on
int's, i.e. the sign of the remainder is the same as the sign of this.divisor
- value by which this
is divided.this % divisor
.NullPointerException
- if divisor == null
.ArithmeticException
- if divisor == 0
.public TBigInteger modInverse(TBigInteger m)
BigInteger
whose value is 1/this mod m
. The
modulus m
must be positive. The result is guaranteed to be in the
interval [0, m)
(0 inclusive, m exclusive). If this
is
not relatively prime to m, then an exception is thrown.m
- the modulus.1/this mod m
.NullPointerException
- if m == null
ArithmeticException
- if m < 0 or
if this
is not relatively prime
to m
public TBigInteger modPow(TBigInteger exponent, TBigInteger m)
BigInteger
whose value is this^exponent mod
m
. The modulus m
must be positive. The result is guaranteed to
be in the interval [0, m)
(0 inclusive, m exclusive). If the
exponent is negative, then this.modInverse(m)^(-exponent) mod m)
is computed. The inverse of this only exists if this
is
relatively prime to m, otherwise an exception is thrown.exponent
- the exponent.m
- the modulus.this^exponent mod val
.NullPointerException
- if m == null
or exponent == null
.ArithmeticException
- if m < 0
or if exponent<0
and this is not
relatively prime to m
.public TBigInteger mod(TBigInteger m)
BigInteger
whose value is this mod m
. The
modulus m
must be positive. The result is guaranteed to be in the
interval [0, m)
(0 inclusive, m exclusive). The behavior of this
function is not equivalent to the behavior of the % operator defined for
the built-in int
's.m
- the modulus.this mod m
.NullPointerException
- if m == null
.ArithmeticException
- if m < 0
.public boolean isProbablePrime(int certainty)
BigInteger
is probably prime. If true
is returned, then this is prime with a probability beyond
(1-1/2^certainty). If false
is returned, then this is definitely
composite. If the argument certainty
<= 0, then this method
returns true.certainty
- tolerated primality uncertainty.true
, if this
is probably prime, false
otherwise.public TBigInteger nextProbablePrime()
this
which is probably prime as
a BigInteger
instance. The probability that the returned
BigInteger
is prime is beyond (1-1/2^80).this
which is robably prime.ArithmeticException
- if this < 0
.public static TBigInteger probablePrime(int bitLength, Random rnd)
BigInteger
instance in the range [0,
2^(bitLength)-1] which is probably prime. The probability that the
returned BigInteger
is prime is beyond (1-1/2^80).
Implementation Note: Currently rnd
is ignored.
bitLength
- length of the new BigInteger
in bits.rnd
- random generator used to generate the new BigInteger
.BigInteger
instance.IllegalArgumentException
- if bitLength < 2
.Copyright © 2019. All rights reserved.