Class DegreeVector

java.lang.Object
cc.redberry.rings.poly.multivar.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 Details

    • exponents

      public final int[] exponents
      exponents
    • totalDegree

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

    • 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 Details

    • nVariables

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

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

      public DegreeVector dv()
    • dvTotalDegree

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

      public final DegreeVector dvMultiply​(DegreeVector oth)
      Multiplies this by oth
    • 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
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • toStringArray

      public final String toStringArray()
    • dvEquals

      public final boolean dvEquals​(DegreeVector dVector)
    • equals

      public boolean equals​(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object