Class UnivariateRing<Poly extends IUnivariatePolynomial<Poly>>

    • Constructor Detail

      • UnivariateRing

        public UnivariateRing​(Poly factory)
        Creates ring of univariate polynomials which support operations over univariate polynomials of the type same as of provided factory polynomial
        Parameters:
        factory - factory polynomial (the exact value of factory is irrelevant)
    • Method Detail

      • nVariables

        public int nVariables()
        Description copied from interface: IPolynomialRing
        Number of polynomial variables
      • remainder

        public Poly remainder​(Poly a,
                              Poly b)
        Description copied from interface: Ring
        Returns the remainder of dividend / divider
        Parameters:
        a - the dividend
        b - the divider
        Returns:
        the remainder of dividend / divider
      • divideAndRemainder

        public Poly[] divideAndRemainder​(Poly a,
                                         Poly b)
        Description copied from interface: Ring
        Returns quotient and remainder of dividend / divider
        Parameters:
        a - the dividend
        b - the divider
        Returns:
        {quotient, remainder}
      • gcd

        public Poly gcd​(Poly a,
                        Poly b)
        Description copied from interface: Ring
        Returns the greatest common divisor of two elements
        Parameters:
        a - the first element
        b - the second element
        Returns:
        gcd
      • extendedGCD

        public Poly[] extendedGCD​(Poly a,
                                  Poly b)
        Description copied from interface: Ring
        Returns array of [gcd(a,b), s, t] such that s * a + t * b = gcd(a, b)
      • firstBezoutCoefficient

        public Poly[] firstBezoutCoefficient​(Poly a,
                                             Poly b)
        Description copied from interface: Ring
        Returns array of [gcd(a,b), s] such that s * a + t * b = gcd(a, b)
        Parameters:
        a - the first ring element (for which the Bezout coefficient is computed)
        b - the second ring element
        Returns:
        array of [gcd(a,b), s] such that s * a + t * b = gcd(a, b)
      • variable

        public Poly variable​(int variable)
        Description copied from interface: IPolynomialRing
        Creates poly representing a single specified variable
      • randomElement

        public Poly randomElement​(int minDegree,
                                  int maxDegree,
                                  org.apache.commons.math3.random.RandomGenerator rnd)
        Gives a random univariate polynomial with the degree randomly picked from minDegree (inclusive) to maxDegree (exclusive)
        Parameters:
        minDegree - the minimal degree of the result
        maxDegree - the maximal degree of the result
        rnd - the source of randomness
        Returns:
        random univariate polynomial with the degree randomly picked from minDegree (inclusive) to maxDegree (exclusive)
        See Also:
        RandomUnivariatePolynomials
      • randomElement

        public Poly randomElement​(int degree,
                                  org.apache.commons.math3.random.RandomGenerator rnd)
        Gives a random univariate polynomial with the specified degree
        Parameters:
        degree - the degree of the result
        rnd - the source of randomness
        Returns:
        random univariate polynomial with the specified degree
      • randomElement

        public Poly randomElement​(org.apache.commons.math3.random.RandomGenerator rnd)
        Gives a random univariate polynomial with the degree randomly picked from MIN_DEGREE_OF_RANDOM_POLY (inclusive) to MAX_DEGREE_OF_RANDOM_POLY (exclusive)
        Parameters:
        rnd - the source of randomness
        Returns:
        random univariate polynomial
      • randomElementTree

        public Poly randomElementTree​(int minDegree,
                                      int maxDegree,
                                      org.apache.commons.math3.random.RandomGenerator rnd)
        Gives a random univariate polynomial with the degree randomly picked from minDegree (inclusive) to maxDegree (exclusive) and coefficients generated via Ring.randomElementTree(RandomGenerator) method
        Parameters:
        minDegree - the minimal degree of the result
        maxDegree - the maximal degree of the result
        rnd - the source of randomness
        Returns:
        random univariate polynomial with the degree randomly picked from minDegree (inclusive) to maxDegree (exclusive)
        See Also:
        RandomUnivariatePolynomials
      • randomElementTree

        public Poly randomElementTree​(org.apache.commons.math3.random.RandomGenerator rnd)
        Gives a random univariate polynomial with the degree randomly picked from MIN_DEGREE_OF_RANDOM_POLY (inclusive) to MAX_DEGREE_OF_RANDOM_POLY (exclusive)
        Parameters:
        rnd - the source of randomness
        Returns:
        random univariate polynomial
      • isEuclideanRing

        public boolean isEuclideanRing()
        Description copied from interface: Ring
        Returns whether this ring is a Euclidean ring
        Specified by:
        isEuclideanRing in interface Ring<Poly extends IPolynomial<Poly>>
        Returns:
        whether this ring is a Euclidean ring
      • isField

        public final boolean isField()
        Description copied from interface: Ring
        Returns whether this ring is a field
        Specified by:
        isField in interface Ring<Poly extends IPolynomial<Poly>>
        Returns:
        whether this ring is a field
      • cardinality

        public final BigInteger cardinality()
        Description copied from interface: Ring
        Returns the number of elements in this ring (cardinality) or null if ring is infinite
        Specified by:
        cardinality in interface Ring<Poly extends IPolynomial<Poly>>
        Returns:
        the number of elements in this ring (cardinality) or null if ring is infinite
      • characteristic

        public final BigInteger characteristic()
        Description copied from interface: Ring
        Returns characteristic of this ring
        Specified by:
        characteristic in interface Ring<Poly extends IPolynomial<Poly>>
        Returns:
        characteristic of this ring
      • add

        public final Poly add​(Poly a,
                              Poly b)
        Description copied from interface: Ring
        Add two elements
        Specified by:
        add in interface Ring<Poly extends IPolynomial<Poly>>
        Parameters:
        a - the first element
        b - the second element
        Returns:
        a + b
      • subtract

        public final Poly subtract​(Poly a,
                                   Poly b)
        Description copied from interface: Ring
        Subtracts b from a
        Specified by:
        subtract in interface Ring<Poly extends IPolynomial<Poly>>
        Parameters:
        a - the first element
        b - the second element
        Returns:
        a - b
      • multiply

        public final Poly multiply​(Poly a,
                                   Poly b)
        Description copied from interface: Ring
        Multiplies two elements
        Specified by:
        multiply in interface Ring<Poly extends IPolynomial<Poly>>
        Parameters:
        a - the first element
        b - the second element
        Returns:
        a * b
      • negate

        public final Poly negate​(Poly element)
        Description copied from interface: Ring
        Negates the given element
        Specified by:
        negate in interface Ring<Poly extends IPolynomial<Poly>>
        Parameters:
        element - the ring element
        Returns:
        -val
      • pow

        public Poly pow​(Poly base,
                        BigInteger exponent)
        Description copied from interface: Ring
        Returns base in a power of exponent (non negative)
        Specified by:
        pow in interface Ring<Poly extends IPolynomial<Poly>>
        Parameters:
        base - base
        exponent - exponent (non negative)
        Returns:
        base in a power of exponent
      • addMutable

        public Poly addMutable​(Poly a,
                               Poly b)
        Description copied from interface: Ring
        Adds two elements and destroys the initial content of a.
        Specified by:
        addMutable in interface Ring<Poly extends IPolynomial<Poly>>
        Parameters:
        a - the first element (may be destroyed)
        b - the second element
        Returns:
        a + b
      • subtractMutable

        public Poly subtractMutable​(Poly a,
                                    Poly b)
        Description copied from interface: Ring
        Subtracts b from a and destroys the initial content of a
        Specified by:
        subtractMutable in interface Ring<Poly extends IPolynomial<Poly>>
        Parameters:
        a - the first element (may be destroyed)
        b - the second element
        Returns:
        a - b
      • multiplyMutable

        public Poly multiplyMutable​(Poly a,
                                    Poly b)
        Description copied from interface: Ring
        Multiplies two elements and destroys the initial content of a
        Specified by:
        multiplyMutable in interface Ring<Poly extends IPolynomial<Poly>>
        Parameters:
        a - the first element (may be destroyed)
        b - the second element
        Returns:
        a * b
      • negateMutable

        public Poly negateMutable​(Poly element)
        Description copied from interface: Ring
        Negates the given element and destroys the initial content of element
        Specified by:
        negateMutable in interface Ring<Poly extends IPolynomial<Poly>>
        Parameters:
        element - the ring element (may be destroyed)
        Returns:
        -element
      • reciprocal

        public final Poly reciprocal​(Poly element)
        Description copied from interface: Ring
        Gives the inverse element element ^ (-1)
        Specified by:
        reciprocal in interface Ring<Poly extends IPolynomial<Poly>>
        Parameters:
        element - the element
        Returns:
        element ^ (-1)
      • getZero

        public final Poly getZero()
        Description copied from interface: Ring
        Returns zero element of this ring
        Specified by:
        getZero in interface Ring<Poly extends IPolynomial<Poly>>
        Returns:
        0
      • getOne

        public final Poly getOne()
        Description copied from interface: Ring
        Returns unit element of this ring (one)
        Specified by:
        getOne in interface Ring<Poly extends IPolynomial<Poly>>
        Returns:
        1
      • isZero

        public final boolean isZero​(Poly element)
        Description copied from interface: Ring
        Tests whether specified element is zero
        Specified by:
        isZero in interface Ring<Poly extends IPolynomial<Poly>>
        Parameters:
        element - the ring element
        Returns:
        whether specified element is zero
      • isOne

        public final boolean isOne​(Poly element)
        Description copied from interface: Ring
        Tests whether specified element is one (exactly)
        Specified by:
        isOne in interface Ring<Poly extends IPolynomial<Poly>>
        Parameters:
        element - the ring element
        Returns:
        whether specified element is exactly one
        See Also:
        Ring.isUnit(Object)
      • isUnit

        public boolean isUnit​(Poly element)
        Description copied from interface: Ring
        Tests whether specified element is a ring unit
        Specified by:
        isUnit in interface Ring<Poly extends IPolynomial<Poly>>
        Parameters:
        element - the ring element
        Returns:
        whether specified element is a ring unit
        See Also:
        Ring.isOne(Object)
      • valueOf

        public final Poly valueOf​(long val)
        Description copied from interface: Ring
        Returns ring element associated with specified long
        Specified by:
        valueOf in interface Ring<Poly extends IPolynomial<Poly>>
        Parameters:
        val - machine integer
        Returns:
        ring element associated with specified long
      • valueOfBigInteger

        public Poly valueOfBigInteger​(BigInteger val)
        Description copied from interface: Ring
        Returns ring element associated with specified integer
        Specified by:
        valueOfBigInteger in interface Ring<Poly extends IPolynomial<Poly>>
        Parameters:
        val - integer
        Returns:
        ring element associated with specified integer
      • valueOf

        public final Poly valueOf​(Poly val)
        Description copied from interface: Ring
        Converts a value from other ring to this ring. The result is not guarantied to be a new instance (i.e. val == valueOf(val) is possible).
        Specified by:
        valueOf in interface Ring<Poly extends IPolynomial<Poly>>
        Parameters:
        val - some element from any ring
        Returns:
        this ring element associated with specified val
      • copy

        public Poly copy​(Poly element)
        Description copied from interface: Ring
        Makes a deep copy of the specified element (for immutable instances the same reference returned).
        Specified by:
        copy in interface Ring<Poly extends IPolynomial<Poly>>
        Parameters:
        element - the element
        Returns:
        deep copy of specified element
      • hashCode

        public final int hashCode()
        Overrides:
        hashCode in class Object
      • iterator

        public Iterator<Poly> iterator()
        Description copied from interface: Ring
        Returns iterator over ring elements (for finite rings, otherwise throws exception)
        Specified by:
        iterator in interface Iterable<Poly extends IPolynomial<Poly>>
        Specified by:
        iterator in interface Ring<Poly extends IPolynomial<Poly>>
      • parse

        public Poly parse​(String string)
        Description copied from interface: Ring
        Parse string into ring element
        Specified by:
        parse in interface IParser<Poly extends IPolynomial<Poly>>
        Specified by:
        parse in interface Ring<Poly extends IPolynomial<Poly>>
        Parameters:
        string - string
        Returns:
        ring element
        See Also:
        Coder
      • toString

        public String toString​(String... variables)