Package edu.jas.poly

Class GenPolynomial<C extends RingElem<C>>

java.lang.Object
edu.jas.poly.GenPolynomial<C>
Type Parameters:
C - coefficient type
All Implemented Interfaces:
AbelianGroupElem<GenPolynomial<C>>, Element<GenPolynomial<C>>, MonoidElem<GenPolynomial<C>>, RingElem<GenPolynomial<C>>, Serializable, Comparable<GenPolynomial<C>>, Iterable<Monomial<C>>
Direct Known Subclasses:
GenSolvablePolynomial

public class GenPolynomial<C extends RingElem<C>> extends Object implements RingElem<GenPolynomial<C>>, Iterable<Monomial<C>>
GenPolynomial generic polynomials implementing RingElem. n-variate ordered polynomials over coefficients C. The variables commute with each other and with the coefficients. For non-commutative coefficients some care is taken to respect the multiplication order. Objects of this class are intended to be immutable. The implementation is based on TreeMap respectively SortedMap from exponents to coefficients. Only the coefficients are modeled with generic types, the exponents are fixed to ExpVector with long entries (@see edu.jas.poly.ExpVector StorUnit). C can also be a non integral domain, e.g. a ModInteger, i.e. it may contain zero divisors, since multiply() does check for zeros. Note: multiply() now checks for wrong method dispatch for GenSolvablePolynomial.
See Also:
  • Field Details

    • ring

      public final GenPolynomialRing<C extends RingElem<C>> ring
      The factory for the polynomial ring.
    • val

      protected final SortedMap<ExpVector,C extends RingElem<C>> val
      The data structure for polynomials.
    • hash

      protected transient int hash
      Stored hash code.
    • blen

      protected transient long blen
      Stored bitLength.
    • logger

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

      private static final boolean debug
  • Constructor Details

    • GenPolynomial

      private GenPolynomial(GenPolynomialRing<C> r, TreeMap<ExpVector,C> t)
      Private constructor for GenPolynomial.
      Parameters:
      r - polynomial ring factory.
      t - TreeMap with correct ordering.
    • GenPolynomial

      public GenPolynomial(GenPolynomialRing<C> r)
      Constructor for zero GenPolynomial.
      Parameters:
      r - polynomial ring factory.
    • GenPolynomial

      public GenPolynomial(GenPolynomialRing<C> r, C c, ExpVector e)
      Constructor for GenPolynomial c * xe.
      Parameters:
      r - polynomial ring factory.
      c - coefficient.
      e - exponent.
    • GenPolynomial

      public GenPolynomial(GenPolynomialRing<C> r, C c)
      Constructor for GenPolynomial c * x0.
      Parameters:
      r - polynomial ring factory.
      c - coefficient.
    • GenPolynomial

      public GenPolynomial(GenPolynomialRing<C> r, ExpVector e)
      Constructor for GenPolynomial xe.
      Parameters:
      r - polynomial ring factory.
      e - exponent.
    • GenPolynomial

      protected GenPolynomial(GenPolynomialRing<C> r, SortedMap<ExpVector,C> v)
      Constructor for GenPolynomial.
      Parameters:
      r - polynomial ring factory.
      v - the SortedMap of some other polynomial.
    • GenPolynomial

      protected GenPolynomial(GenPolynomialRing<C> r, Map<ExpVector,C> v)
      Constructor for GenPolynomial.
      Parameters:
      r - polynomial ring factory.
      v - some Map from ExpVector to coefficients.
  • Method Details

    • factory

      public GenPolynomialRing<C> factory()
      Get the corresponding element factory.
      Specified by:
      factory in interface Element<C extends RingElem<C>>
      Returns:
      factory for this Element.
      See Also:
    • copy

      public GenPolynomial<C> copy()
      Copy this GenPolynomial.
      Specified by:
      copy in interface Element<C extends RingElem<C>>
      Returns:
      copy of this.
    • length

      public int length()
      Length of GenPolynomial.
      Returns:
      number of coefficients of this GenPolynomial.
    • getMap

      public SortedMap<ExpVector,C> getMap()
      ExpVector to coefficient map of GenPolynomial.
      Returns:
      val as unmodifiable SortedMap.
    • doPutToMap

      public void doPutToMap(ExpVector e, C c)
      Put an ExpVector to coefficient entry into the internal map of this GenPolynomial. Note: Do not use this method unless you are constructing a new polynomial. this is modified and breaks the immutability promise of this class.
      Parameters:
      e - exponent.
      c - coefficient.
    • doRemoveFromMap

      public void doRemoveFromMap(ExpVector e, C c)
      Remove an ExpVector to coefficient entry from the internal map of this GenPolynomial. Note: Do not use this method unless you are constructing a new polynomial. this is modified and breaks the immutability promise of this class.
      Parameters:
      e - exponent.
      c - expected coefficient, null for ignore.
    • doPutToMap

      public void doPutToMap(SortedMap<ExpVector,C> vals)
      Put an a sorted map of exponents to coefficients into the internal map of this GenPolynomial. Note: Do not use this method unless you are constructing a new polynomial. this is modified and breaks the immutability promise of this class.
      Parameters:
      vals - sorted map of exponents and coefficients.
    • toString

      public String toString()
      String representation of GenPolynomial.
      Overrides:
      toString in class Object
      See Also:
    • toString

      public String toString(String[] v)
      String representation of GenPolynomial.
      Parameters:
      v - names for variables.
      See Also:
    • toScript

      public String toScript()
      Get a scripting compatible string representation.
      Specified by:
      toScript in interface Element<C extends RingElem<C>>
      Returns:
      script compatible representation for this Element.
      See Also:
    • toScriptFactory

      public String toScriptFactory()
      Get a scripting compatible string representation of the factory.
      Specified by:
      toScriptFactory in interface Element<C extends RingElem<C>>
      Returns:
      script compatible representation for this ElemFactory.
      See Also:
    • isZERO

      public boolean isZERO()
      Is GenPolynomial<C> zero.
      Specified by:
      isZERO in interface AbelianGroupElem<C extends RingElem<C>>
      Returns:
      If this is 0 then true is returned, else false.
      See Also:
    • isONE

      public boolean isONE()
      Is GenPolynomial<C> one.
      Specified by:
      isONE in interface MonoidElem<C extends RingElem<C>>
      Returns:
      If this is 1 then true is returned, else false.
      See Also:
    • isUnit

      public boolean isUnit()
      Is GenPolynomial<C> a unit.
      Specified by:
      isUnit in interface MonoidElem<C extends RingElem<C>>
      Returns:
      If this is a unit then true is returned, else false.
      See Also:
    • isConstant

      public boolean isConstant()
      Is GenPolynomial<C> a constant.
      Returns:
      If this is a constant polynomial then true is returned, else false.
    • isHomogeneous

      public boolean isHomogeneous()
      Is GenPolynomial<C> homogeneous.
      Returns:
      true, if this is homogeneous, else false.
    • equals

      public boolean equals(Object B)
      Comparison with any other object.
      Specified by:
      equals in interface Element<C extends RingElem<C>>
      Overrides:
      equals in class Object
      Parameters:
      B -
      Returns:
      true if this is equal to b, else false.
      See Also:
    • hashCode

      public int hashCode()
      Hash code for this polynomial.
      Specified by:
      hashCode in interface Element<C extends RingElem<C>>
      Overrides:
      hashCode in class Object
      Returns:
      the hashCode.
      See Also:
    • compareTo

      public int compareTo(GenPolynomial<C> b)
      GenPolynomial comparison.
      Specified by:
      compareTo in interface Comparable<C extends RingElem<C>>
      Specified by:
      compareTo in interface Element<C extends RingElem<C>>
      Parameters:
      b - GenPolynomial.
      Returns:
      sign(this-b).
    • signum

      public int signum()
      GenPolynomial signum.
      Specified by:
      signum in interface AbelianGroupElem<C extends RingElem<C>>
      Returns:
      sign(ldcf(this)).
    • numberOfVariables

      public int numberOfVariables()
      Number of variables.
      Returns:
      ring.nvar.
    • leadingMonomial

      public Map.Entry<ExpVector,C> leadingMonomial()
      Leading monomial.
      Returns:
      first map entry.
    • leadingExpVector

      public ExpVector leadingExpVector()
      Leading exponent vector.
      Returns:
      first exponent.
    • trailingExpVector

      public ExpVector trailingExpVector()
      Trailing exponent vector.
      Returns:
      last exponent.
    • leadingBaseCoefficient

      public C leadingBaseCoefficient()
      Leading base coefficient.
      Returns:
      first coefficient.
    • trailingBaseCoefficient

      public C trailingBaseCoefficient()
      Trailing base coefficient.
      Returns:
      coefficient of constant term.
    • coefficient

      public C coefficient(ExpVector e)
      Coefficient.
      Parameters:
      e - exponent.
      Returns:
      coefficient for given exponent.
    • reductum

      public GenPolynomial<C> reductum()
      Reductum.
      Returns:
      this - leading monomial.
    • degree

      public long degree(int i)
      Degree in variable i.
      Returns:
      maximal degree in the variable i.
    • degree

      public long degree()
      Maximal degree.
      Returns:
      maximal degree in any variables.
    • degreeMin

      public long degreeMin()
      Minimal degree. Author: Youssef Elbarbary
      Returns:
      minimal degree in any variables.
    • totalDegree

      public long totalDegree()
      Total degree.
      Returns:
      total degree in any variables.
    • weightDegree

      public long weightDegree()
      Weight degree.
      Returns:
      weight degree in all variables.
    • leadingWeightPolynomial

      public GenPolynomial<C> leadingWeightPolynomial()
      Leading weight polynomial.
      Returns:
      polynomial with terms of maximal weight degree.
    • leadingFacetPolynomial

      public GenPolynomial<C> leadingFacetPolynomial(ExpVector u, ExpVector uv)
      Leading facet normal polynomial.
      Parameters:
      u - leading exponent vector.
      uv - exponent vector of facet normal.
      Returns:
      polynomial with terms of facet normal.
    • isWeightHomogeneous

      public boolean isWeightHomogeneous()
      Is GenPolynomial<C> homogeneous with respect to a weight.
      Returns:
      true, if this is weight homogeneous, else false.
    • degreeVector

      public ExpVector degreeVector()
      Maximal degree vector.
      Returns:
      maximal degree vector of all variables.
    • deltaExpVectors

      public List<ExpVector> deltaExpVectors()
      Delta of exponent vectors.
      Returns:
      list of u-v, where u = lt() and v != u in this.
    • deltaExpVectors

      public List<ExpVector> deltaExpVectors(ExpVector u)
      Delta of exponent vectors.
      Parameters:
      u - marked ExpVector in this.expVectors
      Returns:
      list of u-v, where v != u in this.expVectors.
    • maxNorm

      public C maxNorm()
      GenPolynomial maximum norm.
      Returns:
      ||this|| the maximum of all absolute values of coefficients.
    • sumNorm

      public C sumNorm()
      GenPolynomial sum norm.
      Returns:
      sum of all absolute values of coefficients.
    • squareNorm

      public C squareNorm()
      GenPolynomial square norm.
      Returns:
      the sum all squared values of coefficients.
    • sum

      public GenPolynomial<C> sum(GenPolynomial<C> S)
      GenPolynomial summation.
      Specified by:
      sum in interface AbelianGroupElem<C extends RingElem<C>>
      Parameters:
      S - GenPolynomial.
      Returns:
      this+S.
    • sum

      public GenPolynomial<C> sum(C a, ExpVector e)
      GenPolynomial addition. This method is not very efficient, since this is copied.
      Parameters:
      a - coefficient.
      e - exponent.
      Returns:
      this + a xe.
    • sum

      public GenPolynomial<C> sum(Monomial<C> m)
      GenPolynomial addition. This method is not very efficient, since this is copied.
      Parameters:
      m - monomial.
      Returns:
      this + m.
    • sum

      public GenPolynomial<C> sum(C a)
      GenPolynomial addition. This method is not very efficient, since this is copied.
      Parameters:
      a - coefficient.
      Returns:
      this + a x0.
    • doAddTo

      public void doAddTo(GenPolynomial<C> S)
      GenPolynomial destructive summation.
      Parameters:
      S - GenPolynomial.
    • doAddTo

      public void doAddTo(C a, ExpVector e)
      GenPolynomial destructive summation.
      Parameters:
      a - coefficient.
      e - exponent.
    • doAddTo

      public void doAddTo(C a)
      GenPolynomial destructive summation.
      Parameters:
      a - coefficient.
    • subtract

      public GenPolynomial<C> subtract(GenPolynomial<C> S)
      GenPolynomial subtraction.
      Specified by:
      subtract in interface AbelianGroupElem<C extends RingElem<C>>
      Parameters:
      S - GenPolynomial.
      Returns:
      this-S.
    • subtract

      public GenPolynomial<C> subtract(C a, ExpVector e)
      GenPolynomial subtraction. This method is not very efficient, since this is copied.
      Parameters:
      a - coefficient.
      e - exponent.
      Returns:
      this - a xe.
    • subtract

      public GenPolynomial<C> subtract(Monomial<C> m)
      GenPolynomial subtraction. This method is not very efficient, since this is copied.
      Parameters:
      m - monomial.
      Returns:
      this - m.
    • subtract

      public GenPolynomial<C> subtract(C a)
      GenPolynomial subtract. This method is not very efficient, since this is copied.
      Parameters:
      a - coefficient.
      Returns:
      this + a x0.
    • subtractMultiple

      public GenPolynomial<C> subtractMultiple(C a, GenPolynomial<C> S)
      GenPolynomial subtract a multiple.
      Parameters:
      a - coefficient.
      S - GenPolynomial.
      Returns:
      this - a S.
    • subtractMultiple

      public GenPolynomial<C> subtractMultiple(C a, ExpVector e, GenPolynomial<C> S)
      GenPolynomial subtract a multiple.
      Parameters:
      a - coefficient.
      e - exponent.
      S - GenPolynomial.
      Returns:
      this - a xe S.
    • scaleSubtractMultiple

      public GenPolynomial<C> scaleSubtractMultiple(C b, C a, GenPolynomial<C> S)
      GenPolynomial scale and subtract a multiple.
      Parameters:
      b - scale factor.
      a - coefficient.
      S - GenPolynomial.
      Returns:
      this * b - a S.
    • scaleSubtractMultiple

      public GenPolynomial<C> scaleSubtractMultiple(C b, C a, ExpVector e, GenPolynomial<C> S)
      GenPolynomial scale and subtract a multiple.
      Parameters:
      b - scale factor.
      a - coefficient.
      e - exponent.
      S - GenPolynomial.
      Returns:
      this * b - a xe S.
    • scaleSubtractMultiple

      public GenPolynomial<C> scaleSubtractMultiple(C b, ExpVector g, C a, ExpVector e, GenPolynomial<C> S)
      GenPolynomial scale and subtract a multiple.
      Parameters:
      b - scale factor.
      g - scale exponent.
      a - coefficient.
      e - exponent.
      S - GenPolynomial.
      Returns:
      this * a xg - a xe S.
    • negateAlt

      public GenPolynomial<C> negateAlt()
      GenPolynomial negation, alternative implementation.
      Returns:
      -this.
    • negate

      public GenPolynomial<C> negate()
      GenPolynomial negation.
      Specified by:
      negate in interface AbelianGroupElem<C extends RingElem<C>>
      Returns:
      -this.
    • abs

      public GenPolynomial<C> abs()
      GenPolynomial absolute value, i.e. leadingCoefficient > 0.
      Specified by:
      abs in interface AbelianGroupElem<C extends RingElem<C>>
      Returns:
      abs(this).
    • multiply

      public GenPolynomial<C> multiply(GenPolynomial<C> S)
      GenPolynomial multiplication.
      Specified by:
      multiply in interface MonoidElem<C extends RingElem<C>>
      Parameters:
      S - GenPolynomial.
      Returns:
      this*S.
    • multiply

      public GenPolynomial<C> multiply(C s)
      GenPolynomial multiplication. Product with coefficient ring element.
      Parameters:
      s - coefficient.
      Returns:
      this*s.
    • multiplyLeft

      public GenPolynomial<C> multiplyLeft(C s)
      GenPolynomial left multiplication. Left product with coefficient ring element.
      Parameters:
      s - coefficient.
      Returns:
      s*this.
    • monic

      public GenPolynomial<C> monic()
      GenPolynomial monic, i.e. leadingCoefficient == 1. If leadingCoefficient is not invertible returns this unmodified.
      Returns:
      monic(this).
    • monicRight

      public GenPolynomial<C> monicRight()
      GenPolynomial monic, i.e. leadingCoefficient == 1. If leadingCoefficient is not invertible returns this unmodified.
      Returns:
      monic(this).
    • multiply

      public GenPolynomial<C> multiply(C s, ExpVector e)
      GenPolynomial multiplication. Product with ring element and exponent vector.
      Parameters:
      s - coefficient.
      e - exponent.
      Returns:
      this * s xe.
    • multiply

      public GenPolynomial<C> multiply(ExpVector e)
      GenPolynomial multiplication. Product with exponent vector.
      Parameters:
      e - exponent (!= null).
      Returns:
      this * xe.
    • multiply

      public GenPolynomial<C> multiply(Map.Entry<ExpVector,C> m)
      GenPolynomial multiplication. Product with 'monomial'.
      Parameters:
      m - 'monomial'.
      Returns:
      this * m.
    • divide

      public GenPolynomial<C> divide(C s)
      GenPolynomial division. Division by coefficient ring element. Fails, if exact division is not possible.
      Parameters:
      s - coefficient.
      Returns:
      s**(-1) * this.
    • rightDivideCoeff

      public GenPolynomial<C> rightDivideCoeff(C s)
      GenPolynomial right division. Right division by coefficient ring element. Fails, if exact division is not possible.
      Parameters:
      s - coefficient.
      Returns:
      this * s**(-1).
    • leftDivideCoeff

      public GenPolynomial<C> leftDivideCoeff(C s)
      GenPolynomial left division. Left division by coefficient ring element. Fails, if exact division is not possible.
      Parameters:
      s - coefficient.
      Returns:
      s**(-1) * this.
    • coeffPrimitivePart

      public GenPolynomial<C> coeffPrimitivePart()
      GenPolynomial coefficient primitive part. Division by gcd of coefficients.
      Returns:
      this/gcd(coeff(this)).
    • quotientRemainder

      public GenPolynomial<C>[] quotientRemainder(GenPolynomial<C> S)
      GenPolynomial division with remainder. Fails, if exact division by leading base coefficient is not possible. Meaningful only for univariate polynomials over fields, but works in any case.
      Specified by:
      quotientRemainder in interface MonoidElem<C extends RingElem<C>>
      Parameters:
      S - nonzero GenPolynomial with invertible leading coefficient.
      Returns:
      [ quotient , remainder ] with this = quotient * S + remainder and deg(remainder) < deg(S) or remainder = 0.
      See Also:
    • divide

      public GenPolynomial<C> divide(GenPolynomial<C> S)
      GenPolynomial division. Fails, if exact division by leading base coefficient is not possible. Meaningful only for univariate polynomials over fields, but works in any case.
      Specified by:
      divide in interface MonoidElem<C extends RingElem<C>>
      Parameters:
      S - nonzero GenPolynomial with invertible leading coefficient.
      Returns:
      quotient with this = quotient * S + remainder.
      See Also:
    • remainder

      public GenPolynomial<C> remainder(GenPolynomial<C> S)
      GenPolynomial remainder. Fails, if exact division by leading base coefficient is not possible. Meaningful only for univariate polynomials over fields, but works in any case.
      Specified by:
      remainder in interface MonoidElem<C extends RingElem<C>>
      Parameters:
      S - nonzero GenPolynomial with invertible leading coefficient.
      Returns:
      remainder with this = quotient * S + remainder.
      See Also:
    • gcd

      public GenPolynomial<C> gcd(GenPolynomial<C> S)
      GenPolynomial greatest common divisor. Only for univariate polynomials over fields.
      Specified by:
      gcd in interface RingElem<C extends RingElem<C>>
      Parameters:
      S - GenPolynomial.
      Returns:
      gcd(this,S).
    • egcd

      public GenPolynomial<C>[] egcd(GenPolynomial<C> S)
      GenPolynomial extended greatest common divisor. Only for univariate polynomials over fields.
      Specified by:
      egcd in interface RingElem<C extends RingElem<C>>
      Parameters:
      S - GenPolynomial.
      Returns:
      [ gcd(this,S), a, b ] with a*this + b*S = gcd(this,S).
    • hegcd

      public GenPolynomial<C>[] hegcd(GenPolynomial<C> S)
      GenPolynomial half extended greatest common divisor. Only for univariate polynomials over fields.
      Parameters:
      S - GenPolynomial.
      Returns:
      [ gcd(this,S), a ] with a*this + b*S = gcd(this,S).
    • inverse

      public GenPolynomial<C> inverse()
      GenPolynomial inverse. Required by RingElem. Throws not invertible exception.
      Specified by:
      inverse in interface MonoidElem<C extends RingElem<C>>
      Returns:
      x with this * x = 1, if it exists.
    • modInverse

      public GenPolynomial<C> modInverse(GenPolynomial<C> m)
      GenPolynomial modular inverse. Only for univariate polynomials over fields.
      Parameters:
      m - GenPolynomial.
      Returns:
      a with with a*this = 1 mod m.
    • rightGcd

      public GenPolynomial<C> rightGcd(GenPolynomial<C> S)
      GenPolynomial greatest common divisor. Only for univariate polynomials over fields.
      Specified by:
      rightGcd in interface RingElem<C extends RingElem<C>>
      Parameters:
      S - GenPolynomial.
      Returns:
      right gcd(this,S).
    • extend

      public GenPolynomial<C> extend(GenPolynomialRing<C> pfac, int j, long k)
      Extend variables. Used e.g. in module embedding. Extend all ExpVectors by i elements and multiply by x_j^k.
      Parameters:
      pfac - extended polynomial ring factory (by i variables).
      j - index of variable to be used for multiplication.
      k - exponent for x_j.
      Returns:
      extended polynomial.
    • extendLower

      public GenPolynomial<C> extendLower(GenPolynomialRing<C> pfac, int j, long k)
      Extend lower variables. Used e.g. in module embedding. Extend all ExpVectors by i lower elements and multiply by x_j^k.
      Parameters:
      pfac - extended polynomial ring factory (by i variables).
      j - index of variable to be used for multiplication.
      k - exponent for x_j.
      Returns:
      extended polynomial.
    • contract

      public Map<ExpVector,GenPolynomial<C>> contract(GenPolynomialRing<C> pfac)
      Contract variables. Used e.g. in module embedding. Remove i elements of each ExpVector.
      Parameters:
      pfac - contracted polynomial ring factory (by i variables).
      Returns:
      Map of exponents and contracted polynomials. Note: could return SortedMap
    • contractCoeff

      public GenPolynomial<C> contractCoeff(GenPolynomialRing<C> pfac)
      Contract variables to coefficient polynomial. Remove i elements of each ExpVector, removed elements must be zero.
      Parameters:
      pfac - contracted polynomial ring factory (by i variables).
      Returns:
      contracted coefficient polynomial.
    • extendUnivariate

      public GenPolynomial<C> extendUnivariate(GenPolynomialRing<C> pfac, int i)
      Extend univariate to multivariate polynomial. This is an univariate polynomial in variable i of the polynomial ring, it is extended to the given polynomial ring.
      Parameters:
      pfac - extended polynomial ring factory.
      i - index of the variable of this polynomial in pfac.
      Returns:
      extended multivariate polynomial.
    • homogenize

      public GenPolynomial<C> homogenize(GenPolynomialRing<C> pfac)
      Make homogeneous.
      Parameters:
      pfac - extended polynomial ring factory (by 1 variable).
      Returns:
      homogeneous polynomial.
    • deHomogenize

      public GenPolynomial<C> deHomogenize(GenPolynomialRing<C> pfac)
      Dehomogenize.
      Parameters:
      pfac - contracted polynomial ring factory (by 1 variable).
      Returns:
      in homogeneous polynomial.
    • reverse

      public GenPolynomial<C> reverse(GenPolynomialRing<C> oring)
      Reverse variables. Used e.g. in opposite rings.
      Returns:
      polynomial with reversed variables.
    • inflate

      public GenPolynomial<C> inflate(long e)
      GenPolynomial inflate. Only for univariate polynomials over fields.
      Parameters:
      e - exponent.
      Returns:
      this(x**e)
    • coefficientIterator

      public Iterator<C> coefficientIterator()
      Iterator over coefficients.
      Returns:
      val.values().iterator().
    • exponentIterator

      public Iterator<ExpVector> exponentIterator()
      Iterator over exponents.
      Returns:
      val.keySet().iterator().
    • iterator

      public Iterator<Monomial<C>> iterator()
      Iterator over monomials.
      Specified by:
      iterator in interface Iterable<C extends RingElem<C>>
      Returns:
      a PolyIterator.
    • spliterator

      public Spliterator<Monomial<C>> spliterator()
      Spliterator over monomials.
      Specified by:
      spliterator in interface Iterable<C extends RingElem<C>>
      Returns:
      a PolySpliterator.
    • map

      public GenPolynomial<C> map(UnaryFunctor<? super C,C> f)
      Map a unary function to the coefficients.
      Parameters:
      f - evaluation functor.
      Returns:
      new polynomial with coefficients f(this.coefficients).
    • mapWrong

      GenPolynomial<C> mapWrong(UnaryFunctor<? super C,C> f)
    • mapOnStream

      public GenPolynomial<C> mapOnStream(Function<? super Map.Entry<ExpVector,C>,? extends Map.Entry<ExpVector,C>> f)
      Map a function to the polynomial stream entries.
      Parameters:
      f - evaluation functor.
      Returns:
      new polynomial with f(this.entries).
    • mapOnStream

      public GenPolynomial<C> mapOnStream(Function<? super Map.Entry<ExpVector,C>,? extends Map.Entry<ExpVector,C>> f, boolean parallel)
      Map a function to the polynomial stream entries.
      Parameters:
      f - evaluation functor.
      Returns:
      new polynomial with f(this.entries).
    • bitLength

      public long bitLength()
      Returns the number of bits in the representation of this polynomial.
      Returns:
      number of bits in the representation of this polynomial, including sign bits.
    • readObject

      private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException
      Throws:
      IOException
      ClassNotFoundException