Package edu.jas.poly

Class GenPolynomialRing<C extends RingElem<C>>

    • Field Detail

      • nvar

        public final int nvar
        The number of variables.
      • tord

        public final TermOrder tord
        The term order.
      • 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.
      • varCounter

        private static java.util.concurrent.atomic.AtomicLong varCounter
        Counter to distinguish new variables.
      • 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.
      • logger

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

        static int creations
        Count for number of polynomial creations.
      • checkPreempt

        volatile boolean checkPreempt
        Flag to enable if preemptive interrupt is checked.
    • 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()
        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:
        Element.toScript()
      • 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.
      • 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:
        false.
      • characteristic

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

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

        public GenPolynomial<C> valueOf​(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<C> valueOf​(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<C> valueOf​(Monomial<C> m)
        Get a GenPolynomial<C> element from a monomial.
        Parameters:
        m - monomial.
        Returns:
        a GenPolynomial<C>.
      • fromInteger

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

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

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

        public GenPolynomial<C> random​(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<C> random​(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<C> random​(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<C> random​(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<C> parse​(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<C> parse​(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<C> univariate​(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<C> univariate​(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<C> univariate​(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<C> univariate​(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<C> univariate​(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<C> extend​(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<C> extend​(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<C> extend​(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<C> extend​(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<C> extendLower​(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<C> extendLower​(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<C> extendLower​(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<C> contract​(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<C> distribute()
        Distributive representation as polynomial with all main variables.
        Returns:
        distributive polynomial ring factory.
      • reverse

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

        public GenPolynomialRing<C> reverse​(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<C> getComparator()
        Get PolynomialComparator.
        Returns:
        polynomial comparator.
      • getComparator

        public PolynomialComparator<C> getComparator​(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<C> permutation​(java.util.List<java.lang.Integer> P)
        Permutation of polynomial ring variables.
        Parameters:
        P - permutation.
        Returns:
        P(this).
      • charPolynomial

        public GenPolynomial<C> charPolynomial​(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.