Class BigInteger
java.lang.Object
edu.jas.arith.BigInteger
- All Implemented Interfaces:
Rational, AbelianGroupElem<BigInteger>, AbelianGroupFactory<BigInteger>, Element<BigInteger>, ElemFactory<BigInteger>, GcdRingElem<BigInteger>, MonoidElem<BigInteger>, MonoidFactory<BigInteger>, RingElem<BigInteger>, RingFactory<BigInteger>, Serializable, Comparable<BigInteger>, Iterable<BigInteger>
public final class BigInteger
extends Object
implements GcdRingElem<BigInteger>, RingFactory<BigInteger>, Iterable<BigInteger>, Rational
BigInteger class to make java.math.BigInteger available with RingElem
respectively the GcdRingElem interface. Objects of this class are immutable.
The SAC2 static methods are also provided.
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate booleanstatic final BigIntegerThe constant 1.private static final Randomstatic final BigIntegerThe constant 2.final BigIntegerThe data structure.static final BigIntegerThe constant 0. -
Constructor Summary
ConstructorsConstructorDescriptionConstructor for BigInteger without parameters.BigInteger(long a) Constructor for BigInteger from long.BigInteger(String s) Constructor for BigInteger from String.Constructor for BigInteger from math.BigInteger. -
Method Summary
Modifier and TypeMethodDescriptionabs()Absolute value of this.longReturns the number of bits in the representation of this BigInteger, including a sign bit.static longbitLength(long v) Returns the number of bits in the representation of a Long, including a sign bit.Characteristic of this ring.intCompare to BigInteger b.copy()Clone this.copy(BigInteger c) Copy BigInteger element c.divide(BigInteger S) BigInteger divide.egcd(BigInteger S) BigInteger extended greatest common divisor.booleanComparison with any other object.factory()Get the corresponding element factory.fromInteger(long a) Get a BigInteger element from long.Get a BigInteger element from a math.BigInteger.gcd(BigInteger S) BigInteger greatest common divisor.Get a list of the generating elements.Get the decimal representation.getONE()Get the one element.Return a BigRational approximation of this Element.getVal()Get the value.getZERO()Get the zero element.inthashCode()Hash code for this BigInteger.static BigIntegerIABS(BigInteger A) Absolute value.static intICOMP(BigInteger A, BigInteger B) Integer comparison.static BigIntegerIDIF(BigInteger A, BigInteger B) BigInteger subtract.static BigIntegerIGCD(BigInteger A, BigInteger B) BigInteger greatest common divisor.static BigIntegerINEG(BigInteger A) Negative value.inverse()Integer inverse.static BigIntegerIPROD(BigInteger A, BigInteger B) BigInteger multiply.static BigIntegerIQ(BigInteger A, BigInteger B) BigInteger divide.static BigInteger[]IQR(BigInteger A, BigInteger B) Integer quotient and remainder.static BigIntegerIRAND(int NL) BigInteger random.static BigIntegerIREM(BigInteger A, BigInteger B) BigInteger remainder.booleanQuery if this ring is associative.booleanQuery if this ring is commutative.booleanisField()Query if this ring is a field.booleanisFinite()Is this structure finite or infinite.static intISIGN(BigInteger A) Integer signum.booleanisONE()Is BigInteger number one.static BigIntegerISUM(BigInteger A, BigInteger B) BigInteger addition.booleanisUnit()Is BigInteger number unit.booleanisZERO()Is BigInteger number zero.iterator()Get a BigInteger iterator.longGet the value as long.longGet the value as long.BigInteger multiply.negate()Negate this.BigInteger parse from Reader.BigInteger parse from String.BigInteger compute quotient and remainder.random(int n) BigInteger random.BigInteger random.BigInteger remainder.voidSet the iteration algorithm to all elements.voidSet the iteration algorithm to non-negative elements.shiftLeft(int n) BigInteger shift left.intsignum()signum.BigInteger subtract.sum(BigInteger S) BigInteger summation.toScript()Get a scripting compatible string representation.Get a scripting compatible string representation of the factory.toString()Get the String representation.static BigIntegervalueOf(long a) Get a BigInteger element from long.static BigIntegerGet a BigInteger element from a math.BigInteger.Methods inherited from interface ElemFactory
valueOfMethods inherited from interface Iterable
forEach, spliteratorMethods inherited from interface MonoidElem
leftDivide, leftRemainder, power, rightDivide, rightRemainder, twosidedDivide, twosidedRemainder
-
Field Details
-
val
The data structure. -
random
-
ZERO
The constant 0. -
ONE
The constant 1. -
TWO
The constant 2. -
nonNegative
private boolean nonNegative
-
-
Constructor Details
-
BigInteger
Constructor for BigInteger from math.BigInteger.- Parameters:
a- java.math.BigInteger.
-
BigInteger
public BigInteger(long a) Constructor for BigInteger from long.- Parameters:
a- long.
-
BigInteger
-
BigInteger
public BigInteger()Constructor for BigInteger without parameters.
-
-
Method Details
-
getVal
-
longValue
public long longValue()Get the value as long.- Returns:
- val as long.
-
longValueExact
public long longValueExact()Get the value as long.- Returns:
- val as long if val fits in long.
-
factory
Get the corresponding element factory.- Specified by:
factoryin interfaceElement<BigInteger>- Returns:
- factory for this Element.
- See Also:
-
generators
Get a list of the generating elements.- Specified by:
generatorsin interfaceElemFactory<BigInteger>- Returns:
- list of generators for the algebraic structure.
- See Also:
-
isFinite
public boolean isFinite()Is this structure finite or infinite.- Specified by:
isFinitein interfaceElemFactory<BigInteger>- Returns:
- true if this structure is finite, else false.
- See Also:
-
copy
Clone this.- Specified by:
copyin interfaceElement<BigInteger>- Returns:
- Creates and returns a copy of this Element.
- See Also:
-
copy
Copy BigInteger element c.- Specified by:
copyin interfaceElemFactory<BigInteger>- Parameters:
c- BigInteger.- Returns:
- a copy of c.
-
getZERO
Get the zero element.- Specified by:
getZEROin interfaceAbelianGroupFactory<BigInteger>- Returns:
- 0.
-
getONE
Get the one element.- Specified by:
getONEin interfaceMonoidFactory<BigInteger>- Returns:
- 1.
-
isCommutative
public boolean isCommutative()Query if this ring is commutative.- Specified by:
isCommutativein interfaceMonoidFactory<BigInteger>- Returns:
- true.
-
isAssociative
public boolean isAssociative()Query if this ring is associative.- Specified by:
isAssociativein interfaceMonoidFactory<BigInteger>- Returns:
- true.
-
isField
public boolean isField()Query if this ring is a field.- Specified by:
isFieldin interfaceRingFactory<BigInteger>- Returns:
- false.
-
characteristic
Characteristic of this ring.- Specified by:
characteristicin interfaceRingFactory<BigInteger>- Returns:
- characteristic of this ring.
-
fromInteger
Get a BigInteger element from a math.BigInteger.- Specified by:
fromIntegerin interfaceElemFactory<BigInteger>- Parameters:
a- math.BigInteger.- Returns:
- a as BigInteger.
-
valueOf
Get a BigInteger element from a math.BigInteger.- Parameters:
a- math.BigInteger.- Returns:
- a as BigInteger.
-
fromInteger
Get a BigInteger element from long.- Specified by:
fromIntegerin interfaceElemFactory<BigInteger>- Parameters:
a- long.- Returns:
- a as BigInteger.
-
valueOf
Get a BigInteger element from long.- Parameters:
a- long.- Returns:
- a as BigInteger.
-
isZERO
public boolean isZERO()Is BigInteger number zero.- Specified by:
isZEROin interfaceAbelianGroupElem<BigInteger>- Returns:
- If this is 0 then true is returned, else false.
- See Also:
-
isONE
public boolean isONE()Is BigInteger number one.- Specified by:
isONEin interfaceMonoidElem<BigInteger>- Returns:
- true if this is 1, else false.
- See Also:
-
isUnit
public boolean isUnit()Is BigInteger number unit.- Specified by:
isUnitin interfaceMonoidElem<BigInteger>- Returns:
- true if this is a unit, else false.
- See Also:
-
toString
-
toScript
Get a scripting compatible string representation.- Specified by:
toScriptin interfaceElement<BigInteger>- Specified by:
toScriptin interfaceElemFactory<BigInteger>- Returns:
- script compatible representation for this Element.
- See Also:
-
toScriptFactory
Get a scripting compatible string representation of the factory.- Specified by:
toScriptFactoryin interfaceElement<BigInteger>- Returns:
- script compatible representation for this ElemFactory.
- See Also:
-
compareTo
Compare to BigInteger b.- Specified by:
compareToin interfaceComparable<BigInteger>- Specified by:
compareToin interfaceElement<BigInteger>- Parameters:
b- BigInteger.- Returns:
- 0 if this == b, 1 if this > b, -1 if this < b.
-
ICOMP
Integer comparison.- Parameters:
A- BigInteger.B- BigInteger.- Returns:
- 0 if A == B, 1 if A > B, -1 if A < B.
-
equals
-
hashCode
public int hashCode()Hash code for this BigInteger.- Specified by:
hashCodein interfaceElement<BigInteger>- Overrides:
hashCodein classObject- Returns:
- the hashCode.
- See Also:
-
abs
Absolute value of this.- Specified by:
absin interfaceAbelianGroupElem<BigInteger>- Returns:
- |this|.
- See Also:
-
IABS
Absolute value.- Parameters:
A- BigInteger.- Returns:
- abs(A).
-
negate
Description copied from interface:AbelianGroupElemNegate this.- Specified by:
negatein interfaceAbelianGroupElem<BigInteger>- Returns:
- - this.
-
INEG
Negative value.- Parameters:
A- BigInteger.- Returns:
- -A.
-
signum
public int signum()signum.- Specified by:
signumin interfaceAbelianGroupElem<BigInteger>- Returns:
- the sign of this.
- See Also:
-
ISIGN
Integer signum.- Parameters:
A- BigInteger.- Returns:
- signum(A).
-
subtract
BigInteger subtract.- Specified by:
subtractin interfaceAbelianGroupElem<BigInteger>- Parameters:
S- BigInteger.- Returns:
- this-S.
-
IDIF
BigInteger subtract.- Parameters:
A- BigInteger.B- BigInteger.- Returns:
- A-B.
-
divide
BigInteger divide.- Specified by:
dividein interfaceMonoidElem<BigInteger>- Parameters:
S- BigInteger.- Returns:
- this/S.
-
IQ
BigInteger divide.- Parameters:
A- BigInteger.B- BigInteger.- Returns:
- A/B.
-
inverse
Integer inverse. R is a non-zero integer. S=1/R if defined else throws not invertible exception.- Specified by:
inversein interfaceMonoidElem<BigInteger>- Returns:
- x with this * x = 1, if it exists.
- See Also:
-
remainder
BigInteger remainder.- Specified by:
remainderin interfaceMonoidElem<BigInteger>- Parameters:
S- BigInteger.- Returns:
- this - (this/S)*S.
-
IREM
BigInteger remainder.- Parameters:
A- BigInteger.B- BigInteger.- Returns:
- A - (A/B)*B.
-
quotientRemainder
BigInteger compute quotient and remainder. Throws an exception, if S == 0.- Specified by:
quotientRemainderin interfaceMonoidElem<BigInteger>- Parameters:
S- BigInteger.- Returns:
- BigInteger[] { q, r } with this = q S + r and 0 ≤ r < |S|.
-
IQR
Integer quotient and remainder. A and B are integers, B ne 0. Q is the quotient, integral part of A/B, and R is the remainder A-B*Q. Throws an exception, if B == 0.- Parameters:
A- BigInteger.B- BigInteger.- Returns:
- BigInteger[] { q, r } with A = q B + r and 0 ≤ r < |B|
-
gcd
BigInteger greatest common divisor.- Specified by:
gcdin interfaceRingElem<BigInteger>- Parameters:
S- BigInteger.- Returns:
- gcd(this,S).
-
egcd
BigInteger extended greatest common divisor.- Specified by:
egcdin interfaceRingElem<BigInteger>- Parameters:
S- BigInteger.- Returns:
- [ gcd(this,S), a, b ] with a*this + b*S = gcd(this,S).
-
IGCD
BigInteger greatest common divisor.- Parameters:
A- BigInteger.B- BigInteger.- Returns:
- gcd(A,B).
-
random
BigInteger random.- Specified by:
randomin interfaceElemFactory<BigInteger>- Parameters:
n- such that 0 ≤ r ≤ (2n-1).- Returns:
- r, a random BigInteger.
-
random
BigInteger random.- Specified by:
randomin interfaceElemFactory<BigInteger>- Parameters:
n- such that 0 ≤ r ≤ (2n-1).rnd- is a source for random bits.- Returns:
- r, a random BigInteger.
-
IRAND
BigInteger random.- Parameters:
NL- such that 0 ≤ r ≤ (2n-1).- Returns:
- r, a random BigInteger.
-
multiply
BigInteger multiply.- Specified by:
multiplyin interfaceMonoidElem<BigInteger>- Parameters:
S- BigInteger.- Returns:
- this*S.
-
shiftLeft
BigInteger shift left.- Parameters:
n- bits to shift.- Returns:
- this << n.
-
IPROD
BigInteger multiply.- Parameters:
A- BigInteger.B- BigInteger.- Returns:
- A*B.
-
sum
BigInteger summation.- Specified by:
sumin interfaceAbelianGroupElem<BigInteger>- Parameters:
S- BigInteger.- Returns:
- this+S.
-
ISUM
BigInteger addition.- Parameters:
A- BigInteger.B- BigInteger.- Returns:
- A+B.
-
parse
BigInteger parse from String.- Specified by:
parsein interfaceElemFactory<BigInteger>- Parameters:
s- String.- Returns:
- Biginteger from s.
-
parse
BigInteger parse from Reader.- Specified by:
parsein interfaceElemFactory<BigInteger>- Parameters:
r- Reader.- Returns:
- next Biginteger from r.
-
getDecimal
-
getRational
Return a BigRational approximation of this Element.- Specified by:
getRationalin interfaceRational- Returns:
- a BigRational approximation of this.
-
bitLength
public long bitLength()Returns the number of bits in the representation of this BigInteger, including a sign bit. For positive BigIntegers, this is equivalent to(ceil(log2(this+1))+1).)- Returns:
- number of bits in the representation of this BigInteger, including a sign bit.
-
bitLength
public static long bitLength(long v) Returns the number of bits in the representation of a Long, including a sign bit.- Parameters:
v- value.- Returns:
- number of bits in the representation of a Long, including a sign bit.
-
setAllIterator
public void setAllIterator()Set the iteration algorithm to all elements. -
setNonNegativeIterator
public void setNonNegativeIterator()Set the iteration algorithm to non-negative elements. -
iterator
Get a BigInteger iterator.- Specified by:
iteratorin interfaceIterable<BigInteger>- Returns:
- a iterator over all integers.
-