Package cc.redberry.rings.poly.multivar
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 Summary
Modifier and Type Method Description 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[]divideAndRemainder(Poly dividend, Poly... dividers)
Performs multivariate division with remainder.static <Term extends AMonomial<Term>, Poly extends AMultivariatePolynomial<Term, Poly>>
PolydivideExact(Poly dividend, Poly divider)
Dividesdividend
bydivider
or throws exception if exact division is not possiblestatic <Term extends AMonomial<Term>, Poly extends AMultivariatePolynomial<Term, Poly>>
PolydivideOrNull(Poly dividend, Poly divider)
Dividesdividend
bydivider
or returns null if exact division is not possiblestatic <Term extends AMonomial<Term>, Poly extends AMultivariatePolynomial<Term, Poly>>
booleandividesQ(Poly dividend, Poly divider)
Tests whetherdivisor
is a divisor ofpoly
static <Term extends AMonomial<Term>, Poly extends AMultivariatePolynomial<Term, Poly>>
booleannontrivialQuotientQ(Poly dividend, Poly divider)
Tests whether there is nontrivial quotientdividend / divider
static <Term extends AMonomial<Term>, Poly extends AMultivariatePolynomial<Term, Poly>>
PolypseudoRemainder(Poly dividend, Collection<Poly> dividers)
Performs multivariate division with remainder and rerurns the remainder.static <Term extends AMonomial<Term>, Poly extends AMultivariatePolynomial<Term, Poly>>
PolypseudoRemainder(Poly dividend, Poly divider)
Performs multivariate division with remainder and rerurns the remainder.static <Term extends AMonomial<Term>, Poly extends AMultivariatePolynomial<Term, Poly>>
PolypseudoRemainder(Poly dividend, Poly... dividers)
Performs multivariate pseudo division with remainder and returns the remainder.static <Term extends AMonomial<Term>, Poly extends AMultivariatePolynomial<Term, Poly>>
Polyremainder(Poly dividend, Collection<Poly> dividers)
Performs multivariate division with remainder and rerurns the remainder.static <Term extends AMonomial<Term>, Poly extends AMultivariatePolynomial<Term, Poly>>
Polyremainder(Poly dividend, Poly divider)
Performs multivariate division with remainder and rerurns the remainder.static <Term extends AMonomial<Term>, Poly extends AMultivariatePolynomial<Term, Poly>>
Polyremainder(Poly dividend, Poly... dividers)
Performs multivariate division with remainder and returns the remainder.
-
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) satisfiesdividend = quotient_1 * divider_1 + quotient_2 * divider_2 + ... + remainder
.- Parameters:
dividend
- the dividenddividers
- 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 dividenddividers
- 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 dividenddividers
- 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 dividenddivider
- 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 dividenddividers
- 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 dividenddivider
- 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 dividenddividers
- 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 dividenddivider
- 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)Dividesdividend
bydivider
or throws exception if exact division is not possible- Parameters:
dividend
- the dividenddivider
- 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)Dividesdividend
bydivider
or returns null if exact division is not possible- Parameters:
dividend
- the dividenddivider
- 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 whetherdivisor
is a divisor ofpoly
- Parameters:
dividend
- the polynomialdivider
- the divisor to check- Returns:
- whether
divisor
is a divisor ofpoly
-
nontrivialQuotientQ
public static <Term extends AMonomial<Term>, Poly extends AMultivariatePolynomial<Term, Poly>> boolean nontrivialQuotientQ(Poly dividend, Poly divider)Tests whether there is nontrivial quotientdividend / divider
- Parameters:
dividend
- the dividenddivider
- the divider- Returns:
- whether
divisor
is a divisor ofpoly
-