Package edu.jas.poly

Class GenExteriorPolynomialRing<C extends RingElem<C>>

java.lang.Object
edu.jas.poly.GenExteriorPolynomialRing<C>
Type Parameters:
C - coefficient type
All Implemented Interfaces:
AbelianGroupFactory<GenExteriorPolynomial<C>>, ElemFactory<GenExteriorPolynomial<C>>, MonoidFactory<GenExteriorPolynomial<C>>, RingFactory<GenExteriorPolynomial<C>>, Serializable

public final class GenExteriorPolynomialRing<C extends RingElem<C>> extends Object implements RingFactory<GenExteriorPolynomial<C>>
GenExteriorPolynomialRing generic antisymmetric polynomial factory implementing RingFactory; Factory for antisymmetric polynomials (in fact vectors) over C. Objects of this class are intended to be immutable. Only the coefficients are modeled with generic types, the "exponents" are fixed to IndexList. C can also be a non integral domain, e.g. a ModInteger, i.e. it may contain zero divisors, since multiply() does check for zero coefficients and index lists.
See Also:
  • Field Details

    • coFac

      public final RingFactory<C extends RingElem<C>> coFac
      The factory for the coefficients.
    • ixfac

      public final IndexFactory ixfac
      The factory for the IndexList.
    • ZERO

      public final GenExteriorPolynomial<C extends RingElem<C>> ZERO
      The constant polynomial 0 for this ring.
    • ONE

      public final GenExteriorPolynomial<C extends RingElem<C>> ONE
      The constant polynomial 1 for this ring.
    • wone

      public final IndexList wone
      The constant empty index lists exponent for this ring.
    • random

      static final Random random
      A default random sequence generator.
    • isField

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

      private static final org.apache.logging.log4j.Logger logger
      Log4j logger object.
    • checkPreempt

      final boolean checkPreempt
      Flag to enable if preemptive interrupt is checked.
  • Constructor Details

    • GenExteriorPolynomialRing

      public GenExteriorPolynomialRing(RingFactory<C> cf, IndexFactory wf)
      The constructor creates a polynomial factory object with the default term order.
      Parameters:
      cf - factory for coefficients of type C.
      wf - factory for index list.
    • GenExteriorPolynomialRing

      public GenExteriorPolynomialRing(RingFactory<C> cf, String[] s)
      The constructor creates a polynomial factory object.
      Parameters:
      cf - factory for coefficients of type C.
      s - array of variable names.
    • GenExteriorPolynomialRing

      public GenExteriorPolynomialRing(RingFactory<C> cf, String s)
      The constructor creates a polynomial factory object.
      Parameters:
      cf - factory for coefficients of type C.
      s - string of single letter variable names.
    • GenExteriorPolynomialRing

      public GenExteriorPolynomialRing(RingFactory<C> cf, GenExteriorPolynomialRing o)
      The constructor creates a polynomial factory object.
      Parameters:
      cf - factory for coefficients of type C.
      o - other polynomial ring.
    • GenExteriorPolynomialRing

      public GenExteriorPolynomialRing(GenPolynomialRing<C> fac)
      The constructor creates a polynomial factory object.
      Parameters:
      fac - polynomial ring.
  • Method Details

    • copy

      public GenExteriorPolynomialRing<C> copy()
      Copy this factory.
      Returns:
      a clone of this.
    • 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<C extends RingElem<C>>
      Returns:
      script compatible representation for this Element.
      See Also:
    • equals

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

      public int hashCode()
      Hash code for this polynomial ring.
      Overrides:
      hashCode in class Object
      See Also:
    • getZEROCoefficient

      public C getZEROCoefficient()
      Get the zero element from the coefficients.
      Returns:
      0 as C.
    • getONECoefficient

      public C getONECoefficient()
      Get the one element from the coefficients.
      Returns:
      1 as C.
    • getZERO

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

      public GenExteriorPolynomial<C> getONE()
      Get the one element.
      Specified by:
      getONE in interface MonoidFactory<C extends RingElem<C>>
      Returns:
      1 as GenExteriorPolynomial.
    • 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.
    • 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:
    • isField

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

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

      public GenExteriorPolynomial<C> valueOf(C a)
      Get a (constant) GenExteriorPolynomial element from a coefficient value.
      Parameters:
      a - coefficient.
      Returns:
      a constant GenExteriorPolynomial.
    • valueOf

      public GenExteriorPolynomial<C> valueOf(IndexList e)
      Get a GenExteriorPolynomial element from a index list.
      Parameters:
      e - index list.
      Returns:
      a GenExteriorPolynomial.
    • valueOf

      public GenExteriorPolynomial<C> valueOf(ExpVector e)
      Get a GenExteriorPolynomial from an ExpVector.
      Parameters:
      e - exponent vector.
      Returns:
      a GenExteriorPolynomial, if exponents are > 1 return ZERO.
    • valueOf

      public GenExteriorPolynomial<C> valueOf(C a, IndexList e)
      Get a GenExteriorPolynomial from a coefficient and a IndexList.
      Parameters:
      a - coefficient.
      e - word.
      Returns:
      a GenExteriorPolynomial.
    • valueOf

      public GenExteriorPolynomial<C> valueOf(C a, ExpVector e)
      Get a GenExteriorPolynomial from a coefficient and an ExpVector.
      Parameters:
      a - coefficient.
      e - exponent vector.
      Returns:
      a GenExteriorPolynomial, if exponents are > 1 return ZERO.
    • valueOf

      public GenExteriorPolynomial<C> valueOf(GenPolynomial<C> a)
      Get a GenExteriorPolynomial from a multivariate GenPolynomial, terms with exponents > 1 are set to zero.
      Parameters:
      a - multivariate GenPolynomial.
      Returns:
      multivariate a GenExteriorPolynomial.
    • valueOf

      Get a GenExteriorPolynomial from a GenExteriorPolynomial with conformant index lists.
      Parameters:
      a - GenExteriorPolynomial.
      Returns:
      a GenExteriorPolynomial with conformant index lists.
    • valueOf

      public List<GenExteriorPolynomial<C>> valueOf(List<GenPolynomial<C>> A)
      Get a list of GenExteriorPolynomials from a list of GenPolynomials.
      Parameters:
      A - GenPolynomial list.
      Returns:
      a GenExteriorPolynomial list.
    • getIMAX

      public GenExteriorPolynomial<C> getIMAX()
      Get a GenExteriorPolynomial maximal index list element.
      Returns:
      a GenExteriorPolynomial with maximal index list.
    • fromInteger

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

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

      public GenExteriorPolynomial<C> fromVector(GenVector<C> a)
      Get a GenExteriorPolynomial from a GenVector.
      Parameters:
      a - GenVector.
      Returns:
      a GenExteriorPolynomial.
    • fromMatrix

      public List<GenExteriorPolynomial<C>> fromMatrix(GenMatrix<C> A)
      Get a list of GenExteriorPolynomials from a GenMatrix.
      Parameters:
      A - GenMatrix
      Returns:
      a list of GenExteriorPolynomials.
    • determinant

      public C determinant(List<GenExteriorPolynomial<C>> A)
      Determinant form exterior polynomial / matrix.
      Parameters:
      A - list of GenExteriorPolynomials
      Returns:
      determinant of 'matrix' A.
    • fromPolynomial

      public GenExteriorPolynomial<C> fromPolynomial(GenPolynomial<C> a)
      Get a GenExteriorPolynomial from a univariate GenPolynomial. Different exponents are converted to different indexes.
      Parameters:
      a - univariate GenPolynomial.
      Returns:
      a multivariate GenExteriorPolynomial.
    • resultant

      public C resultant(GenPolynomial<C> A, GenPolynomial<C> B)
      Resultant of two commutative polynaomials.
      Parameters:
      A - GenPolynomial
      B - GenPolynomial
      Returns:
      res(A,B).
    • random

      public GenExteriorPolynomial<C> random(int n)
      Random polynomial. Generates a random polynomial.
      Specified by:
      random in interface ElemFactory<C extends RingElem<C>>
      Parameters:
      n - number of terms.
      Returns:
      a random polynomial.
    • random

      public GenExteriorPolynomial<C> random(int n, Random rnd)
      Random polynomial. Generates a random polynomial with k = 5, l = n, d = 3.
      Specified by:
      random in interface ElemFactory<C extends RingElem<C>>
      Parameters:
      n - number of terms.
      rnd - is a source for random bits.
      Returns:
      a random polynomial.
    • random

      public GenExteriorPolynomial<C> random(int k, int l, int d)
      Generate a random polynomial.
      Parameters:
      k - bitsize of random coefficients.
      l - number of terms.
      d - maximal length of a random word.
      Returns:
      a random polynomial.
    • random

      public GenExteriorPolynomial<C> random(int k, int l, int d, Random rnd)
      Generate a random polynomial.
      Parameters:
      k - bitsize of random coefficients.
      l - number of terms.
      d - maximal length of a random word.
      rnd - is a source for random bits.
      Returns:
      a random polynomial.
    • randomForm

      public GenExteriorPolynomial<C> randomForm(int kl, int l, int k)
      Generate a random k-form polynomial.
      Parameters:
      kl - bitsize of random coefficients.
      l - number of terms.
      k - length of any random word.
      Returns:
      a random k-form polynomial.
    • randomForm

      public GenExteriorPolynomial<C> randomForm(int kl, int l, int k, Random rnd)
      Generate a random k-form polynomial.
      Parameters:
      kl - bitsize of random coefficients.
      l - number of terms.
      k - length of any random word.
      rnd - is a source for random bits.
      Returns:
      a random k-form polynomial.
    • copy

      Copy polynomial c.
      Specified by:
      copy in interface ElemFactory<C extends RingElem<C>>
      Parameters:
      c - polynomial to copy.
      Returns:
      a copy of c.
    • parse

      public GenExteriorPolynomial<C> parse(String s)
      Parse a polynomial with the use of GenExteriorPolynomialTokenizer.
      Specified by:
      parse in interface ElemFactory<C extends RingElem<C>>
      Parameters:
      s - String.
      Returns:
      GenExteriorPolynomial from s.
    • parse

      public GenExteriorPolynomial<C> parse(Reader r)
      Parse a polynomial with the use of GenPolynomialTokenizer.
      Specified by:
      parse in interface ElemFactory<C extends RingElem<C>>
      Parameters:
      r - Reader.
      Returns:
      next GenExteriorPolynomial from r.
    • univariate

      public GenExteriorPolynomial<C> univariate(int i)
      Generate univariate polynomial in a given variable.
      Parameters:
      i - the index of the variable.
      Returns:
      X_i as univariate polynomial.
    • univariateList

      public List<GenExteriorPolynomial<C>> univariateList()
      Generate list of univariate polynomials in all variables.
      Returns:
      List(X_1,...,X_n) a list of univariate polynomials.
    • getGenerators

      public List<GenExteriorPolynomial<C>> getGenerators()
      Get the generating elements excluding the generators for the coefficient ring.
      Returns:
      a list of generating elements for this ring.
    • generators

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