Package edu.jas.poly

Class GenPolynomialRing<C extends RingElem<C>>

    • Field Detail

      • nvar

        public final int nvar
        The number of variables.
      • partial

        protected boolean partial
        True for partially reversed variables.
      • vars

        protected java.lang.String[] vars
        The names of the variables. This value can be modified.
      • evzero

        public final ExpVector evzero
        The constant exponent vector 0 for this ring.
      • random

        protected static final java.util.Random random
        A default random sequence generator.
      • isField

        protected int isField
        Indicator if this ring is a field.
    • Constructor Detail

      • GenPolynomialRing

        public GenPolynomialRing​(RingFactory<C> cf,
                                 int n)
        The constructor creates a polynomial factory object with the default term order.
        Parameters:
        cf - factory for coefficients of type C.
        n - number of variables.
      • GenPolynomialRing

        public GenPolynomialRing​(RingFactory<C> cf,
                                 int n,
                                 TermOrder t)
        The constructor creates a polynomial factory object.
        Parameters:
        cf - factory for coefficients of type C.
        n - number of variables.
        t - a term order.
      • GenPolynomialRing

        public GenPolynomialRing​(RingFactory<C> cf,
                                 java.lang.String[] v)
        The constructor creates a polynomial factory object.
        Parameters:
        cf - factory for coefficients of type C.
        v - names for the variables.
      • GenPolynomialRing

        public GenPolynomialRing​(RingFactory<C> cf,
                                 int n,
                                 java.lang.String[] v)
        The constructor creates a polynomial factory object.
        Parameters:
        cf - factory for coefficients of type C.
        n - number of variables.
        v - names for the variables.
      • GenPolynomialRing

        public GenPolynomialRing​(RingFactory<C> cf,
                                 TermOrder t,
                                 java.lang.String[] v)
        The constructor creates a polynomial factory object.
        Parameters:
        cf - factory for coefficients of type C.
        t - a term order.
        v - names for the variables.
      • GenPolynomialRing

        public GenPolynomialRing​(RingFactory<C> cf,
                                 java.lang.String[] v,
                                 TermOrder t)
        The constructor creates a polynomial factory object.
        Parameters:
        cf - factory for coefficients of type C.
        v - names for the variables.
        t - a term order.
      • GenPolynomialRing

        public GenPolynomialRing​(RingFactory<C> cf,
                                 int n,
                                 TermOrder t,
                                 java.lang.String[] v)
        The constructor creates a polynomial factory object.
        Parameters:
        cf - factory for coefficients of type C.
        n - number of variables.
        t - a term order.
        v - names for the variables.
      • GenPolynomialRing

        public GenPolynomialRing​(RingFactory<C> cf,
                                 GenPolynomialRing o)
        The constructor creates a polynomial factory object with the the same term order, number of variables and variable names as the given polynomial factory, only the coefficient factories differ.
        Parameters:
        cf - factory for coefficients of type C.
        o - other polynomial ring.
      • GenPolynomialRing

        public GenPolynomialRing​(GenPolynomialRing<C> o,
                                 TermOrder to)
        The constructor creates a polynomial factory object with the the same coefficient factory, number of variables and variable names as the given polynomial factory, only the term order differs.
        Parameters:
        to - term order.
        o - other polynomial ring.
    • Method Detail

      • toString

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

        public java.lang.String toScript​(ExpVector e)
        Get a scripting compatible string representation of an ExpVector of this ring.
        Parameters:
        e - exponent vector
        Returns:
        script compatible representation for the ExpVector.
      • equals

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

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

        public int getCreations()
        Get the number of polynomial creations.
        Returns:
        creations.
      • getVars

        public java.lang.String[] getVars()
        Get the variable names.
        Returns:
        vars.
      • setVars

        public java.lang.String[] setVars​(java.lang.String[] v)
        Set the variable names.
        Returns:
        old vars.
      • varsToString

        public java.lang.String varsToString()
        Get a String representation of the variable names.
        Returns:
        names separated by commas.
      • 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.
      • valueOf

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

        public GenPolynomial<CvalueOf​(ExpVector e)
        Get a GenPolynomial<C> element from an exponent vector.
        Parameters:
        e - exponent vector.
        Returns:
        a GenPolynomial<C>.
      • valueOf

        public java.util.List<GenPolynomial<C>> valueOf​(java.lang.Iterable<ExpVector> E)
        Get a GenPolynomial<C> element from a list of exponent vectors.
        Parameters:
        E - list of exponent vector.
        Returns:
        a GenPolynomial<C>.
      • valueOf

        public GenPolynomial<CvalueOf​(C a,
                                        ExpVector e)
        Get a GenPolynomial<C> element from a coefficient and an exponent vector.
        Parameters:
        a - coefficient.
        e - exponent vector.
        Returns:
        a GenPolynomial<C>.
      • valueOf

        public GenPolynomial<CvalueOf​(Monomial<C> m)
        Get a GenPolynomial<C> element from a monomial.
        Parameters:
        m - monomial.
        Returns:
        a GenPolynomial<C>.
      • fromVector

        public GenPolynomial<CfromVector​(GenVector<C> a)
        Get a GenPolynomial<C> from a GenVector<C>.
        Parameters:
        a - GenVector<C>.
        Returns:
        a GenPolynomial<C>.
      • random

        public GenPolynomial<Crandom​(int n)
        Random polynomial. Generates a random polynomial with k = 5, l = n, d = (nvar == 1) ? n : 3, q = (nvar == 1) ? 0.7 : 0.3.
        Specified by:
        random in interface ElemFactory<C extends RingElem<C>>
        Parameters:
        n - number of terms.
        Returns:
        a random polynomial.
      • random

        public GenPolynomial<Crandom​(int n,
                                       java.util.Random rnd)
        Random polynomial. Generates a random polynomial with k = 5, l = n, d = n, q = (nvar == 1) ? 0.5 : 0.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 GenPolynomial<Crandom​(int k,
                                       int l,
                                       int d,
                                       float q)
        Generate a random polynomial.
        Parameters:
        k - bitsize of random coefficients.
        l - number of terms.
        d - maximal degree in each variable.
        q - density of nozero exponents.
        Returns:
        a random polynomial.
      • random

        public GenPolynomial<Crandom​(int k,
                                       int l,
                                       int d,
                                       float q,
                                       java.util.Random rnd)
        Generate a random polynomial.
        Parameters:
        k - bitsize of random coefficients.
        l - number of terms.
        d - maximal degree in each variable.
        q - density of nozero exponents.
        rnd - is a source for random bits.
        Returns:
        a random polynomial.
      • copy

        public java.util.List<GenPolynomial<C>> copy​(java.util.List<GenPolynomial<C>> L)
        Copy polynomial list.
        Parameters:
        L - polynomial list
        Returns:
        a copy of L in this ring.
      • parse

        public GenPolynomial<Cparse​(java.lang.String s)
        Parse a polynomial with the use of GenPolynomialTokenizer.
        Specified by:
        parse in interface ElemFactory<C extends RingElem<C>>
        Parameters:
        s - String.
        Returns:
        GenPolynomial from s.
      • parse

        public GenPolynomial<Cparse​(java.io.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 GenPolynomial from r.
      • univariate

        public GenPolynomial<Cunivariate​(java.lang.String x)
        Generate univariate polynomial in a given variable with given exponent.
        Parameters:
        x - the name of a variable.
        Returns:
        x as univariate polynomial.
      • univariate

        public GenPolynomial<Cunivariate​(java.lang.String x,
                                           long e)
        Generate univariate polynomial in a given variable with given exponent.
        Parameters:
        x - the name of the variable.
        e - the exponent of the variable.
        Returns:
        x^e as univariate polynomial.
      • univariate

        public GenPolynomial<Cunivariate​(int i)
        Generate univariate polynomial in a given variable.
        Parameters:
        i - the index of the variable.
        Returns:
        X_i as univariate polynomial.
      • univariate

        public GenPolynomial<Cunivariate​(int i,
                                           long e)
        Generate univariate polynomial in a given variable with given exponent.
        Parameters:
        i - the index of the variable.
        e - the exponent of the variable.
        Returns:
        X_i^e as univariate polynomial.
      • univariate

        public GenPolynomial<Cunivariate​(int modv,
                                           int i,
                                           long e)
        Generate univariate polynomial in a given variable with given exponent.
        Parameters:
        modv - number of module variables.
        i - the index of the variable.
        e - the exponent of the variable.
        Returns:
        X_i^e as univariate polynomial.
      • getGenerators

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

        public java.util.List<GenPolynomial<C>> generators​(int modv)
        Get a list of the generating elements excluding the module variables.
        Parameters:
        modv - number of module variables
        Returns:
        list of generators for the polynomial ring.
      • univariateList

        public java.util.List<? extends GenPolynomial<C>> univariateList()
        Generate list of univariate polynomials in all variables.
        Returns:
        List(X_1,...,X_n) a list of univariate polynomials.
      • univariateList

        public java.util.List<? extends GenPolynomial<C>> univariateList​(int modv)
        Generate list of univariate polynomials in all variables.
        Parameters:
        modv - number of module variables.
        Returns:
        List(X_1,...,X_n) a list of univariate polynomials.
      • univariateList

        public java.util.List<? extends GenPolynomial<C>> univariateList​(int modv,
                                                                         long e)
        Generate list of univariate polynomials in all variables with given exponent.
        Parameters:
        modv - number of module variables.
        e - the exponent of the variables.
        Returns:
        List(X_1^e,...,X_n^e) a list of univariate polynomials.
      • extend

        public GenPolynomialRing<Cextend​(int i)
        Extend variables. Used e.g. in module embedding. Extend number of variables by i.
        Parameters:
        i - number of variables to extend.
        Returns:
        extended polynomial ring factory.
      • extend

        public GenPolynomialRing<Cextend​(int i,
                                           boolean top)
        Extend variables. Used e.g. in module embedding. Extend number of variables by i.
        Parameters:
        i - number of variables to extend.
        top - true for TOP term order, false for POT term order.
        Returns:
        extended polynomial ring factory.
      • extend

        public GenPolynomialRing<Cextend​(java.lang.String[] vn)
        Extend variables. Used e.g. in module embedding. Extend number of variables by length(vn).
        Parameters:
        vn - names for extended variables.
        Returns:
        extended polynomial ring factory.
      • extend

        public GenPolynomialRing<Cextend​(java.lang.String[] vn,
                                           boolean top)
        Extend variables. Used e.g. in module embedding. Extend number of variables by length(vn).
        Parameters:
        vn - names for extended variables.
        top - true for TOP term order, false for POT term order.
        Returns:
        extended polynomial ring factory.
      • extendLower

        public GenPolynomialRing<CextendLower​(int i)
        Extend lower variables. Extend number of variables by i.
        Parameters:
        i - number of variables to extend.
        Returns:
        extended polynomial ring factory.
      • extendLower

        public GenPolynomialRing<CextendLower​(java.lang.String[] vn)
        Extend lower variables. Extend number of variables by length(vn).
        Parameters:
        vn - names for extended lower variables.
        Returns:
        extended polynomial ring factory.
      • extendLower

        public GenPolynomialRing<CextendLower​(java.lang.String[] vn,
                                                boolean top)
        Extend lower variables. Extend number of variables by length(vn).
        Parameters:
        vn - names for extended lower variables.
        top - true for TOP term order, false for POT term order.
        Returns:
        extended polynomial ring factory.
      • contract

        public GenPolynomialRing<Ccontract​(int i)
        Contract variables. Used e.g. in module embedding. Contract number of variables by i.
        Parameters:
        i - number of variables to remove.
        Returns:
        contracted polynomial ring factory.
      • recursive

        public GenPolynomialRing<GenPolynomial<C>> recursive​(int i)
        Recursive representation as polynomial with i main variables.
        Parameters:
        i - number of main variables.
        Returns:
        recursive polynomial ring factory.
      • distribute

        public GenPolynomialRing<Cdistribute()
        Distributive representation as polynomial with all main variables.
        Returns:
        distributive polynomial ring factory.
      • reverse

        public GenPolynomialRing<Creverse()
        Reverse variables. Used e.g. in opposite rings.
        Returns:
        polynomial ring factory with reversed variables.
      • reverse

        public GenPolynomialRing<Creverse​(boolean partial)
        Reverse variables. Used e.g. in opposite rings. The coefficient ring must be commuative.
        Parameters:
        partial - true for partially reversed term orders.
        Returns:
        polynomial ring factory with reversed variables.
      • getComparator

        public PolynomialComparator<CgetComparator​(boolean rev)
        Get PolynomialComparator.
        Parameters:
        rev - for reverse comparator.
        Returns:
        polynomial comparator.
      • newVars

        public static java.lang.String[] newVars​(java.lang.String prefix,
                                                 int n)
        New variable names. Generate new names for variables,
        Parameters:
        prefix - name prefix.
        n - number of variables.
        Returns:
        new variable names.
      • newVars

        public java.lang.String[] newVars​(java.lang.String prefix)
        New variable names. Generate new names for variables,
        Parameters:
        prefix - name prefix.
        Returns:
        new variable names.
      • newVars

        public static java.lang.String[] newVars​(int n)
        New variable names. Generate new names for variables,
        Parameters:
        n - number of variables.
        Returns:
        new variable names.
      • newVars

        public java.lang.String[] newVars()
        New variable names. Generate new names for variables,
        Returns:
        new variable names.
      • permuteVars

        public static java.lang.String[] permuteVars​(java.util.List<java.lang.Integer> P,
                                                     java.lang.String[] vars)
        Permute variable names.
        Parameters:
        vars - variable names.
        P - permutation.
        Returns:
        P(vars).
      • permutation

        public GenPolynomialRing<Cpermutation​(java.util.List<java.lang.Integer> P)
        Permutation of polynomial ring variables.
        Parameters:
        P - permutation.
        Returns:
        P(this).
      • charPolynomial

        public GenPolynomial<CcharPolynomial​(GenMatrix<C> A)
        Characteristic polynomial of matrix. Note: using Faddeev–LeVerrier algorithm
        Parameters:
        A - a square matrix.
        Returns:
        characteristic polynomial of A.
      • determinantFromCharPol

        public C determinantFromCharPol​(GenPolynomial<C> P)
        Determinant of matrix from characteristic polynomial. Note: using Faddeev–LeVerrier algorithm
        Parameters:
        P - characteristic polynomial of a matrix.
        Returns:
        determinant from characteristic polynomial.
      • determinant

        public C determinant​(GenMatrix<C> A)
        Determinant of matrix via characteristic polynomial. Note: using Faddeev–LeVerrier algorithm
        Parameters:
        A - square matrix.
        Returns:
        determinant of A from characteristic polynomial of A.
      • traceFromCharPol

        public C traceFromCharPol​(GenPolynomial<C> P)
        Trace of matrix from characteristic polynomial.
        Parameters:
        P - characteristic polynomial of a matrix.
        Returns:
        trace from characteristic polynomial.
      • iterator

        public java.util.Iterator<GenPolynomial<C>> iterator()
        Get a GenPolynomial iterator.
        Specified by:
        iterator in interface java.lang.Iterable<C extends RingElem<C>>
        Returns:
        an iterator over all polynomials.