cc.redberry.rings.poly.multivar

## Class MultivariateDivision

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

All Methods
Modifier and Type Method and Description
`static <Term extends AMonomial<Term>,Poly extends AMultivariatePolynomial<Term,Poly>>Poly[]` ```divideAndRemainder(Poly dividend, Poly... dividers)```
Performs multivariate division with remainder.
`static <Term extends AMonomial<Term>,Poly extends AMultivariatePolynomial<Term,Poly>>Poly[]` ```divideAndRemainder(Poly dividend, Poly divider)```
Performs multivariate division with remainder.
`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
`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
`static <Term extends AMonomial<Term>,Poly extends AMultivariatePolynomial<Term,Poly>>boolean` ```dividesQ(Poly dividend, Poly divider)```
Tests whether `divisor` is a divisor of `poly`
`static <Term extends AMonomial<Term>,Poly extends AMultivariatePolynomial<Term,Poly>>boolean` ```nontrivialQuotientQ(Poly dividend, Poly divider)```
Tests whether there is nontrivial quotient `dividend / divider`
`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.
`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.
`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.
`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.
`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.
`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.
• ### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
• ### Method Detail

• #### 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`