Package edu.jas.ps

Class MultiVarPowerSeries<C extends RingElem<C>>

  • Type Parameters:
    C - ring element type
    All Implemented Interfaces:
    AbelianGroupElem<MultiVarPowerSeries<C>>, Element<MultiVarPowerSeries<C>>, MonoidElem<MultiVarPowerSeries<C>>, RingElem<MultiVarPowerSeries<C>>, java.io.Serializable, java.lang.Comparable<MultiVarPowerSeries<C>>

    public class MultiVarPowerSeries<C extends RingElem<C>>
    extends java.lang.Object
    implements RingElem<MultiVarPowerSeries<C>>
    Multivariate power series implementation. Uses inner classes and lazy evaluated generating function for coefficients. All ring element methods use lazy evaluation except where noted otherwise. Eager evaluated methods are toString(), compareTo(), equals(), evaluate(), or methods which use the order() or orderExpVector() methods, like signum(), abs(), divide(), remainder() and gcd(). Note: Currently the term order is fixed to the order defined by the iterator over exponent vectors in class ExpVectorIterator.
    See Also:
    Serialized Form
    • Field Detail

      • lazyCoeffs

        MultiVarCoefficients<C extends RingElem<C>> lazyCoeffs
        Data structure / generating function for coefficients. Cannot be final because of fixPoint, must be accessible in factory.
      • truncate

        private int truncate
        Truncation of computations.
      • order

        private int order
        Order of power series.
      • evorder

        private ExpVector evorder
        ExpVector of order of power series.
    • Constructor Detail

      • MultiVarPowerSeries

        private MultiVarPowerSeries()
        Private constructor.
      • MultiVarPowerSeries

        MultiVarPowerSeries​(MultiVarPowerSeriesRing<C> ring)
        Package constructor. Use in fixPoint only, must be accessible in factory.
        Parameters:
        ring - power series ring.
      • MultiVarPowerSeries

        public MultiVarPowerSeries​(MultiVarPowerSeriesRing<C> ring,
                                   MultiVarCoefficients<C> lazyCoeffs)
        Constructor.
        Parameters:
        ring - power series ring.
        lazyCoeffs - generating function for coefficients.
      • MultiVarPowerSeries

        public MultiVarPowerSeries​(MultiVarPowerSeriesRing<C> ring,
                                   MultiVarCoefficients<C> lazyCoeffs,
                                   int trunc)
        Constructor.
        Parameters:
        ring - power series ring.
        lazyCoeffs - generating function for coefficients.
        trunc - truncate parameter for this power series.
    • Method Detail

      • copy

        public MultiVarPowerSeries<C> copy()
        Clone this power series.
        Specified by:
        copy in interface Element<C extends RingElem<C>>
        Returns:
        Creates and returns a copy of this Element.
        See Also:
        Object.clone()
      • toString

        public java.lang.String toString()
        String representation of power series.
        Overrides:
        toString in class java.lang.Object
        See Also:
        Object.toString()
      • toString

        public java.lang.String toString​(int trunc)
        To String with given truncate.
        Parameters:
        trunc - truncate parameter for this power series.
        Returns:
        string representation of this to given truncate.
      • toScript

        public java.lang.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:
        Element.toScript()
      • toScriptFactory

        public java.lang.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:
        Element.toScriptFactory()
      • coefficient

        public C coefficient​(ExpVector index)
        Get coefficient.
        Parameters:
        index - number of requested coefficient.
        Returns:
        coefficient at index.
      • homogeneousPart

        public GenPolynomial<C> homogeneousPart​(long tdeg)
        Homogeneous part.
        Parameters:
        tdeg - requested degree.
        Returns:
        polynomial part of given degree.
      • asPolynomial

        public GenPolynomial<C> asPolynomial()
        Get a GenPolynomial<C> from this.
        Returns:
        a GenPolynomial<C> from this up to truncate homogeneous parts.
      • leadingCoefficient

        public C leadingCoefficient()
        Leading base coefficient.
        Returns:
        first coefficient.
      • prepend

        public MultiVarPowerSeries<C> prepend​(C h,
                                              int r)
        Prepend a new leading coefficient.
        Parameters:
        r - variable for the direction.
        h - new coefficient.
        Returns:
        new power series.
      • shift

        public MultiVarPowerSeries<C> shift​(int k,
                                            int r)
        Shift coefficients.
        Parameters:
        k - shift index.
        r - variable for the direction.
        Returns:
        new power series with coefficient(i) = old.coefficient(i-k).
      • reductum

        public MultiVarPowerSeries<C> reductum​(int r)
        Reductum.
        Parameters:
        r - variable for taking the reductum.
        Returns:
        this - leading monomial in the direction of r.
      • shift

        public MultiVarPowerSeries<C> shift​(ExpVector k)
        Shift coefficients. Multiply by exponent vector.
        Parameters:
        k - shift ExpVector.
        Returns:
        new power series with coefficient(i) = old.coefficient(i-k).
      • multiply

        public MultiVarPowerSeries<C> multiply​(C c,
                                               ExpVector k)
        Multiply by exponent vector and coefficient.
        Parameters:
        k - shift ExpVector.
        c - coefficient multiplier.
        Returns:
        new power series with coefficient(i) = old.coefficient(i-k)*c.
      • sum

        public MultiVarPowerSeries<C> sum​(java.util.Map.Entry<ExpVector,​C> m)
        Sum monomial.
        Parameters:
        m - ExpVector , coefficient pair
        Returns:
        this + ONE.multiply(m.coefficient,m.exponent).
      • sum

        public MultiVarPowerSeries<C> sum​(C c,
                                          ExpVector k)
        Sum exponent vector and coefficient.
        Parameters:
        k - ExpVector.
        c - coefficient.
        Returns:
        this + ONE.multiply(c,k).
      • subtract

        public MultiVarPowerSeries<C> subtract​(C c,
                                               ExpVector k)
        Subtract exponent vector and coefficient.
        Parameters:
        k - ExpVector.
        c - coefficient.
        Returns:
        this - ONE.multiply(c,k).
      • select

        public MultiVarPowerSeries<C> select​(Selector<? super C> sel)
        Select coefficients.
        Parameters:
        sel - selector functor.
        Returns:
        new power series with selected coefficients.
      • shiftSelect

        public MultiVarPowerSeries<C> shiftSelect​(Selector<? super C> sel)
        Shift select coefficients. Not selected coefficients are removed from the result series.
        Parameters:
        sel - selector functor.
        Returns:
        new power series with shifted selected coefficients.
      • map

        public MultiVarPowerSeries<C> map​(UnaryFunctor<? super C,​C> f)
        Map a unary function to this power series.
        Parameters:
        f - evaluation functor.
        Returns:
        new power series with coefficients f(this(i)).
      • zip

        public MultiVarPowerSeries<C> zip​(BinaryFunctor<? super C,​? super C,​C> f,
                                          MultiVarPowerSeries<C> ps)
        Map a binary function to this and another power series.
        Parameters:
        f - evaluation functor with coefficients f(this(i),other(i)).
        ps - other power series.
        Returns:
        new power series.
      • multiply

        public MultiVarPowerSeries<C> multiply​(C a)
        Multiply by coefficient.
        Parameters:
        a - coefficient.
        Returns:
        this * a.
      • evaluate

        public C evaluate​(java.util.List<C> a)
        Evaluate at given point.
        Returns:
        ps(a).
      • order

        public int order()
        Order.
        Returns:
        index of first non zero coefficient.
      • orderExpVector

        public ExpVector orderExpVector()
        Order ExpVector.
        Returns:
        ExpVector of first non zero coefficient.
      • orderMonomial

        public java.util.Map.Entry<ExpVector,​C> orderMonomial()
        Order monomial.
        Returns:
        first map entry or null.
      • truncate

        public int truncate()
        Truncate.
        Returns:
        truncate index of power series.
      • setTruncate

        public int setTruncate​(int t)
        Set truncate.
        Parameters:
        t - new truncate index.
        Returns:
        old truncate index of power series.
      • ecart

        public long ecart()
        Ecart.
        Returns:
        ecart.
      • compareTo

        public int compareTo​(MultiVarPowerSeries<C> ps)
        Compare to. Note: compare only up to max(truncates).
        Specified by:
        compareTo in interface java.lang.Comparable<C extends RingElem<C>>
        Specified by:
        compareTo in interface Element<C extends RingElem<C>>
        Returns:
        sign of first non zero coefficient of this-ps.
      • isONE

        public boolean isONE()
        Is power series one. Note: compare only up to truncate.
        Specified by:
        isONE in interface MonoidElem<C extends RingElem<C>>
        Returns:
        If this is 1 then true is returned, else false.
        See Also:
        MonoidElem.isONE()
      • equals

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

        public int hashCode()
        Hash code for this polynomial. Note: only up to truncate.
        Specified by:
        hashCode in interface Element<C extends RingElem<C>>
        Overrides:
        hashCode in class java.lang.Object
        Returns:
        the hashCode.
        See Also:
        Object.hashCode()
      • isUnit

        public boolean isUnit()
        Is unit.
        Specified by:
        isUnit in interface MonoidElem<C extends RingElem<C>>
        Returns:
        true, if this power series is invertible, else false.
      • differentiate

        public MultiVarPowerSeries<C> differentiate​(int r)
        Differentiate with respect to variable r.
        Parameters:
        r - variable for the direction.
        Returns:
        differentiate(this).
      • integrate

        public MultiVarPowerSeries<C> integrate​(C c,
                                                int r)
        Integrate with respect to variable r and with given constant.
        Parameters:
        c - integration constant.
        r - variable for the direction.
        Returns:
        integrate(this).