Modifier and Type | Method and Description |
---|---|
static int |
addAndCheck(int x,
int y)
Add two integers, checking for overflow.
|
static long |
addAndCheck(long a,
long b)
Add two long integers, checking for overflow.
|
static int |
divideUnsigned(int dividend,
int divisor)
Returns the unsigned quotient of dividing the first argument by
the second where each argument and the result is interpreted as
an unsigned value.
|
static long |
divideUnsigned(long dividend,
long divisor)
Returns the unsigned quotient of dividing the first argument by
the second where each argument and the result is interpreted as
an unsigned value.
|
static int |
gcd(int p,
int q)
Computes the greatest common divisor of the absolute value of two
numbers, using a modified version of the "binary gcd" method.
|
static long |
gcd(long p,
long q)
Gets the greatest common divisor of the absolute value of two numbers,
using the "binary gcd" method which avoids division and modulo
operations.
|
static boolean |
isPowerOfTwo(long n)
Returns true if the argument is a power of two.
|
static int |
lcm(int a,
int b)
Returns the least common multiple of the absolute value of two numbers,
using the formula
lcm(a,b) = (a / gcd(a,b)) * b . |
static long |
lcm(long a,
long b)
Returns the least common multiple of the absolute value of two numbers,
using the formula
lcm(a,b) = (a / gcd(a,b)) * b . |
static int |
mulAndCheck(int x,
int y)
Multiply two integers, checking for overflow.
|
static long |
mulAndCheck(long a,
long b)
Multiply two long integers, checking for overflow.
|
static BigInteger |
pow(BigInteger k,
BigInteger e)
Raise a BigInteger to a BigInteger power.
|
static BigInteger |
pow(BigInteger k,
int e)
Raise a BigInteger to an int power.
|
static BigInteger |
pow(BigInteger k,
long e)
Raise a BigInteger to a long power.
|
static int |
pow(int k,
int e)
Raise an int to an int power.
|
static long |
pow(long k,
int e)
Raise a long to an int power.
|
static int |
remainderUnsigned(int dividend,
int divisor)
Returns the unsigned remainder from dividing the first argument
by the second where each argument and the result is interpreted
as an unsigned value.
|
static long |
remainderUnsigned(long dividend,
long divisor)
Returns the unsigned remainder from dividing the first argument
by the second where each argument and the result is interpreted
as an unsigned value.
|
static int |
subAndCheck(int x,
int y)
Subtract two integers, checking for overflow.
|
static long |
subAndCheck(long a,
long b)
Subtract two long integers, checking for overflow.
|
public static int addAndCheck(int x, int y) throws MathRuntimeException
x
- an addendy
- an addendx+y
MathRuntimeException
- if the result can not be represented
as an int
.public static long addAndCheck(long a, long b) throws MathRuntimeException
a
- an addendb
- an addenda+b
MathRuntimeException
- if the result can not be represented as an longpublic static int gcd(int p, int q) throws MathRuntimeException
gcd(Integer.MIN_VALUE, Integer.MIN_VALUE)
,
gcd(Integer.MIN_VALUE, 0)
and
gcd(0, Integer.MIN_VALUE)
throw an
ArithmeticException
, because the result would be 2^31, which
is too large for an int value.gcd(x, x)
, gcd(0, x)
and
gcd(x, 0)
is the absolute value of x
, except
for the special cases above.gcd(0, 0)
is the only one which returns
0
.p
- Number.q
- Number.MathRuntimeException
- if the result cannot be represented as
a non-negative int
value.public static long gcd(long p, long q) throws MathRuntimeException
Special cases:
gcd(Long.MIN_VALUE, Long.MIN_VALUE)
,
gcd(Long.MIN_VALUE, 0L)
and
gcd(0L, Long.MIN_VALUE)
throw an
ArithmeticException
, because the result would be 2^63, which
is too large for a long value.gcd(x, x)
, gcd(0L, x)
and
gcd(x, 0L)
is the absolute value of x
, except
for the special cases above.
gcd(0L, 0L)
is the only one which returns
0L
.p
- Number.q
- Number.MathRuntimeException
- if the result cannot be represented as
a non-negative long
value.public static int lcm(int a, int b) throws MathRuntimeException
lcm(a,b) = (a / gcd(a,b)) * b
.
Special cases:
lcm(Integer.MIN_VALUE, n)
and
lcm(n, Integer.MIN_VALUE)
, where abs(n)
is a
power of 2, throw an ArithmeticException
, because the result
would be 2^31, which is too large for an int value.lcm(0, x)
and lcm(x, 0)
is
0
for any x
.
a
- Number.b
- Number.MathRuntimeException
- if the result cannot be represented as
a non-negative int
value.public static long lcm(long a, long b) throws MathRuntimeException
lcm(a,b) = (a / gcd(a,b)) * b
.
Special cases:
lcm(Long.MIN_VALUE, n)
and
lcm(n, Long.MIN_VALUE)
, where abs(n)
is a
power of 2, throw an ArithmeticException
, because the result
would be 2^63, which is too large for an int value.lcm(0L, x)
and lcm(x, 0L)
is
0L
for any x
.
a
- Number.b
- Number.MathRuntimeException
- if the result cannot be represented
as a non-negative long
value.public static int mulAndCheck(int x, int y) throws MathRuntimeException
x
- Factor.y
- Factor.x * y
.MathRuntimeException
- if the result can not be
represented as an int
.public static long mulAndCheck(long a, long b) throws MathRuntimeException
a
- Factor.b
- Factor.a * b
.MathRuntimeException
- if the result can not be represented
as a long
.public static int subAndCheck(int x, int y) throws MathRuntimeException
x
- Minuend.y
- Subtrahend.x - y
.MathRuntimeException
- if the result can not be represented
as an int
.public static long subAndCheck(long a, long b) throws MathRuntimeException
a
- Value.b
- Value.a - b
.MathRuntimeException
- if the result can not be represented as a
long
.public static int pow(int k, int e) throws MathIllegalArgumentException, MathRuntimeException
k
- Number to raise.e
- Exponent (must be positive or zero).MathIllegalArgumentException
- if e < 0
.MathRuntimeException
- if the result would overflow.public static long pow(long k, int e) throws MathIllegalArgumentException, MathRuntimeException
k
- Number to raise.e
- Exponent (must be positive or zero).MathIllegalArgumentException
- if e < 0
.MathRuntimeException
- if the result would overflow.public static BigInteger pow(BigInteger k, int e) throws MathIllegalArgumentException
k
- Number to raise.e
- Exponent (must be positive or zero).MathIllegalArgumentException
- if e < 0
.public static BigInteger pow(BigInteger k, long e) throws MathIllegalArgumentException
k
- Number to raise.e
- Exponent (must be positive or zero).MathIllegalArgumentException
- if e < 0
.public static BigInteger pow(BigInteger k, BigInteger e) throws MathIllegalArgumentException
k
- Number to raise.e
- Exponent (must be positive or zero).MathIllegalArgumentException
- if e < 0
.public static boolean isPowerOfTwo(long n)
n
- the number to testpublic static int remainderUnsigned(int dividend, int divisor)
This method does not use the long
datatype.
dividend
- the value to be divideddivisor
- the value doing the dividingpublic static long remainderUnsigned(long dividend, long divisor)
This method does not use the BigInteger
datatype.
dividend
- the value to be divideddivisor
- the value doing the dividingpublic static int divideUnsigned(int dividend, int divisor)
Note that in two's complement arithmetic, the three other
basic arithmetic operations of add, subtract, and multiply are
bit-wise identical if the two operands are regarded as both
being signed or both being unsigned. Therefore separate addUnsigned
, etc. methods are not provided.
This method does not use the long
datatype.
dividend
- the value to be divideddivisor
- the value doing the dividingpublic static long divideUnsigned(long dividend, long divisor)
Note that in two's complement arithmetic, the three other
basic arithmetic operations of add, subtract, and multiply are
bit-wise identical if the two operands are regarded as both
being signed or both being unsigned. Therefore separate addUnsigned
, etc. methods are not provided.
This method does not use the BigInteger
datatype.
dividend
- the value to be divideddivisor
- the value doing the dividingCopyright © 2016-2021 CS GROUP. All rights reserved.