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>
,Serializable
,Comparable<ModInteger>
ModInteger class with GcdRingElem interface. Objects of this class are
immutable. The SAC2 static methods are also provided.
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionfinal ModIntegerRing
ModIntegerRing reference.final BigInteger
Value part of the element data structure. -
Constructor Summary
ConstructorsConstructorDescriptionThe 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, String s) The constructor creates a ModInteger object from a ModIntegerRing and a String value part.The constructor creates a ModInteger object from a ModIntegerRing and a value part. -
Method Summary
Modifier and TypeMethodDescriptionabs()
ModInteger absolute value.long
Returns the number of bits in the representation of this ModInteger, including a sign bit.int
ModInteger comparison.copy()
Clone this.divide
(ModInteger S) ModInteger divide.egcd
(ModInteger S) ModInteger extended greatest common divisor.boolean
Comparison with any other object.factory()
Get the corresponding element factory.gcd
(ModInteger S) ModInteger greatest common divisor.Return a BigInteger from this Element.getModul()
Get the module part.Return a symmetric BigInteger from this Element.Get the symmetric value part.getVal()
Get the value part.int
hashCode()
Hash code for this ModInteger.hegcd
(ModInteger S) ModInteger half extended greatest common divisor.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.negate()
ModInteger negative.Quotient and remainder by division of this by S.ModInteger remainder.int
signum()
ModInteger signum.ModInteger subtraction.sum
(ModInteger S) ModInteger summation.toScript()
Get a scripting compatible string representation.Get a scripting compatible string representation of the factory.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 Details
-
ring
ModIntegerRing reference. -
val
Value part of the element data structure.
-
-
Constructor Details
-
ModInteger
The constructor creates a ModInteger object from a ModIntegerRing and a value part.- Parameters:
m
- ModIntegerRing.a
- math.BigInteger.
-
ModInteger
The constructor creates a ModInteger object from a ModIntegerRing and a long value part.- Parameters:
m
- ModIntegerRing.a
- long.
-
ModInteger
The constructor creates a ModInteger object from a ModIntegerRing and a String value part.- Parameters:
m
- ModIntegerRing.s
- String.
-
ModInteger
The constructor creates a 0 ModInteger object from a given ModIntegerRing.- Parameters:
m
- ModIntegerRing.
-
-
Method Details
-
getVal
Get the value part.- Returns:
- val.
-
getModul
Get the module part.- Returns:
- modul.
-
factory
Get the corresponding element factory.- Specified by:
factory
in interfaceElement<ModInteger>
- Returns:
- factory for this Element.
- See Also:
-
getSymmetricVal
Get the symmetric value part.- Returns:
- val with -modul/2 ≤ val < modul/2.
-
getInteger
Return a BigInteger from this Element.- Specified by:
getInteger
in interfaceModular
- Returns:
- a BigInteger of this.
-
getSymmetricInteger
Return a symmetric BigInteger from this Element.- Specified by:
getSymmetricInteger
in interfaceModular
- Returns:
- a symmetric BigInteger of this.
-
copy
Clone this.- Specified by:
copy
in interfaceElement<ModInteger>
- Returns:
- Creates and returns a copy of this Element.
- See Also:
-
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:
-
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:
-
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:
-
toString
Get the String representation. -
toScript
Get a scripting compatible string representation.- Specified by:
toScript
in interfaceElement<ModInteger>
- Returns:
- script compatible representation for this Element.
- See Also:
-
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:
-
compareTo
ModInteger comparison.- Specified by:
compareTo
in interfaceComparable<ModInteger>
- Specified by:
compareTo
in interfaceElement<ModInteger>
- Parameters:
b
- ModInteger.- Returns:
- sign(this-b).
-
MICOMP
ModInteger comparison.- Parameters:
A
- ModInteger.B
- ModInteger.- Returns:
- sign(this-b).
-
equals
Comparison with any other object.- Specified by:
equals
in interfaceElement<ModInteger>
- Overrides:
equals
in classObject
- Parameters:
b
-- Returns:
- true if this is equal to b, else false.
- See Also:
-
hashCode
public int hashCode()Hash code for this ModInteger.- Specified by:
hashCode
in interfaceElement<ModInteger>
- Overrides:
hashCode
in classObject
- Returns:
- the hashCode.
- See Also:
-
abs
ModInteger absolute value.- Specified by:
abs
in interfaceAbelianGroupElem<ModInteger>
- Returns:
- the absolute value of this.
- See Also:
-
MIABS
ModInteger absolute value.- Parameters:
A
- ModInteger.- Returns:
- the absolute value of A.
-
negate
ModInteger negative.- Specified by:
negate
in interfaceAbelianGroupElem<ModInteger>
- Returns:
- -this.
- See Also:
-
MINEG
ModInteger negative.- Parameters:
A
- ModInteger.- Returns:
- -A.
-
signum
public int signum()ModInteger signum.- Specified by:
signum
in interfaceAbelianGroupElem<ModInteger>
- Returns:
- signum(this).
- See Also:
-
MISIGN
ModInteger signum.- Parameters:
A
- ModInteger- Returns:
- signum(A).
-
subtract
ModInteger subtraction.- Specified by:
subtract
in interfaceAbelianGroupElem<ModInteger>
- Parameters:
S
- ModInteger.- Returns:
- this-S.
-
MIDIF
ModInteger subtraction.- Parameters:
A
- ModInteger.B
- ModInteger.- Returns:
- A-B.
-
divide
ModInteger divide.- Specified by:
divide
in interfaceMonoidElem<ModInteger>
- Parameters:
S
- ModInteger.- Returns:
- this/S.
-
MIQ
ModInteger quotient.- Parameters:
A
- ModInteger.B
- ModInteger.- Returns:
- A/B.
-
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:
-
MIINV
ModInteger inverse.- Parameters:
A
- is a non-zero integer.- Returns:
- S with S=1/A if defined.
- See Also:
-
remainder
ModInteger remainder.- Specified by:
remainder
in interfaceMonoidElem<ModInteger>
- Parameters:
S
- ModInteger.- Returns:
- remainder(this,S).
-
MIREM
ModInteger remainder.- Parameters:
A
- ModInteger.B
- ModInteger.- Returns:
- A - (A/B)*B.
-
quotientRemainder
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
ModInteger multiply.- Specified by:
multiply
in interfaceMonoidElem<ModInteger>
- Parameters:
S
- ModInteger.- Returns:
- this*S.
-
MIPROD
ModInteger product.- Parameters:
A
- ModInteger.B
- ModInteger.- Returns:
- A*B.
-
sum
ModInteger summation.- Specified by:
sum
in interfaceAbelianGroupElem<ModInteger>
- Parameters:
S
- ModInteger.- Returns:
- this+S.
-
MISUM
ModInteger summation.- Parameters:
A
- ModInteger.B
- ModInteger.- Returns:
- A+B.
-
gcd
ModInteger greatest common divisor.- Specified by:
gcd
in interfaceRingElem<ModInteger>
- Parameters:
S
- ModInteger.- Returns:
- gcd(this,S).
-
hegcd
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
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.
-