Class DegreeVector

  • All Implemented Interfaces:
    Serializable
    Direct Known Subclasses:
    AMonomial

    public class DegreeVector
    extends Object
    implements Serializable
    Degree vector. This is parent class for all monomials. Instances are immutable. All DegreeVector methods are prefixed with "dv" (which expands to "degree vector"), which means that they affect only exponents (not the coefficients).
    Since:
    1.0
    See Also:
    AMonomial, Serialized Form
    • Field Detail

      • exponents

        public final int[] exponents
        exponents
      • totalDegree

        public final int totalDegree
        Sum of all exponents (total degree)
    • Constructor Detail

      • DegreeVector

        public DegreeVector​(int[] exponents,
                            int totalDegree)
        Parameters:
        exponents - exponents
        totalDegree - total degree (sum of exponents)
      • DegreeVector

        public DegreeVector​(int[] exponents)
        Parameters:
        exponents - exponents
    • Method Detail

      • nVariables

        public final int nVariables()
        Returns number of variables
      • isZeroVector

        public final boolean isZeroVector()
        Returns whether all exponents are zero
      • dvTotalDegree

        public final int dvTotalDegree​(int... variables)
        Returns the total degree in specified variables
      • dvMultiply

        public final DegreeVector dvMultiply​(int[] oth)
        Multiplies this by oth
      • dvMultiply

        public final DegreeVector dvMultiply​(int variable,
                                             int exponent)
        Multiplies this by variable^exponent
      • dvDivideOrNull

        public final DegreeVector dvDivideOrNull​(int variable,
                                                 int exponent)
        Divides this by variable^exponent
      • dvDivideOrNull

        public final DegreeVector dvDivideOrNull​(DegreeVector divider)
        Gives quotient this / oth or null if exact division is not possible (e.g. a^2*b^3 / a^3*b^5)
      • dvDivideOrNull

        public final DegreeVector dvDivideOrNull​(int[] divider)
        Gives quotient this / oth or null if exact division is not possible (e.g. a^2*b^3 / a^3*b^5)
      • dvDivideExact

        public final DegreeVector dvDivideExact​(DegreeVector divider)
        Gives quotient this / oth or throws ArithmeticException if exact division is not possible (e.g. a^2*b^3 / a^3*b^5)
      • dvDivideExact

        public final DegreeVector dvDivideExact​(int[] divider)
        Gives quotient this / oth or throws ArithmeticException if exact division is not possible (e.g. a^2*b^3 / a^3*b^5)
      • dvDivisibleBy

        public final boolean dvDivisibleBy​(int[] oth)
        Tests whether this can be divided by oth degree vector
      • dvDivisibleBy

        public final boolean dvDivisibleBy​(DegreeVector oth)
        Tests whether this can be divided by oth degree vector
      • dvJoinNewVariable

        public final DegreeVector dvJoinNewVariable()
        Joins new variable (with zero exponent) to degree vector
      • dvJoinNewVariables

        public final DegreeVector dvJoinNewVariables​(int n)
        Joins new variables (with zero exponents) to degree vector
      • dvJoinNewVariables

        public final DegreeVector dvJoinNewVariables​(int newNVariables,
                                                     int[] mapping)
        internal API
      • dvSetNVariables

        public final DegreeVector dvSetNVariables​(int n)
        Sets the number of variables
      • dvSelect

        public final DegreeVector dvSelect​(int var)
        Sets exponents of all variables except the specified variable to zero
      • dvSelect

        public final DegreeVector dvSelect​(int[] variables)
        Set's exponents of all variables except specified variables to zero
      • dvDropSelect

        public final DegreeVector dvDropSelect​(int[] variables)
        Picks only specified exponents
      • dvRange

        public final DegreeVector dvRange​(int from,
                                          int to)
        Selects range from this
        Parameters:
        from - from inclusive
        to - to exclusive
      • dvSetZero

        public final DegreeVector dvSetZero​(int var)
        Set exponent of specified var to zero
      • dvSetZero

        public final DegreeVector dvSetZero​(int[] variables)
        Set exponents of specified variables to zero
      • dvWithout

        public final DegreeVector dvWithout​(int variable)
        Drops specified variable (number of variables will be reduced)
      • dvWithout

        public final DegreeVector dvWithout​(int[] variables)
        Drops specified variables (number of variables will be reduced)
      • dvInsert

        public final DegreeVector dvInsert​(int variable)
        Inserts new variable
      • dvInsert

        public final DegreeVector dvInsert​(int variable,
                                           int count)
        Inserts new variables
      • dvSet

        public final DegreeVector dvSet​(int variable,
                                        int exponent)
        Set's exponent of specified variable to specified value
        Parameters:
        variable - the variable
        exponent - new exponent
      • dvMap

        public final DegreeVector dvMap​(int nVariables,
                                        int[] mapping)
        Creates degree vector with old variables renamed to specified mapping variables
        Parameters:
        nVariables - new total number of variables
        mapping - mapping from old variables to new variables
      • toString

        public final String toString​(String[] vars)
        String representation of this monomial with specified string names for variables
        Parameters:
        vars - string names of variables
      • toStringArray

        public final String toStringArray()
      • dvEquals

        public final boolean dvEquals​(DegreeVector dVector)
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object