Package edu.jas.arith

Class ModIntRing

java.lang.Object
edu.jas.arith.ModIntRing
All Implemented Interfaces:
ModularRingFactory<ModInt>, AbelianGroupFactory<ModInt>, ElemFactory<ModInt>, MonoidFactory<ModInt>, RingFactory<ModInt>, Serializable, Iterable<ModInt>

public final class ModIntRing extends Object implements ModularRingFactory<ModInt>, Iterable<ModInt>
ModIntRing factory with RingFactory interface. Effectively immutable.
See Also:
  • Field Details

    • modul

      public final int modul
      Module part of the factory data structure.
    • random

      private static final Random random
      Random number generator.
    • isField

      private int isField
      Indicator if this ring is a field.
    • MAX_INT

      public static final BigInteger MAX_INT
      maximal representable integer.
  • Constructor Details

    • ModIntRing

      public ModIntRing(int m)
      The constructor creates a ModIntRing object from a int integer as module part.
      Parameters:
      m - int integer.
    • ModIntRing

      public ModIntRing(int m, boolean isField)
      The constructor creates a ModIntRing object from a int integer as module part.
      Parameters:
      m - int integer.
      isField - indicator if m is prime.
    • ModIntRing

      public ModIntRing(Integer m)
      The constructor creates a ModIntRing object from a Int integer as module part.
      Parameters:
      m - Int integer.
    • ModIntRing

      public ModIntRing(Integer m, boolean isField)
      The constructor creates a ModIntRing object from a Int integer as module part.
      Parameters:
      m - Int integer.
      isField - indicator if m is prime.
    • ModIntRing

      public ModIntRing(BigInteger m)
      The constructor creates a ModIntRing object from a BigInteger converted to int as module part.
      Parameters:
      m - java.math.BigInteger.
    • ModIntRing

      public ModIntRing(BigInteger m, boolean isField)
      The constructor creates a ModIntRing object from a BigInteger converted to int as module part.
      Parameters:
      m - java.math.BigInteger.
      isField - indicator if m is prime.
    • ModIntRing

      public ModIntRing(String m)
      The constructor creates a ModIntRing object from a String object as module part.
      Parameters:
      m - String.
    • ModIntRing

      public ModIntRing(String m, boolean isField)
      The constructor creates a ModIntRing object from a String object as module part.
      Parameters:
      m - String.
      isField - indicator if m is prime.
  • Method Details

    • getModul

      public BigInteger getModul()
      Get the module part as BigInteger.
      Returns:
      modul.
    • getIntModul

      public int getIntModul()
      Get the module part as int.
      Returns:
      modul.
    • getIntegerModul

      public BigInteger getIntegerModul()
      Get the module part as BigInteger.
      Specified by:
      getIntegerModul in interface ModularRingFactory<ModInt>
      Returns:
      modul.
    • create

      public ModInt create(BigInteger c)
      Create ModInt element c.
      Parameters:
      c -
      Returns:
      a ModInt of c.
    • create

      public ModInt create(int c)
      Create ModInt element c.
      Parameters:
      c -
      Returns:
      a ModInt of c.
    • create

      public ModInt create(String c)
      Create ModInt element c.
      Parameters:
      c -
      Returns:
      a ModInt of c.
    • copy

      public ModInt copy(ModInt c)
      Copy ModInt element c.
      Specified by:
      copy in interface ElemFactory<ModInt>
      Parameters:
      c -
      Returns:
      a copy of c.
    • getZERO

      public ModInt getZERO()
      Get the zero element.
      Specified by:
      getZERO in interface AbelianGroupFactory<ModInt>
      Returns:
      0 as ModInt.
    • getONE

      public ModInt getONE()
      Get the one element.
      Specified by:
      getONE in interface MonoidFactory<ModInt>
      Returns:
      1 as ModInt.
    • generators

      public List<ModInt> generators()
      Get a list of the generating elements.
      Specified by:
      generators in interface ElemFactory<ModInt>
      Returns:
      list of generators for the algebraic structure.
      See Also:
    • isFinite

      public boolean isFinite()
      Is this structure finite or infinite.
      Specified by:
      isFinite in interface ElemFactory<ModInt>
      Returns:
      true if this structure is finite, else false.
      See Also:
    • isCommutative

      public boolean isCommutative()
      Query if this ring is commutative.
      Specified by:
      isCommutative in interface MonoidFactory<ModInt>
      Returns:
      true.
    • isAssociative

      public boolean isAssociative()
      Query if this ring is associative.
      Specified by:
      isAssociative in interface MonoidFactory<ModInt>
      Returns:
      true.
    • isField

      public boolean isField()
      Query if this ring is a field.
      Specified by:
      isField in interface RingFactory<ModInt>
      Returns:
      true if module is prime, else false.
    • characteristic

      public BigInteger characteristic()
      Characteristic of this ring.
      Specified by:
      characteristic in interface RingFactory<ModInt>
      Returns:
      characteristic of this ring.
    • fromInteger

      public ModInt fromInteger(BigInteger a)
      Get a ModInt element from a BigInteger value.
      Specified by:
      fromInteger in interface ElemFactory<ModInt>
      Parameters:
      a - BigInteger.
      Returns:
      a ModInt.
    • fromInteger

      public ModInt fromInteger(int a)
      Get a ModInt element from a int value.
      Parameters:
      a - int.
      Returns:
      a ModInt.
    • fromInteger

      public ModInt fromInteger(long a)
      Get a ModInt element from a long value.
      Specified by:
      fromInteger in interface ElemFactory<ModInt>
      Parameters:
      a - lon.
      Returns:
      a ModInt.
    • toString

      public String toString()
      Get the String representation.
      Overrides:
      toString in class Object
      See Also:
    • toScript

      public String toScript()
      Get a scripting compatible string representation.
      Specified by:
      toScript in interface ElemFactory<ModInt>
      Returns:
      script compatible representation for this ElemFactory.
      See Also:
    • equals

      public boolean equals(Object b)
      Comparison with any other object.
      Overrides:
      equals in class Object
      See Also:
    • hashCode

      public int hashCode()
      Hash code for this ModIntRing.
      Overrides:
      hashCode in class Object
      See Also:
    • random

      public ModInt random(int n)
      ModInt random.
      Specified by:
      random in interface ElemFactory<ModInt>
      Parameters:
      n - such that 0 ≤ v ≤ (2n-1).
      Returns:
      a random integer mod modul.
    • random

      public ModInt random(int n, Random rnd)
      ModInt random.
      Specified by:
      random in interface ElemFactory<ModInt>
      Parameters:
      n - such that 0 ≤ v ≤ (2n-1).
      rnd - is a source for random bits.
      Returns:
      a random integer mod modul.
    • parse

      public ModInt parse(String s)
      Parse ModInt from String.
      Specified by:
      parse in interface ElemFactory<ModInt>
      Parameters:
      s - String.
      Returns:
      ModInt from s.
    • parse

      public ModInt parse(Reader r)
      Parse ModInt from Reader.
      Specified by:
      parse in interface ElemFactory<ModInt>
      Parameters:
      r - Reader.
      Returns:
      next ModInt from r.
    • chineseRemainder

      public ModInt chineseRemainder(ModInt c, ModInt ci, ModInt a)
      ModInt chinese remainder algorithm. This is a factory method. Assert c.modul ≥ a.modul and c.modul * a.modul = this.modul.
      Specified by:
      chineseRemainder in interface ModularRingFactory<ModInt>
      Parameters:
      c - ModInt.
      ci - inverse of c.modul in ring of a.
      a - other ModInt.
      Returns:
      S, with S mod c.modul == c and S mod a.modul == a.
    • chineseRemainder

      public static List<ModInt> chineseRemainder(ModInt m1, ModInt m2, List<ModInt> L1, List<ModInt> L2)
      Modular digit list chinese remainder algorithm. m1 and m2 are positive beta-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 - ModInt.
      m2 - other ModInt.
      Returns:
      L list of congruences.
    • iterator

      public Iterator<ModInt> iterator()
      Get a ModInt iterator.
      Specified by:
      iterator in interface Iterable<ModInt>
      Returns:
      a iterator over all modular integers in this ring.