Class ModIntegerRing
java.lang.Object
edu.jas.arith.ModIntegerRing
- All Implemented Interfaces:
ModularRingFactory<ModInteger>, AbelianGroupFactory<ModInteger>, ElemFactory<ModInteger>, MonoidFactory<ModInteger>, RingFactory<ModInteger>, Serializable, Iterable<ModInteger>
public final class ModIntegerRing
extends Object
implements ModularRingFactory<ModInteger>, Iterable<ModInteger>
ModIntegerRing factory with RingFactory interface. Effectively immutable.
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate intIndicator if this ring is a field.final BigIntegerModule part of the factory data structure.private static final Random -
Constructor Summary
ConstructorsConstructorDescriptionModIntegerRing(long m) The constructor creates a ModIntegerRing object from a long as module part.ModIntegerRing(long m, boolean isField) The constructor creates a ModIntegerRing object from a long as module part.The constructor creates a ModIntegerRing object from a String object as module part.ModIntegerRing(String m, boolean isField) The constructor creates a ModIntegerRing object from a String object as module part.The constructor creates a ModIntegerRing object from a BigInteger object as module part.ModIntegerRing(BigInteger m, boolean isField) The constructor creates a ModIntegerRing object from a BigInteger object as module part. -
Method Summary
Modifier and TypeMethodDescriptionCharacteristic of this ring.chineseRemainder(ModInteger c, ModInteger ci, ModInteger a) ModInteger chinese remainder algorithm.static List<ModInteger> chineseRemainder(ModInteger m1, ModInteger m2, List<ModInteger> L1, List<ModInteger> L2) Modular integer list chinese remainder algorithm.copy(ModInteger c) Copy ModInteger element c.create(long c) Create ModInteger element c.Create ModInteger element c.create(BigInteger c) Create ModInteger element c.booleanComparison with any other object.fromInteger(long a) Get a ModInteger element from a long value.Get a ModInteger element from a BigInteger value.Get a list of the generating elements.Get the module part as BigInteger.getModul()Get the module part.getONE()Get the one element.getZERO()Get the zero element.inthashCode()Hash code for this ModIntegerRing.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.iterator()Get a ModInteger iterator.Parse ModInteger from Reader.Parse ModInteger from String.random(int n) ModInteger random.ModInteger random.toScript()Get a scripting compatible string representation.toString()Get the String representation.Methods inherited from interface ElemFactory
valueOfMethods inherited from interface Iterable
forEach, spliterator
-
Field Details
-
modul
Module part of the factory data structure. -
random
-
isField
private int isFieldIndicator if this ring is a field.
-
-
Constructor Details
-
ModIntegerRing
The constructor creates a ModIntegerRing object from a BigInteger object as module part.- Parameters:
m- math.BigInteger.
-
ModIntegerRing
The constructor creates a ModIntegerRing object from a BigInteger object as module part.- Parameters:
m- math.BigInteger.isField- indicator if m is prime.
-
ModIntegerRing
public ModIntegerRing(long m) The constructor creates a ModIntegerRing object from a long as module part.- Parameters:
m- long.
-
ModIntegerRing
public ModIntegerRing(long m, boolean isField) The constructor creates a ModIntegerRing object from a long as module part.- Parameters:
m- long.isField- indicator if m is prime.
-
ModIntegerRing
The constructor creates a ModIntegerRing object from a String object as module part.- Parameters:
m- String.
-
ModIntegerRing
The constructor creates a ModIntegerRing object from a String object as module part.- Parameters:
m- String.isField- indicator if m is prime.
-
-
Method Details
-
getModul
-
getIntegerModul
Get the module part as BigInteger.- Specified by:
getIntegerModulin interfaceModularRingFactory<ModInteger>- Returns:
- modul.
-
create
Create ModInteger element c.- Parameters:
c-- Returns:
- a ModInteger of c.
-
create
Create ModInteger element c.- Parameters:
c-- Returns:
- a ModInteger of c.
-
create
Create ModInteger element c.- Parameters:
c-- Returns:
- a ModInteger of c.
-
copy
Copy ModInteger element c.- Specified by:
copyin interfaceElemFactory<ModInteger>- Parameters:
c-- Returns:
- a copy of c.
-
getZERO
Get the zero element.- Specified by:
getZEROin interfaceAbelianGroupFactory<ModInteger>- Returns:
- 0 as ModInteger.
-
getONE
Get the one element.- Specified by:
getONEin interfaceMonoidFactory<ModInteger>- Returns:
- 1 as ModInteger.
-
generators
Get a list of the generating elements.- Specified by:
generatorsin interfaceElemFactory<ModInteger>- Returns:
- list of generators for the algebraic structure.
- See Also:
-
isFinite
public boolean isFinite()Is this structure finite or infinite.- Specified by:
isFinitein interfaceElemFactory<ModInteger>- Returns:
- true if this structure is finite, else false.
- See Also:
-
isCommutative
public boolean isCommutative()Query if this ring is commutative.- Specified by:
isCommutativein interfaceMonoidFactory<ModInteger>- Returns:
- true.
-
isAssociative
public boolean isAssociative()Query if this ring is associative.- Specified by:
isAssociativein interfaceMonoidFactory<ModInteger>- Returns:
- true.
-
isField
public boolean isField()Query if this ring is a field.- Specified by:
isFieldin interfaceRingFactory<ModInteger>- Returns:
- true if module is prime, else false.
-
characteristic
Characteristic of this ring.- Specified by:
characteristicin interfaceRingFactory<ModInteger>- Returns:
- characteristic of this ring.
-
fromInteger
Get a ModInteger element from a BigInteger value.- Specified by:
fromIntegerin interfaceElemFactory<ModInteger>- Parameters:
a- BigInteger.- Returns:
- a ModInteger.
-
fromInteger
Get a ModInteger element from a long value.- Specified by:
fromIntegerin interfaceElemFactory<ModInteger>- Parameters:
a- long.- Returns:
- a ModInteger.
-
toString
-
toScript
Get a scripting compatible string representation.- Specified by:
toScriptin interfaceElemFactory<ModInteger>- Returns:
- script compatible representation for this ElemFactory.
- See Also:
-
equals
-
hashCode
-
random
ModInteger random.- Specified by:
randomin interfaceElemFactory<ModInteger>- Parameters:
n- such that 0 ≤ v ≤ (2n-1).- Returns:
- a random integer mod modul.
-
random
ModInteger random.- Specified by:
randomin interfaceElemFactory<ModInteger>- Parameters:
n- such that 0 ≤ v ≤ (2n-1).rnd- is a source for random bits.- Returns:
- a random integer mod modul.
-
parse
Parse ModInteger from String.- Specified by:
parsein interfaceElemFactory<ModInteger>- Parameters:
s- String.- Returns:
- ModInteger from s.
-
parse
Parse ModInteger from Reader.- Specified by:
parsein interfaceElemFactory<ModInteger>- Parameters:
r- Reader.- Returns:
- next ModInteger from r.
-
chineseRemainder
ModInteger chinese remainder algorithm. This is a factory method. Assert c.modul ≥ a.modul and c.modul * a.modul = this.modul.- Specified by:
chineseRemainderin interfaceModularRingFactory<ModInteger>- Parameters:
c- ModInteger.ci- inverse of c.modul in ring of a.a- other ModInteger.- Returns:
- S, with S mod c.modul == c and S mod a.modul == a.
-
chineseRemainder
public static List<ModInteger> chineseRemainder(ModInteger m1, ModInteger m2, List<ModInteger> L1, List<ModInteger> L2) Modular integer list chinese remainder algorithm. m1 and m2 are positive integers, with GCD(m1,m2)=1 and m=m1*m2 less than beta. L1 and L2 are lists of elements of Z(m1) and Z(m2) respectively. L is a list of all a in Z(m) such that a is congruent to a1 modulo m1 and a is congruent to a2 modulo m2 with a1 in L1 and a2 in L2. This is a factory method. Assert c.modul ≥ a.modul and c.modul * a.modul = this.modul.- Parameters:
m1- modular integer.m2- other modular integer.- Returns:
- L list of congruences.
-
iterator
Get a ModInteger iterator.- Specified by:
iteratorin interfaceIterable<ModInteger>- Returns:
- a iterator over all modular integers in this ring.
-