Package edu.jas.arith
Class ModInteger
- java.lang.Object
-
- edu.jas.arith.ModInteger
-
- All Implemented Interfaces:
Modular
,AbelianGroupElem<ModInteger>
,Element<ModInteger>
,GcdRingElem<ModInteger>
,MonoidElem<ModInteger>
,RingElem<ModInteger>
,java.io.Serializable
,java.lang.Comparable<ModInteger>
public final class ModInteger extends java.lang.Object implements GcdRingElem<ModInteger>, Modular
ModInteger class with 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 ModIntegerRing
ring
ModIntegerRing reference.java.math.BigInteger
val
Value part of the element data structure.
-
Constructor Summary
Constructors Constructor Description ModInteger(ModIntegerRing m)
The constructor creates a 0 ModInteger object from a given ModIntegerRing.ModInteger(ModIntegerRing m, long a)
The constructor creates a ModInteger object from a ModIntegerRing and a long value part.ModInteger(ModIntegerRing m, java.lang.String s)
The constructor creates a ModInteger object from a ModIntegerRing and a String value part.ModInteger(ModIntegerRing m, java.math.BigInteger a)
The constructor creates a ModInteger object from a ModIntegerRing and a value part.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description ModInteger
abs()
ModInteger absolute value.long
bitLength()
Returns the number of bits in the representation of this ModInteger, including a sign bit.int
compareTo(ModInteger b)
ModInteger comparison.ModInteger
copy()
Clone this.ModInteger
divide(ModInteger S)
ModInteger divide.ModInteger[]
egcd(ModInteger S)
ModInteger extended greatest common divisor.boolean
equals(java.lang.Object b)
Comparison with any other object.ModIntegerRing
factory()
Get the corresponding element factory.ModInteger
gcd(ModInteger S)
ModInteger greatest common divisor.BigInteger
getInteger()
Return a BigInteger from this Element.java.math.BigInteger
getModul()
Get the module part.BigInteger
getSymmetricInteger()
Return a symmetric BigInteger from this Element.java.math.BigInteger
getSymmetricVal()
Get the symmetric value part.java.math.BigInteger
getVal()
Get the value part.int
hashCode()
Hash code for this ModInteger.ModInteger[]
hegcd(ModInteger S)
ModInteger half extended greatest common divisor.ModInteger
inverse()
ModInteger inverse.boolean
isONE()
Is ModInteger number one.boolean
isUnit()
Is ModInteger number a unit.boolean
isZERO()
Is ModInteger number zero.static ModInteger
MIABS(ModInteger A)
ModInteger absolute value.static int
MICOMP(ModInteger A, ModInteger B)
ModInteger comparison.static ModInteger
MIDIF(ModInteger A, ModInteger B)
ModInteger subtraction.static ModInteger
MIINV(ModInteger A)
ModInteger inverse.static ModInteger
MINEG(ModInteger A)
ModInteger negative.static ModInteger
MIPROD(ModInteger A, ModInteger B)
ModInteger product.static ModInteger
MIQ(ModInteger A, ModInteger B)
ModInteger quotient.static ModInteger
MIREM(ModInteger A, ModInteger B)
ModInteger remainder.static int
MISIGN(ModInteger A)
ModInteger signum.static ModInteger
MISUM(ModInteger A, ModInteger B)
ModInteger summation.ModInteger
multiply(ModInteger S)
ModInteger multiply.ModInteger
negate()
ModInteger negative.ModInteger[]
quotientRemainder(ModInteger S)
Quotient and remainder by division of this by S.ModInteger
remainder(ModInteger S)
ModInteger remainder.int
signum()
ModInteger signum.ModInteger
subtract(ModInteger S)
ModInteger subtraction.ModInteger
sum(ModInteger S)
ModInteger summation.java.lang.String
toScript()
Get a scripting compatible string representation.java.lang.String
toScriptFactory()
Get a scripting compatible string representation of the factory.java.lang.String
toString()
Get the String representation.-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface edu.jas.structure.MonoidElem
leftDivide, leftRemainder, power, rightDivide, rightRemainder, twosidedDivide, twosidedRemainder
-
-
-
-
Field Detail
-
ring
public final ModIntegerRing ring
ModIntegerRing reference.
-
val
public final java.math.BigInteger val
Value part of the element data structure.
-
-
Constructor Detail
-
ModInteger
public ModInteger(ModIntegerRing m, java.math.BigInteger a)
The constructor creates a ModInteger object from a ModIntegerRing and a value part.- Parameters:
m
- ModIntegerRing.a
- math.BigInteger.
-
ModInteger
public ModInteger(ModIntegerRing m, long a)
The constructor creates a ModInteger object from a ModIntegerRing and a long value part.- Parameters:
m
- ModIntegerRing.a
- long.
-
ModInteger
public ModInteger(ModIntegerRing m, java.lang.String s)
The constructor creates a ModInteger object from a ModIntegerRing and a String value part.- Parameters:
m
- ModIntegerRing.s
- String.
-
ModInteger
public ModInteger(ModIntegerRing m)
The constructor creates a 0 ModInteger object from a given ModIntegerRing.- Parameters:
m
- ModIntegerRing.
-
-
Method Detail
-
getVal
public java.math.BigInteger getVal()
Get the value part.- Returns:
- val.
-
getModul
public java.math.BigInteger getModul()
Get the module part.- Returns:
- modul.
-
factory
public ModIntegerRing factory()
Get the corresponding element factory.- Specified by:
factory
in interfaceElement<ModInteger>
- Returns:
- factory for this Element.
- See Also:
Element.factory()
-
getSymmetricVal
public java.math.BigInteger getSymmetricVal()
Get the symmetric value part.- Returns:
- val with -modul/2 ≤ val < modul/2.
-
getInteger
public BigInteger getInteger()
Return a BigInteger from this Element.- Specified by:
getInteger
in interfaceModular
- Returns:
- a BigInteger of this.
-
getSymmetricInteger
public BigInteger getSymmetricInteger()
Return a symmetric BigInteger from this Element.- Specified by:
getSymmetricInteger
in interfaceModular
- Returns:
- a symmetric BigInteger of this.
-
copy
public ModInteger copy()
Clone this.- Specified by:
copy
in interfaceElement<ModInteger>
- Returns:
- Creates and returns a copy of this Element.
- See Also:
Object.clone()
-
isZERO
public boolean isZERO()
Is ModInteger number zero.- Specified by:
isZERO
in interfaceAbelianGroupElem<ModInteger>
- Returns:
- If this is 0 then true is returned, else false.
- See Also:
AbelianGroupElem.isZERO()
-
isONE
public boolean isONE()
Is ModInteger number one.- Specified by:
isONE
in interfaceMonoidElem<ModInteger>
- Returns:
- If this is 1 then true is returned, else false.
- See Also:
MonoidElem.isONE()
-
isUnit
public boolean isUnit()
Is ModInteger number a unit.- Specified by:
isUnit
in interfaceMonoidElem<ModInteger>
- Returns:
- If this is a unit then true is returned, else false.
- See Also:
MonoidElem.isUnit()
-
toString
public java.lang.String toString()
Get the String representation.- Overrides:
toString
in classjava.lang.Object
- See Also:
Object.toString()
-
toScript
public java.lang.String toScript()
Get a scripting compatible string representation.- Specified by:
toScript
in interfaceElement<ModInteger>
- 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:
toScriptFactory
in interfaceElement<ModInteger>
- Returns:
- script compatible representation for this ElemFactory.
- See Also:
Element.toScriptFactory()
-
compareTo
public int compareTo(ModInteger b)
ModInteger comparison.- Specified by:
compareTo
in interfacejava.lang.Comparable<ModInteger>
- Specified by:
compareTo
in interfaceElement<ModInteger>
- Parameters:
b
- ModInteger.- Returns:
- sign(this-b).
-
MICOMP
public static int MICOMP(ModInteger A, ModInteger B)
ModInteger comparison.- Parameters:
A
- ModInteger.B
- ModInteger.- Returns:
- sign(this-b).
-
equals
public boolean equals(java.lang.Object b)
Comparison with any other object.- Specified by:
equals
in interfaceElement<ModInteger>
- Overrides:
equals
in 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 ModInteger.- Specified by:
hashCode
in interfaceElement<ModInteger>
- Overrides:
hashCode
in classjava.lang.Object
- Returns:
- the hashCode.
- See Also:
Object.hashCode()
-
abs
public ModInteger abs()
ModInteger absolute value.- Specified by:
abs
in interfaceAbelianGroupElem<ModInteger>
- Returns:
- the absolute value of this.
- See Also:
AbelianGroupElem.abs()
-
MIABS
public static ModInteger MIABS(ModInteger A)
ModInteger absolute value.- Parameters:
A
- ModInteger.- Returns:
- the absolute value of A.
-
negate
public ModInteger negate()
ModInteger negative.- Specified by:
negate
in interfaceAbelianGroupElem<ModInteger>
- Returns:
- -this.
- See Also:
AbelianGroupElem.negate()
-
MINEG
public static ModInteger MINEG(ModInteger A)
ModInteger negative.- Parameters:
A
- ModInteger.- Returns:
- -A.
-
signum
public int signum()
ModInteger signum.- Specified by:
signum
in interfaceAbelianGroupElem<ModInteger>
- Returns:
- signum(this).
- See Also:
AbelianGroupElem.signum()
-
MISIGN
public static int MISIGN(ModInteger A)
ModInteger signum.- Parameters:
A
- ModInteger- Returns:
- signum(A).
-
subtract
public ModInteger subtract(ModInteger S)
ModInteger subtraction.- Specified by:
subtract
in interfaceAbelianGroupElem<ModInteger>
- Parameters:
S
- ModInteger.- Returns:
- this-S.
-
MIDIF
public static ModInteger MIDIF(ModInteger A, ModInteger B)
ModInteger subtraction.- Parameters:
A
- ModInteger.B
- ModInteger.- Returns:
- A-B.
-
divide
public ModInteger divide(ModInteger S)
ModInteger divide.- Specified by:
divide
in interfaceMonoidElem<ModInteger>
- Parameters:
S
- ModInteger.- Returns:
- this/S.
-
MIQ
public static ModInteger MIQ(ModInteger A, ModInteger B)
ModInteger quotient.- Parameters:
A
- ModInteger.B
- ModInteger.- Returns:
- A/B.
-
inverse
public ModInteger inverse()
ModInteger inverse.- Specified by:
inverse
in interfaceMonoidElem<ModInteger>
- Returns:
- S with S=1/this if defined.
- Throws:
NotInvertibleException
- if the element is not invertible.- See Also:
MonoidElem.inverse()
-
MIINV
public static ModInteger MIINV(ModInteger A)
ModInteger inverse.- Parameters:
A
- is a non-zero integer.- Returns:
- S with S=1/A if defined.
- See Also:
MonoidElem.inverse()
-
remainder
public ModInteger remainder(ModInteger S)
ModInteger remainder.- Specified by:
remainder
in interfaceMonoidElem<ModInteger>
- Parameters:
S
- ModInteger.- Returns:
- remainder(this,S).
-
MIREM
public static ModInteger MIREM(ModInteger A, ModInteger B)
ModInteger remainder.- Parameters:
A
- ModInteger.B
- ModInteger.- Returns:
- A - (A/B)*B.
-
quotientRemainder
public ModInteger[] quotientRemainder(ModInteger S)
Quotient and remainder by division of this by S.- Specified by:
quotientRemainder
in interfaceMonoidElem<ModInteger>
- Parameters:
S
- a modular integer- Returns:
- [this/S, this - (this/S)*S].
-
multiply
public ModInteger multiply(ModInteger S)
ModInteger multiply.- Specified by:
multiply
in interfaceMonoidElem<ModInteger>
- Parameters:
S
- ModInteger.- Returns:
- this*S.
-
MIPROD
public static ModInteger MIPROD(ModInteger A, ModInteger B)
ModInteger product.- Parameters:
A
- ModInteger.B
- ModInteger.- Returns:
- A*B.
-
sum
public ModInteger sum(ModInteger S)
ModInteger summation.- Specified by:
sum
in interfaceAbelianGroupElem<ModInteger>
- Parameters:
S
- ModInteger.- Returns:
- this+S.
-
MISUM
public static ModInteger MISUM(ModInteger A, ModInteger B)
ModInteger summation.- Parameters:
A
- ModInteger.B
- ModInteger.- Returns:
- A+B.
-
gcd
public ModInteger gcd(ModInteger S)
ModInteger greatest common divisor.- Specified by:
gcd
in interfaceRingElem<ModInteger>
- Parameters:
S
- ModInteger.- Returns:
- gcd(this,S).
-
hegcd
public ModInteger[] hegcd(ModInteger S)
ModInteger half extended greatest common divisor.- Parameters:
S
- ModInteger.- Returns:
- [ gcd(this,S), a ] with a*this + b*S = gcd(this,S) for some b.
-
egcd
public ModInteger[] egcd(ModInteger S)
ModInteger extended greatest common divisor.- Specified by:
egcd
in interfaceRingElem<ModInteger>
- Parameters:
S
- ModInteger.- Returns:
- [ gcd(this,S), a, b ] with a*this + b*S = gcd(this,S).
-
bitLength
public long bitLength()
Returns the number of bits in the representation of this ModInteger, including a sign bit. For positive ModIntegers, this is equivalent toval.bitLength()
.)- Returns:
- number of bits in the representation of this ModInteger, including a sign bit.
-
-