Class MultivariateDivision

java.lang.Object
cc.redberry.rings.poly.multivar.MultivariateDivision

public final class MultivariateDivision
extends Object
Division with remainder of multivariate polynomials (multivariate reduction).
Since:
1.0
  • Method Details

    • divideAndRemainder

      public static <Term extends AMonomial<Term>,​ Poly extends AMultivariatePolynomial<Term,​ Poly>> Poly[] divideAndRemainder​(Poly dividend, Poly... dividers)
      Performs multivariate division with remainder. The resulting array of quotients and remainder (last element of the returned array) satisfies dividend = quotient_1 * divider_1 + quotient_2 * divider_2 + ... + remainder .
      Parameters:
      dividend - the dividend
      dividers - the dividers
      Returns:
      array of quotients and remainder in the last position
    • remainder

      public static <Term extends AMonomial<Term>,​ Poly extends AMultivariatePolynomial<Term,​ Poly>> Poly remainder​(Poly dividend, Poly... dividers)
      Performs multivariate division with remainder and returns the remainder.
      Parameters:
      dividend - the dividend
      dividers - the dividers
      Returns:
      the remainder
    • pseudoRemainder

      public static <Term extends AMonomial<Term>,​ Poly extends AMultivariatePolynomial<Term,​ Poly>> Poly pseudoRemainder​(Poly dividend, Poly... dividers)
      Performs multivariate pseudo division with remainder and returns the remainder.
      Parameters:
      dividend - the dividend
      dividers - the dividers
      Returns:
      the "pseudo" remainder
    • divideAndRemainder

      public static <Term extends AMonomial<Term>,​ Poly extends AMultivariatePolynomial<Term,​ Poly>> Poly[] divideAndRemainder​(Poly dividend, Poly divider)
      Performs multivariate division with remainder.
      Parameters:
      dividend - the dividend
      divider - the divider
      Returns:
      array of quotient and remainder
    • remainder

      public static <Term extends AMonomial<Term>,​ Poly extends AMultivariatePolynomial<Term,​ Poly>> Poly remainder​(Poly dividend, Collection<Poly> dividers)
      Performs multivariate division with remainder and rerurns the remainder.
      Parameters:
      dividend - the dividend
      dividers - the dividers
      Returns:
      array of quotients and remainder at the last position
    • remainder

      public static <Term extends AMonomial<Term>,​ Poly extends AMultivariatePolynomial<Term,​ Poly>> Poly remainder​(Poly dividend, Poly divider)
      Performs multivariate division with remainder and rerurns the remainder.
      Parameters:
      dividend - the dividend
      divider - the divider
      Returns:
      array of quotients and remainder at the last position
    • pseudoRemainder

      public static <Term extends AMonomial<Term>,​ Poly extends AMultivariatePolynomial<Term,​ Poly>> Poly pseudoRemainder​(Poly dividend, Collection<Poly> dividers)
      Performs multivariate division with remainder and rerurns the remainder.
      Parameters:
      dividend - the dividend
      dividers - the dividers
      Returns:
      array of quotients and remainder at the last position
    • pseudoRemainder

      public static <Term extends AMonomial<Term>,​ Poly extends AMultivariatePolynomial<Term,​ Poly>> Poly pseudoRemainder​(Poly dividend, Poly divider)
      Performs multivariate division with remainder and rerurns the remainder.
      Parameters:
      dividend - the dividend
      divider - the divider
      Returns:
      array of quotients and remainder at the last position
    • divideExact

      public static <Term extends AMonomial<Term>,​ Poly extends AMultivariatePolynomial<Term,​ Poly>> Poly divideExact​(Poly dividend, Poly divider)
      Divides dividend by divider or throws exception if exact division is not possible
      Parameters:
      dividend - the dividend
      divider - the divider
      Returns:
      dividend / divider
      Throws:
      ArithmeticException - if exact division is not possible
    • divideOrNull

      public static <Term extends AMonomial<Term>,​ Poly extends AMultivariatePolynomial<Term,​ Poly>> Poly divideOrNull​(Poly dividend, Poly divider)
      Divides dividend by divider or returns null if exact division is not possible
      Parameters:
      dividend - the dividend
      divider - the divider
      Returns:
      dividend / divider or null if exact division is not possible
    • dividesQ

      public static <Term extends AMonomial<Term>,​ Poly extends AMultivariatePolynomial<Term,​ Poly>> boolean dividesQ​(Poly dividend, Poly divider)
      Tests whether divisor is a divisor of poly
      Parameters:
      dividend - the polynomial
      divider - the divisor to check
      Returns:
      whether divisor is a divisor of poly
    • nontrivialQuotientQ

      public static <Term extends AMonomial<Term>,​ Poly extends AMultivariatePolynomial<Term,​ Poly>> boolean nontrivialQuotientQ​(Poly dividend, Poly divider)
      Tests whether there is nontrivial quotient dividend / divider
      Parameters:
      dividend - the dividend
      divider - the divider
      Returns:
      whether divisor is a divisor of poly