Package edu.jas.arith
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>,java.io.Serializable,java.lang.Comparable<BigInteger>,java.lang.Iterable<BigInteger>
public final class BigInteger extends java.lang.Object implements GcdRingElem<BigInteger>, RingFactory<BigInteger>, java.lang.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.- Author:
- Heinz Kredel
- See Also:
BigInteger, Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description static BigIntegerONEThe constant 1.static BigIntegerTWOThe constant 2.java.math.BigIntegervalThe data structure.static BigIntegerZEROThe constant 0.
-
Constructor Summary
Constructors Constructor Description BigInteger()Constructor for BigInteger without parameters.BigInteger(long a)Constructor for BigInteger from long.BigInteger(java.lang.String s)Constructor for BigInteger from String.BigInteger(java.math.BigInteger a)Constructor for BigInteger from math.BigInteger.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description BigIntegerabs()Absolute value of this.longbitLength()Returns 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.java.math.BigIntegercharacteristic()Characteristic of this ring.intcompareTo(BigInteger b)Compare to BigInteger b.BigIntegercopy()Clone this.BigIntegercopy(BigInteger c)Copy BigInteger element c.BigIntegerdivide(BigInteger S)BigInteger divide.BigInteger[]egcd(BigInteger S)BigInteger extended greatest common divisor.booleanequals(java.lang.Object b)Comparison with any other object.BigIntegerfactory()Get the corresponding element factory.BigIntegerfromInteger(long a)Get a BigInteger element from long.BigIntegerfromInteger(java.math.BigInteger a)Get a BigInteger element from a math.BigInteger.BigIntegergcd(BigInteger S)BigInteger greatest common divisor.java.util.List<BigInteger>generators()Get a list of the generating elements.BigDecimalgetDecimal()Get the decimal representation.BigIntegergetONE()Get the one element.BigRationalgetRational()Return a BigRational approximation of this Element.java.math.BigIntegergetVal()Get the value.BigIntegergetZERO()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.BigIntegerinverse()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.booleanisAssociative()Query if this ring is associative.booleanisCommutative()Query 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.java.util.Iterator<BigInteger>iterator()Get a BigInteger iterator.longlongValue()Get the value as long.longlongValueExact()Get the value as long.BigIntegermultiply(BigInteger S)BigInteger multiply.BigIntegernegate()Negate this.BigIntegerparse(java.io.Reader r)BigInteger parse from Reader.BigIntegerparse(java.lang.String s)BigInteger parse from String.BigInteger[]quotientRemainder(BigInteger S)BigInteger compute quotient and remainder.BigIntegerrandom(int n)BigInteger random.BigIntegerrandom(int n, java.util.Random rnd)BigInteger random.BigIntegerremainder(BigInteger S)BigInteger remainder.voidsetAllIterator()Set the iteration algorithm to all elements.voidsetNonNegativeIterator()Set the iteration algorithm to non-negative elements.BigIntegershiftLeft(int n)BigInteger shift left.intsignum()signum.BigIntegersubtract(BigInteger S)BigInteger subtract.BigIntegersum(BigInteger S)BigInteger summation.java.lang.StringtoScript()Get a scripting compatible string representation.java.lang.StringtoScriptFactory()Get a scripting compatible string representation of the factory.java.lang.StringtoString()Get the String representation.static BigIntegervalueOf(long a)Get a BigInteger element from long.static BigIntegervalueOf(java.math.BigInteger a)Get a BigInteger element from a math.BigInteger.-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface edu.jas.structure.ElemFactory
valueOf
-
Methods inherited from interface edu.jas.structure.MonoidElem
leftDivide, leftRemainder, power, rightDivide, rightRemainder, twosidedDivide, twosidedRemainder
-
-
-
-
Field Detail
-
val
public final java.math.BigInteger val
The data structure.
-
ZERO
public static final BigInteger ZERO
The constant 0.
-
ONE
public static final BigInteger ONE
The constant 1.
-
TWO
public static final BigInteger TWO
The constant 2.
-
-
Constructor Detail
-
BigInteger
public BigInteger(java.math.BigInteger a)
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
public BigInteger(java.lang.String s)
Constructor for BigInteger from String.- Parameters:
s- String.
-
BigInteger
public BigInteger()
Constructor for BigInteger without parameters.
-
-
Method Detail
-
getVal
public java.math.BigInteger getVal()
Get the value.- Returns:
- val java.math.BigInteger.
-
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
public BigInteger factory()
Get the corresponding element factory.- Specified by:
factoryin interfaceElement<BigInteger>- Returns:
- factory for this Element.
- See Also:
Element.factory()
-
generators
public java.util.List<BigInteger> generators()
Get a list of the generating elements.- Specified by:
generatorsin interfaceElemFactory<BigInteger>- Returns:
- list of generators for the algebraic structure.
- See Also:
ElemFactory.generators()
-
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:
ElemFactory.isFinite()
-
copy
public BigInteger copy()
Clone this.- Specified by:
copyin interfaceElement<BigInteger>- Returns:
- Creates and returns a copy of this Element.
- See Also:
Object.clone()
-
copy
public BigInteger copy(BigInteger c)
Copy BigInteger element c.- Specified by:
copyin interfaceElemFactory<BigInteger>- Parameters:
c- BigInteger.- Returns:
- a copy of c.
-
getZERO
public BigInteger getZERO()
Get the zero element.- Specified by:
getZEROin interfaceAbelianGroupFactory<BigInteger>- Returns:
- 0.
-
getONE
public BigInteger 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
public java.math.BigInteger characteristic()
Characteristic of this ring.- Specified by:
characteristicin interfaceRingFactory<BigInteger>- Returns:
- characteristic of this ring.
-
fromInteger
public BigInteger fromInteger(java.math.BigInteger a)
Get a BigInteger element from a math.BigInteger.- Specified by:
fromIntegerin interfaceElemFactory<BigInteger>- Parameters:
a- math.BigInteger.- Returns:
- a as BigInteger.
-
valueOf
public static BigInteger valueOf(java.math.BigInteger a)
Get a BigInteger element from a math.BigInteger.- Parameters:
a- math.BigInteger.- Returns:
- a as BigInteger.
-
fromInteger
public BigInteger fromInteger(long a)
Get a BigInteger element from long.- Specified by:
fromIntegerin interfaceElemFactory<BigInteger>- Parameters:
a- long.- Returns:
- a as BigInteger.
-
valueOf
public static BigInteger valueOf(long a)
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:
AbelianGroupElem.isZERO()
-
isONE
public boolean isONE()
Is BigInteger number one.- Specified by:
isONEin interfaceMonoidElem<BigInteger>- Returns:
- true if this is 1, else false.
- See Also:
MonoidElem.isONE()
-
isUnit
public boolean isUnit()
Is BigInteger number unit.- Specified by:
isUnitin interfaceMonoidElem<BigInteger>- Returns:
- true if this is a unit, else false.
- See Also:
MonoidElem.isUnit()
-
toString
public java.lang.String toString()
Get the String representation.- Overrides:
toStringin classjava.lang.Object- See Also:
Object.toString()
-
toScript
public java.lang.String 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:
Element.toScript()
-
toScriptFactory
public java.lang.String toScriptFactory()
Get a scripting compatible string representation of the factory.- Specified by:
toScriptFactoryin interfaceElement<BigInteger>- Returns:
- script compatible representation for this ElemFactory.
- See Also:
Element.toScriptFactory()
-
compareTo
public int compareTo(BigInteger b)
Compare to BigInteger b.- Specified by:
compareToin interfacejava.lang.Comparable<BigInteger>- Specified by:
compareToin interfaceElement<BigInteger>- Parameters:
b- BigInteger.- Returns:
- 0 if this == b, 1 if this > b, -1 if this < b.
-
ICOMP
public static int ICOMP(BigInteger A, BigInteger B)
Integer comparison.- Parameters:
A- BigInteger.B- BigInteger.- Returns:
- 0 if A == B, 1 if A > B, -1 if A < B.
-
equals
public boolean equals(java.lang.Object b)
Comparison with any other object.- Specified by:
equalsin interfaceElement<BigInteger>- Overrides:
equalsin classjava.lang.Object- Returns:
- true if this is equal to b, else false.
- See Also:
Object.equals(java.lang.Object)
-
hashCode
public int hashCode()
Hash code for this BigInteger.- Specified by:
hashCodein interfaceElement<BigInteger>- Overrides:
hashCodein classjava.lang.Object- Returns:
- the hashCode.
- See Also:
Object.hashCode()
-
abs
public BigInteger abs()
Absolute value of this.- Specified by:
absin interfaceAbelianGroupElem<BigInteger>- Returns:
- |this|.
- See Also:
AbelianGroupElem.abs()
-
IABS
public static BigInteger IABS(BigInteger A)
Absolute value.- Parameters:
A- BigInteger.- Returns:
- abs(A).
-
negate
public BigInteger negate()
Description copied from interface:AbelianGroupElemNegate this.- Specified by:
negatein interfaceAbelianGroupElem<BigInteger>- Returns:
- - this.
-
INEG
public static BigInteger INEG(BigInteger A)
Negative value.- Parameters:
A- BigInteger.- Returns:
- -A.
-
signum
public int signum()
signum.- Specified by:
signumin interfaceAbelianGroupElem<BigInteger>- Returns:
- the sign of this.
- See Also:
AbelianGroupElem.signum()
-
ISIGN
public static int ISIGN(BigInteger A)
Integer signum.- Parameters:
A- BigInteger.- Returns:
- signum(A).
-
subtract
public BigInteger subtract(BigInteger S)
BigInteger subtract.- Specified by:
subtractin interfaceAbelianGroupElem<BigInteger>- Parameters:
S- BigInteger.- Returns:
- this-S.
-
IDIF
public static BigInteger IDIF(BigInteger A, BigInteger B)
BigInteger subtract.- Parameters:
A- BigInteger.B- BigInteger.- Returns:
- A-B.
-
divide
public BigInteger divide(BigInteger S)
BigInteger divide.- Specified by:
dividein interfaceMonoidElem<BigInteger>- Parameters:
S- BigInteger.- Returns:
- this/S.
-
IQ
public static BigInteger IQ(BigInteger A, BigInteger B)
BigInteger divide.- Parameters:
A- BigInteger.B- BigInteger.- Returns:
- A/B.
-
inverse
public BigInteger 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:
MonoidElem.inverse()
-
remainder
public BigInteger remainder(BigInteger S)
BigInteger remainder.- Specified by:
remainderin interfaceMonoidElem<BigInteger>- Parameters:
S- BigInteger.- Returns:
- this - (this/S)*S.
-
IREM
public static BigInteger IREM(BigInteger A, BigInteger B)
BigInteger remainder.- Parameters:
A- BigInteger.B- BigInteger.- Returns:
- A - (A/B)*B.
-
quotientRemainder
public BigInteger[] quotientRemainder(BigInteger S)
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
public static BigInteger[] IQR(BigInteger A, BigInteger B)
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
public BigInteger gcd(BigInteger S)
BigInteger greatest common divisor.- Specified by:
gcdin interfaceRingElem<BigInteger>- Parameters:
S- BigInteger.- Returns:
- gcd(this,S).
-
egcd
public BigInteger[] egcd(BigInteger S)
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
public static BigInteger IGCD(BigInteger A, BigInteger B)
BigInteger greatest common divisor.- Parameters:
A- BigInteger.B- BigInteger.- Returns:
- gcd(A,B).
-
random
public BigInteger random(int n)
BigInteger random.- Specified by:
randomin interfaceElemFactory<BigInteger>- Parameters:
n- such that 0 ≤ r ≤ (2n-1).- Returns:
- r, a random BigInteger.
-
random
public BigInteger random(int n, java.util.Random rnd)
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
public static BigInteger IRAND(int NL)
BigInteger random.- Parameters:
NL- such that 0 ≤ r ≤ (2n-1).- Returns:
- r, a random BigInteger.
-
multiply
public BigInteger multiply(BigInteger S)
BigInteger multiply.- Specified by:
multiplyin interfaceMonoidElem<BigInteger>- Parameters:
S- BigInteger.- Returns:
- this*S.
-
shiftLeft
public BigInteger shiftLeft(int n)
BigInteger shift left.- Parameters:
n- bits to shift.- Returns:
- this << n.
-
IPROD
public static BigInteger IPROD(BigInteger A, BigInteger B)
BigInteger multiply.- Parameters:
A- BigInteger.B- BigInteger.- Returns:
- A*B.
-
sum
public BigInteger sum(BigInteger S)
BigInteger summation.- Specified by:
sumin interfaceAbelianGroupElem<BigInteger>- Parameters:
S- BigInteger.- Returns:
- this+S.
-
ISUM
public static BigInteger ISUM(BigInteger A, BigInteger B)
BigInteger addition.- Parameters:
A- BigInteger.B- BigInteger.- Returns:
- A+B.
-
parse
public BigInteger parse(java.lang.String s)
BigInteger parse from String.- Specified by:
parsein interfaceElemFactory<BigInteger>- Parameters:
s- String.- Returns:
- Biginteger from s.
-
parse
public BigInteger parse(java.io.Reader r)
BigInteger parse from Reader.- Specified by:
parsein interfaceElemFactory<BigInteger>- Parameters:
r- Reader.- Returns:
- next Biginteger from r.
-
getDecimal
public BigDecimal getDecimal()
Get the decimal representation.- Returns:
- decimal.
-
getRational
public BigRational 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
public java.util.Iterator<BigInteger> iterator()
Get a BigInteger iterator.- Specified by:
iteratorin interfacejava.lang.Iterable<BigInteger>- Returns:
- a iterator over all integers.
-
-