Class PolyUtilApp<C extends RingElem<C>>

java.lang.Object
edu.jas.application.PolyUtilApp<C>
Type Parameters:
C - coefficient type

public class PolyUtilApp<C extends RingElem<C>> extends Object
Polynomial utilities for applications, for example conversion ExpVector to Product or zero dimensional ideal root computation.
  • Field Details

    • logger

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

      private static final boolean debug
  • Constructor Details

    • PolyUtilApp

      public PolyUtilApp()
  • Method Details

    • toProductRes

      public static <C extends GcdRingElem<C>> List<GenPolynomial<Product<Residue<C>>>> toProductRes(GenPolynomialRing<Product<Residue<C>>> pfac, List<GenPolynomial<GenPolynomial<C>>> L)
      Product representation.
      Type Parameters:
      C - coefficient type.
      Parameters:
      pfac - polynomial ring factory.
      L - list of polynomials to be represented.
      Returns:
      Product representation of L in the polynomial ring pfac.
    • toProductRes

      public static <C extends GcdRingElem<C>> GenPolynomial<Product<Residue<C>>> toProductRes(GenPolynomialRing<Product<Residue<C>>> pfac, GenPolynomial<GenPolynomial<C>> A)
      Product representation.
      Type Parameters:
      C - coefficient type.
      Parameters:
      pfac - polynomial ring factory.
      A - polynomial to be represented.
      Returns:
      Product representation of A in the polynomial ring pfac.
    • toProductRes

      public static <C extends GcdRingElem<C>> Product<Residue<C>> toProductRes(ProductRing<Residue<C>> pfac, GenPolynomial<C> c)
      Product representation.
      Type Parameters:
      C - coefficient type.
      Parameters:
      pfac - product ring factory.
      c - coefficient to be represented.
      Returns:
      Product representation of c in the ring pfac.
    • toProductRes

      public static <C extends GcdRingElem<C>> List<GenPolynomial<Product<Residue<C>>>> toProductRes(List<ColoredSystem<C>> CS)
      Product residue representation.
      Type Parameters:
      C - coefficient type.
      Parameters:
      CS - list of ColoredSystems from comprehensive GB system.
      Returns:
      Product residue representation of CS.
    • toResidue

      public static <C extends GcdRingElem<C>> List<GenPolynomial<Residue<C>>> toResidue(GenPolynomialRing<Residue<C>> pfac, List<GenPolynomial<GenPolynomial<C>>> L)
      Residue coefficient representation.
      Parameters:
      pfac - polynomial ring factory.
      L - list of polynomials to be represented.
      Returns:
      Representation of L in the polynomial ring pfac.
    • toResidue

      public static <C extends GcdRingElem<C>> GenPolynomial<Residue<C>> toResidue(GenPolynomialRing<Residue<C>> pfac, GenPolynomial<GenPolynomial<C>> A)
      Residue coefficient representation.
      Parameters:
      pfac - polynomial ring factory.
      A - polynomial to be represented.
      Returns:
      Representation of A in the polynomial ring pfac.
    • productSlice

      public static <C extends GcdRingElem<C>> Map<Ideal<C>,PolynomialList<GenPolynomial<C>>> productSlice(PolynomialList<Product<Residue<C>>> L)
      Product slice.
      Type Parameters:
      C - coefficient type.
      Parameters:
      L - list of polynomials with product coefficients.
      Returns:
      Slices representation of L.
    • productSlice

      public static <C extends GcdRingElem<C>> PolynomialList<GenPolynomial<C>> productSlice(PolynomialList<Product<Residue<C>>> L, int i)
      Product slice at i.
      Type Parameters:
      C - coefficient type.
      Parameters:
      L - list of polynomials with product coefficients.
      i - index of slice.
      Returns:
      Slice of of L at i.
    • fromProduct

      public static <C extends GcdRingElem<C>> List<GenPolynomial<GenPolynomial<C>>> fromProduct(GenPolynomialRing<GenPolynomial<C>> pfac, List<GenPolynomial<Product<Residue<C>>>> L, int i)
      From product representation.
      Type Parameters:
      C - coefficient type.
      Parameters:
      pfac - polynomial ring factory.
      L - list of polynomials to be converted from product representation.
      i - index of product representation to be taken.
      Returns:
      Representation of i-slice of L in the polynomial ring pfac.
    • fromProduct

      public static <C extends GcdRingElem<C>> GenPolynomial<GenPolynomial<C>> fromProduct(GenPolynomialRing<GenPolynomial<C>> pfac, GenPolynomial<Product<Residue<C>>> P, int i)
      From product representation.
      Type Parameters:
      C - coefficient type.
      Parameters:
      pfac - polynomial ring factory.
      P - polynomial to be converted from product representation.
      i - index of product representation to be taken.
      Returns:
      Representation of i-slice of P in the polynomial ring pfac.
    • productSliceToString

      public static <C extends GcdRingElem<C>> String productSliceToString(Map<Ideal<C>,PolynomialList<GenPolynomial<C>>> L)
      Product slice to String.
      Type Parameters:
      C - coefficient type.
      Parameters:
      L - list of polynomials with to be represented.
      Returns:
      Product representation of L in the polynomial ring pfac.
    • productToString

      public static <C extends GcdRingElem<C>> String productToString(PolynomialList<Product<Residue<C>>> L)
      Product slice to String.
      Type Parameters:
      C - coefficient type.
      Parameters:
      L - list of polynomials with product coefficients.
      Returns:
      string representation of slices of L.
    • complexRootTuples

      public static <D extends GcdRingElem<D> & Rational> List<List<Complex<BigDecimal>>> complexRootTuples(Ideal<D> I, BigRational eps)
      Construct superset of complex roots for zero dimensional ideal(G).
      Parameters:
      I - zero dimensional ideal.
      eps - desired precision.
      Returns:
      list of coordinates of complex roots for ideal(G)
    • complexRoots

      public static <D extends GcdRingElem<D> & Rational> List<List<Complex<BigDecimal>>> complexRoots(Ideal<D> I, List<GenPolynomial<D>> univs, BigRational eps)
      Construct superset of complex roots for zero dimensional ideal(G).
      Parameters:
      I - zero dimensional ideal.
      univs - list of univariate polynomials.
      eps - desired precision.
      Returns:
      list of coordinates of complex roots for ideal(G)
    • complexRootTuples

      public static <D extends GcdRingElem<D> & Rational> List<List<Complex<BigDecimal>>> complexRootTuples(List<IdealWithUniv<D>> Il, BigRational eps)
      Construct superset of complex roots for zero dimensional ideal(G).
      Parameters:
      Il - list of zero dimensional ideals with univariate polynomials.
      eps - desired precision.
      Returns:
      list of coordinates of complex roots for ideal(cap_i(G_i))
    • complexRoots

      public static <D extends GcdRingElem<D> & Rational> List<IdealWithComplexRoots<D>> complexRoots(List<IdealWithUniv<D>> Il, BigRational eps)
      Construct superset of complex roots for zero dimensional ideal(G).
      Parameters:
      Il - list of zero dimensional ideals with univariate polynomials.
      eps - desired precision.
      Returns:
      list of ideals with coordinates of complex roots for ideal(cap_i(G_i))
    • complexRoots

      public static <D extends GcdRingElem<D> & Rational> List<IdealWithComplexRoots<D>> complexRoots(Ideal<D> G, BigRational eps)
      Construct superset of complex roots for zero dimensional ideal(G).
      Parameters:
      G - list of polynomials of a of zero dimensional ideal.
      eps - desired precision.
      Returns:
      list of ideals with coordinates of complex roots for ideal(G)
    • realRootTuples

      public static <D extends GcdRingElem<D> & Rational> List<List<BigDecimal>> realRootTuples(Ideal<D> I, BigRational eps)
      Construct superset of real roots for zero dimensional ideal(G).
      Parameters:
      I - zero dimensional ideal.
      eps - desired precision.
      Returns:
      list of coordinates of real roots for ideal(G)
    • realRoots

      public static <D extends GcdRingElem<D> & Rational> List<List<BigDecimal>> realRoots(Ideal<D> I, List<GenPolynomial<D>> univs, BigRational eps)
      Construct superset of real roots for zero dimensional ideal(G).
      Parameters:
      I - zero dimensional ideal.
      univs - list of univariate polynomials.
      eps - desired precision.
      Returns:
      list of coordinates of real roots for ideal(G)
    • realRootTuples

      public static <D extends GcdRingElem<D> & Rational> List<List<BigDecimal>> realRootTuples(List<IdealWithUniv<D>> Il, BigRational eps)
      Construct superset of real roots for zero dimensional ideal(G).
      Parameters:
      Il - list of zero dimensional ideals with univariate polynomials.
      eps - desired precision.
      Returns:
      list of coordinates of real roots for ideal(cap_i(G_i))
    • realRoots

      public static <D extends GcdRingElem<D> & Rational> List<IdealWithRealRoots<D>> realRoots(List<IdealWithUniv<D>> Il, BigRational eps)
      Construct superset of real roots for zero dimensional ideal(G).
      Parameters:
      Il - list of zero dimensional ideals with univariate polynomials.
      eps - desired precision.
      Returns:
      list of ideals with coordinates of real roots for ideal(cap_i(G_i))
    • realRoots

      public static <D extends GcdRingElem<D> & Rational> List<IdealWithRealRoots<D>> realRoots(Ideal<D> G, BigRational eps)
      Construct superset of real roots for zero dimensional ideal(G).
      Parameters:
      G - list of polynomials of a of zero dimensional ideal.
      eps - desired precision.
      Returns:
      list of ideals with coordinates of real roots for ideal(G)
    • isRealRoots

      public static boolean isRealRoots(List<GenPolynomial<BigDecimal>> L, List<List<BigDecimal>> roots, BigDecimal eps)
      Test for real roots of zero dimensional ideal(L).
      Parameters:
      L - list of polynomials.
      roots - list of real roots for ideal(G).
      eps - desired precision.
      Returns:
      true if root is a list of coordinates of real roots for ideal(L)
    • isComplexRoots

      public static boolean isComplexRoots(List<GenPolynomial<Complex<BigDecimal>>> L, List<List<Complex<BigDecimal>>> roots, BigDecimal eps)
      Test for complex roots of zero dimensional ideal(L).
      Parameters:
      L - list of polynomials.
      roots - list of complex roots for ideal(L).
      eps - desired precision.
      Returns:
      true if root is a list of coordinates of complex roots for ideal(L)
    • realAlgebraicRoots

      public static <D extends GcdRingElem<D> & Rational> IdealWithRealAlgebraicRoots<D> realAlgebraicRoots(IdealWithUniv<D> I)
      Construct real roots for zero dimensional ideal(G).
      Parameters:
      I - zero dimensional ideal with univariate irreducible polynomials and bi-variate polynomials.
      Returns:
      real algebraic roots for ideal(G)
    • realAlgebraicRoots

      public static <D extends GcdRingElem<D> & Rational> List<IdealWithRealAlgebraicRoots<D>> realAlgebraicRoots(List<IdealWithUniv<D>> I)
      Construct real roots for zero dimensional ideal(G).
      Parameters:
      I - list of zero dimensional ideal with univariate irreducible polynomials and bi-variate polynomials.
      Returns:
      list of real algebraic roots for all ideal(I_i)
    • complexAlgebraicRoots

      public static <D extends GcdRingElem<D> & Rational> IdealWithComplexAlgebraicRoots<D> complexAlgebraicRoots(IdealWithUniv<D> I)
      Construct complex roots for zero dimensional ideal(G).
      Parameters:
      I - zero dimensional ideal with univariate irreducible polynomials and bi-variate polynomials.
      Returns:
      complex algebraic roots for ideal(G) Note: not jet completed in all cases.
    • toString

      public static <D extends GcdRingElem<D> & Rational> String toString(Complex<RealAlgebraicNumber<D>> c)
      String representation of a deximal approximation of a complex number.
      Parameters:
      c - compelx number.
      Returns:
      String representation of c
    • toString1

      public static <D extends GcdRingElem<D> & Rational> String toString1(Complex<D> c)
      String representation of a deximal approximation of a complex number.
      Parameters:
      c - compelx number.
      Returns:
      String representation of c
    • complexAlgebraicRoots

      public static <D extends GcdRingElem<D> & Rational> List<IdealWithComplexAlgebraicRoots<D>> complexAlgebraicRoots(List<IdealWithUniv<D>> I)
      Construct complex roots for zero dimensional ideal(G).
      Parameters:
      I - list of zero dimensional ideal with univariate irreducible polynomials and bi-variate polynomials.
      Returns:
      list of complex algebraic roots for ideal(G)
    • complexAlgebraicRoots

      public static <D extends GcdRingElem<D> & Rational> List<IdealWithComplexAlgebraicRoots<D>> complexAlgebraicRoots(Ideal<D> I)
      Construct exact set of complex roots for zero dimensional ideal(G).
      Parameters:
      I - zero dimensional ideal.
      Returns:
      list of coordinates of complex roots for ideal(G)
    • convert

      static <C extends RingElem<C>> GenPolynomial<C> convert(GenPolynomialRing<C> fac, GenPolynomial<C> p)
    • convertComplex

      static <C extends RingElem<C>> GenPolynomial<Complex<C>> convertComplex(GenPolynomialRing<Complex<C>> fac, GenPolynomial<C> p)
    • convertComplexComplex

      static <C extends RingElem<C>> GenPolynomial<Complex<C>> convertComplexComplex(GenPolynomialRing<Complex<C>> fac, GenPolynomial<Complex<C>> p)
    • realAlgebraicRoots

      public static <D extends GcdRingElem<D> & Rational> List<IdealWithRealAlgebraicRoots<D>> realAlgebraicRoots(Ideal<D> I)
      Construct exact set of real roots for zero dimensional ideal(G).
      Parameters:
      I - zero dimensional ideal.
      Returns:
      list of coordinates of real roots for ideal(G)
    • primitiveElement

      public static <C extends GcdRingElem<C>> PrimitiveElement<C> primitiveElement(AlgebraicNumberRing<C> a, AlgebraicNumberRing<C> b)
      Construct primitive element for double field extension.
      Parameters:
      a - algebraic number ring with squarefree monic minimal polynomial
      b - algebraic number ring with squarefree monic minimal polynomial
      Returns:
      primitive element container with algebraic number ring c, with Q(c) = Q(a,b)
    • convertToPrimitiveElem

      public static <C extends GcdRingElem<C>> AlgebraicNumber<C> convertToPrimitiveElem(AlgebraicNumberRing<C> cfac, AlgebraicNumber<C> A, AlgebraicNumber<C> a)
      Convert to primitive element ring.
      Parameters:
      cfac - primitive element ring.
      A - algebraic number representing the generating element of a in the new ring.
      a - algebraic number to convert.
      Returns:
      a converted to the primitive element ring
    • convertToPrimitiveElem

      public static <C extends GcdRingElem<C>> GenPolynomial<AlgebraicNumber<C>> convertToPrimitiveElem(AlgebraicNumberRing<C> cfac, AlgebraicNumber<C> A, GenPolynomial<AlgebraicNumber<C>> a)
      Convert coefficients to primitive element ring.
      Parameters:
      cfac - primitive element ring.
      A - algebraic number representing the generating element of a in the new ring.
      a - polynomial with coefficients algebraic number to convert.
      Returns:
      a with coefficients converted to the primitive element ring
    • convertToPrimitiveElem

      public static <C extends GcdRingElem<C>> AlgebraicNumber<C> convertToPrimitiveElem(AlgebraicNumberRing<C> cfac, AlgebraicNumber<C> A, AlgebraicNumber<C> B, AlgebraicNumber<AlgebraicNumber<C>> a)
      Convert to primitive element ring.
      Parameters:
      cfac - primitive element ring.
      A - algebraic number representing the generating element of a in the new ring.
      a - recursive algebraic number to convert.
      Returns:
      a converted to the primitive element ring
    • primitiveElement

      public static <C extends GcdRingElem<C>> PrimitiveElement<C> primitiveElement(AlgebraicNumberRing<AlgebraicNumber<C>> b)
      Construct primitive element for double field extension.
      Parameters:
      b - algebraic number ring with squarefree monic minimal polynomial over Q(a)
      Returns:
      primitive element container with algebraic number ring c, with Q(c) = Q(a)(b)
    • convertToPrimitiveElem

      public static <C extends GcdRingElem<C>> GenPolynomial<AlgebraicNumber<C>> convertToPrimitiveElem(AlgebraicNumberRing<C> cfac, AlgebraicNumber<C> A, AlgebraicNumber<C> B, GenPolynomial<AlgebraicNumber<AlgebraicNumber<C>>> a)
      Convert to primitive element ring.
      Parameters:
      cfac - primitive element ring.
      A - algebraic number representing the generating element of a in the new ring.
      a - polynomial with recursive algebraic number coefficients to convert.
      Returns:
      a converted to the primitive element ring
    • realAlgFromRealCoefficients

      public static <C extends GcdRingElem<C> & Rational> GenPolynomial<RealAlgebraicNumber<C>> realAlgFromRealCoefficients(GenPolynomialRing<RealAlgebraicNumber<C>> afac, GenPolynomial<RealAlgebraicNumber<C>> A)
      Convert to RealAlgebraicNumber coefficients. Represent as polynomial with RealAlgebraicNumber coefficients from package edu.jas.root.
      Parameters:
      afac - result polynomial factory.
      A - polynomial with RealAlgebraicNumber<C> coefficients to be converted.
      Returns:
      polynomial with RealAlgebraicNumber<C> coefficients.
    • realFromRealAlgCoefficients

      public static <C extends GcdRingElem<C> & Rational> GenPolynomial<RealAlgebraicNumber<C>> realFromRealAlgCoefficients(GenPolynomialRing<RealAlgebraicNumber<C>> rfac, GenPolynomial<RealAlgebraicNumber<C>> A)
      Convert to RealAlgebraicNumber coefficients. Represent as polynomial with RealAlgebraicNumber coefficients from package
       edu.jas.application
       
      .
      Parameters:
      rfac - result polynomial factory.
      A - polynomial with RealAlgebraicNumber<C> coefficients to be converted.
      Returns:
      polynomial with RealAlgebraicNumber<C> coefficients.
    • convertToComplexRealCoefficients

      public static <C extends GcdRingElem<C> & Rational> GenPolynomial<Complex<RealAlgebraicNumber<C>>> convertToComplexRealCoefficients(GenPolynomialRing<Complex<RealAlgebraicNumber<C>>> pfac, GenPolynomial<Complex<C>> A)
      Convert to Complex<RealAlgebraicNumber> coefficients. Represent as polynomial with Complex<RealAlgebraicNumber> coefficients, C is e.g. BigRational.
      Parameters:
      pfac - result polynomial factory.
      A - polynomial with Complex coefficients to be converted.
      Returns:
      polynomial with Complex<RealAlgebraicNumber> coefficients.
    • evaluateToComplexRealCoefficients

      public static <C extends GcdRingElem<C> & Rational> GenPolynomial<Complex<RealAlgebraicNumber<C>>> evaluateToComplexRealCoefficients(GenPolynomialRing<Complex<RealAlgebraicNumber<C>>> pfac, GenPolynomial<GenPolynomial<Complex<C>>> A, Complex<RealAlgebraicNumber<C>> r)
      Evaluate to Complex<RealAlgebraicNumber> coefficients. Represent as polynomial with Complex<RealAlgebraicNumber> coefficients, C is e.g. BigRational.
      Parameters:
      pfac - result polynomial factory.
      A - = A(x,Y) a recursive polynomial with GenPolynomial<Complex> coefficients to be converted.
      r - Complex<RealAlgebraicNumber> to be evaluated at.
      Returns:
      A(r,Y), a polynomial with Complex<RealAlgebraicNumber> coefficients.