Package edu.jas.arith

Class ProductRing<C extends RingElem<C>>

java.lang.Object
edu.jas.arith.ProductRing<C>
All Implemented Interfaces:
AbelianGroupFactory<Product<C>>, ElemFactory<Product<C>>, MonoidFactory<Product<C>>, RingFactory<Product<C>>, Serializable

public class ProductRing<C extends RingElem<C>> extends Object implements RingFactory<Product<C>>
Direct product ring factory based on RingElem and RingFactory module. Objects of this class are mutable.
See Also:
  • Field Details

    • logger

      private static final org.apache.logging.log4j.Logger logger
    • nCopies

      protected int nCopies
      Ring factory is n copies.
    • ring

      protected final RingFactory<C extends RingElem<C>> ring
      One Ring factory.
    • ringList

      protected final List<RingFactory<C extends RingElem<C>>> ringList
      Ring factory list.
    • random

      protected static final Random random
      A default random sequence generator.
  • Constructor Details

    • ProductRing

      public ProductRing(RingFactory<C> r, int n)
      The constructor creates a ProductRing object from an ring factory and a modul.
      Parameters:
      r - ring factory.
      n - number of copies.
    • ProductRing

      public ProductRing(List<RingFactory<C>> l)
      The constructor creates a ProductRing object from an ring factory and a modul.
      Parameters:
      l - list of ring factories.
  • Method Details

    • getFactory

      public RingFactory<C> getFactory(int i)
      Get ring factory at index i.
      Parameters:
      i - index.
      Returns:
      RingFactory_i.
    • addFactory

      public void addFactory(RingFactory<C> rf)
      Add a ring factory.
      Parameters:
      rf - new ring factory.
    • containsFactory

      public boolean containsFactory(RingFactory<C> rf)
      Contains a ring factory.
      Parameters:
      rf - ring factory.
      Returns:
      true, if rf is contained in this, else false.
    • isFinite

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

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

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

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

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

      public Product<C> getAtomic(int i)
      Get an atomic element.
      Parameters:
      i - index.
      Returns:
      e_i as Product.
    • length

      public int length()
      Get the number of factors of this ring.
      Returns:
      nCopies or ringList.size().
    • isCommutative

      public boolean isCommutative()
      Query if this ring is commutative.
      Specified by:
      isCommutative in interface MonoidFactory<C extends RingElem<C>>
      Returns:
      true if this ring is commutative, else false.
    • isAssociative

      public boolean isAssociative()
      Query if this ring is associative.
      Specified by:
      isAssociative in interface MonoidFactory<C extends RingElem<C>>
      Returns:
      true if this ring is associative, else false.
    • isField

      public boolean isField()
      Query if this ring is a field.
      Specified by:
      isField in interface RingFactory<C extends RingElem<C>>
      Returns:
      true or false.
    • onlyFields

      public boolean onlyFields()
      Query if this ring consists only of fields.
      Returns:
      true or false.
    • characteristic

      public BigInteger characteristic()
      Characteristic of this ring.
      Specified by:
      characteristic in interface RingFactory<C extends RingElem<C>>
      Returns:
      minimal characteristic of ring component.
    • fromInteger

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

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

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

      public String toScript()
      Get a scripting compatible string representation.
      Specified by:
      toScript in interface ElemFactory<C extends RingElem<C>>
      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 product ring.
      Overrides:
      hashCode in class Object
      See Also:
    • random

      public Product<C> random(int n)
      Product random.
      Specified by:
      random in interface ElemFactory<C extends RingElem<C>>
      Parameters:
      n - such that 0 ≤ v ≤ (2n-1).
      Returns:
      a random product element v.
    • random

      public Product<C> random(int n, float q)
      Product random.
      Parameters:
      n - such that 0 ≤ v ≤ (2n-1).
      q - density of nozero entries.
      Returns:
      a random product element v.
    • random

      public Product<C> random(int n, Random rnd)
      Product random.
      Specified by:
      random in interface ElemFactory<C extends RingElem<C>>
      Parameters:
      n - such that 0 ≤ v ≤ (2n-1).
      rnd - is a source for random bits.
      Returns:
      a random product element v.
    • random

      public Product<C> random(int n, float q, Random rnd)
      Product random.
      Parameters:
      n - such that 0 ≤ v ≤ (2n-1).
      q - density of nozero entries.
      rnd - is a source for random bits.
      Returns:
      a random product element v.
    • parse

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

      public Product<C> parse(Reader r)
      Parse Product from Reader. Syntax: p1 ... pn (no commas)
      Specified by:
      parse in interface ElemFactory<C extends RingElem<C>>
      Parameters:
      r - Reader.
      Returns:
      next Product from r.