Package cc.redberry.rings.poly.multivar
Class MultivariateGCD
java.lang.Object
cc.redberry.rings.poly.multivar.MultivariateGCD
public final class MultivariateGCD extends Object
Multivariate polynomial GCD
- Since:
- 1.0
-
Method Summary
Modifier and Type Method Description static <E> MultivariatePolynomial<E>
BrownGCD(MultivariatePolynomial<E> a, MultivariatePolynomial<E> b)
Calculates GCD of two multivariate polynomials over Zp using Brown's algorithm with dense interpolation.static MultivariatePolynomialZp64
BrownGCD(MultivariatePolynomialZp64 a, MultivariatePolynomialZp64 b)
Calculates GCD of two multivariate polynomials over Zp using Brown's algorithm with dense interpolation.static <Term extends AMonomial<Term>, Poly extends AMultivariatePolynomial<Term, Poly>>
PolyEEZGCD(Poly a, Poly b)
Calculates GCD of two multivariate polynomials over Zp using enhanced EZ algorithmstatic MultivariatePolynomialZp64
EZGCD(MultivariatePolynomialZp64 a, MultivariatePolynomialZp64 b)
Calculates GCD of two multivariate polynomials over Zp using EZ algorithmstatic <E> MultivariatePolynomial<E>
KaltofenMonaganEEZModularGCDInGF(MultivariatePolynomial<E> a, MultivariatePolynomial<E> b)
Modular GCD algorithm for polynomials over finite fields of small cardinality.static MultivariatePolynomialZp64
KaltofenMonaganEEZModularGCDInGF(MultivariatePolynomialZp64 a, MultivariatePolynomialZp64 b)
Modular GCD algorithm for polynomials over finite fields of small cardinality.static MultivariatePolynomialZp64
KaltofenMonaganModularGCDInGF(MultivariatePolynomialZp64 a, MultivariatePolynomialZp64 b, cc.redberry.rings.poly.multivar.MultivariateGCD.KaltofenMonaganAlgorithm algorithm)
Modular GCD algorithm for polynomials over finite fields of small cardinality.static <E> MultivariatePolynomial<E>
KaltofenMonaganSparseModularGCDInGF(MultivariatePolynomial<E> a, MultivariatePolynomial<E> b)
Modular GCD algorithm for polynomials over finite fields of small cardinality.static MultivariatePolynomialZp64
KaltofenMonaganSparseModularGCDInGF(MultivariatePolynomialZp64 a, MultivariatePolynomialZp64 b)
Modular GCD algorithm for polynomials over finite fields of small cardinality.static MultivariatePolynomial<UnivariatePolynomial<Rational<BigInteger>>>
ModularGCDInNumberFieldViaLangemyrMcCallum(MultivariatePolynomial<UnivariatePolynomial<Rational<BigInteger>>> a, MultivariatePolynomial<UnivariatePolynomial<Rational<BigInteger>>> b, BiFunction<MultivariatePolynomial<UnivariatePolynomialZp64>,MultivariatePolynomial<UnivariatePolynomialZp64>,MultivariatePolynomial<UnivariatePolynomialZp64>> modularAlgorithm)
Zippel's sparse modular interpolation algorithm for polynomials over simple field extensions with the use of Langemyr & McCallum approach to avoid rational reconstructionstatic MultivariatePolynomial<UnivariatePolynomial<Rational<BigInteger>>>
ModularGCDInNumberFieldViaRationalReconstruction(MultivariatePolynomial<UnivariatePolynomial<Rational<BigInteger>>> a, MultivariatePolynomial<UnivariatePolynomial<Rational<BigInteger>>> b, BiFunction<MultivariatePolynomial<UnivariatePolynomialZp64>,MultivariatePolynomial<UnivariatePolynomialZp64>,MultivariatePolynomial<UnivariatePolynomialZp64>> modularAlgorithm)
Modular interpolation algorithm for polynomials over simple field extensions with the use of Langemyr & McCallum approach to avoid rational reconstructionstatic MultivariatePolynomial<BigInteger>
ModularGCDInZ(MultivariatePolynomial<BigInteger> a, MultivariatePolynomial<BigInteger> b, BiFunction<MultivariatePolynomialZp64,MultivariatePolynomialZp64,MultivariatePolynomialZp64> gcdInZp)
Modular GCD algorithm for polynomials over Z.static <Poly extends AMultivariatePolynomial>
PolyPolynomialGCD(Iterable<Poly> arr)
Calculates greatest common divisor of the array of polynomialsstatic <Poly extends AMultivariatePolynomial>
PolyPolynomialGCD(Poly... arr)
Calculates greatest common divisor of the array of polynomialsstatic <Poly extends AMultivariatePolynomial>
PolyPolynomialGCD(Poly a, Poly b)
Calculates greatest common divisor of two multivariate polynomialsstatic <Poly extends AMultivariatePolynomial>
PolyPolynomialGCDinGF(Poly a, Poly b)
Calculates greatest common divisor of two multivariate polynomials over finite fieldsstatic MultivariatePolynomial<UnivariatePolynomial<Rational<BigInteger>>>
PolynomialGCDinNumberField(MultivariatePolynomial<UnivariatePolynomial<Rational<BigInteger>>> a, MultivariatePolynomial<UnivariatePolynomial<Rational<BigInteger>>> b)
Calculates greatest common divisor of two multivariate polynomials over Zstatic MultivariatePolynomial<UnivariatePolynomial<BigInteger>>
PolynomialGCDinRingOfIntegersOfNumberField(MultivariatePolynomial<UnivariatePolynomial<BigInteger>> a, MultivariatePolynomial<UnivariatePolynomial<BigInteger>> b)
Calculates greatest common divisor of two multivariate polynomials over Zstatic MultivariatePolynomial<BigInteger>
PolynomialGCDinZ(MultivariatePolynomial<BigInteger> a, MultivariatePolynomial<BigInteger> b)
Calculates greatest common divisor of two multivariate polynomials over Zstatic <E> MultivariatePolynomial<E>
ZippelGCD(MultivariatePolynomial<E> a, MultivariatePolynomial<E> b)
Calculates GCD of two multivariate polynomials over Zp using Zippel's algorithm with sparse interpolation.static MultivariatePolynomialZp64
ZippelGCD(MultivariatePolynomialZp64 a, MultivariatePolynomialZp64 b)
Calculates GCD of two multivariate polynomials over Zp using Zippel's algorithm with sparse interpolation.static MultivariatePolynomial<UnivariatePolynomial<Rational<BigInteger>>>
ZippelGCDInNumberFieldViaLangemyrMcCallum(MultivariatePolynomial<UnivariatePolynomial<Rational<BigInteger>>> a, MultivariatePolynomial<UnivariatePolynomial<Rational<BigInteger>>> b)
Zippel's sparse modular interpolation algorithm for computing GCD associate for polynomials over simple field extensions with the use of Langemyr & McCallum approach to avoid rational reconstructionstatic MultivariatePolynomial<UnivariatePolynomial<Rational<BigInteger>>>
ZippelGCDInNumberFieldViaRationalReconstruction(MultivariatePolynomial<UnivariatePolynomial<Rational<BigInteger>>> a, MultivariatePolynomial<UnivariatePolynomial<Rational<BigInteger>>> b)
Zippel's sparse modular interpolation algorithm for polynomials over simple field extensions with the use of rational reconstruction to reconstruct the resultstatic MultivariatePolynomial<BigInteger>
ZippelGCDInZ(MultivariatePolynomial<BigInteger> a, MultivariatePolynomial<BigInteger> b)
Sparse modular GCD algorithm for polynomials over Z.
-
Method Details
-
PolynomialGCD
Calculates greatest common divisor of the array of polynomials- Parameters:
arr
- set of polynomials- Returns:
- the gcd
-
PolynomialGCD
Calculates greatest common divisor of the array of polynomials- Parameters:
arr
- set of polynomials- Returns:
- the gcd
-
PolynomialGCD
Calculates greatest common divisor of two multivariate polynomials- Parameters:
a
- the first polyb
- the second poly- Returns:
- the gcd
-
PolynomialGCDinGF
Calculates greatest common divisor of two multivariate polynomials over finite fields- Parameters:
a
- the first polyb
- the second poly- Returns:
- the gcd
-
PolynomialGCDinZ
public static MultivariatePolynomial<BigInteger> PolynomialGCDinZ(MultivariatePolynomial<BigInteger> a, MultivariatePolynomial<BigInteger> b)Calculates greatest common divisor of two multivariate polynomials over Z- Parameters:
a
- the first polyb
- the second poly- Returns:
- the gcd
-
PolynomialGCDinNumberField
public static MultivariatePolynomial<UnivariatePolynomial<Rational<BigInteger>>> PolynomialGCDinNumberField(MultivariatePolynomial<UnivariatePolynomial<Rational<BigInteger>>> a, MultivariatePolynomial<UnivariatePolynomial<Rational<BigInteger>>> b)Calculates greatest common divisor of two multivariate polynomials over Z- Parameters:
a
- the first polyb
- the second poly- Returns:
- the gcd
-
PolynomialGCDinRingOfIntegersOfNumberField
public static MultivariatePolynomial<UnivariatePolynomial<BigInteger>> PolynomialGCDinRingOfIntegersOfNumberField(MultivariatePolynomial<UnivariatePolynomial<BigInteger>> a, MultivariatePolynomial<UnivariatePolynomial<BigInteger>> b)Calculates greatest common divisor of two multivariate polynomials over Z- Parameters:
a
- the first polyb
- the second poly- Returns:
- the gcd
-
ZippelGCDInZ
public static MultivariatePolynomial<BigInteger> ZippelGCDInZ(MultivariatePolynomial<BigInteger> a, MultivariatePolynomial<BigInteger> b)Sparse modular GCD algorithm for polynomials over Z.- Parameters:
a
- the first polynomialb
- the second polynomial- Returns:
- GCD of two polynomials
-
ModularGCDInZ
public static MultivariatePolynomial<BigInteger> ModularGCDInZ(MultivariatePolynomial<BigInteger> a, MultivariatePolynomial<BigInteger> b, BiFunction<MultivariatePolynomialZp64,MultivariatePolynomialZp64,MultivariatePolynomialZp64> gcdInZp)Modular GCD algorithm for polynomials over Z.- Parameters:
a
- the first polynomialb
- the second polynomialgcdInZp
- algorithm for gcd in Zp- Returns:
- GCD of two polynomials
-
ZippelGCDInNumberFieldViaRationalReconstruction
public static MultivariatePolynomial<UnivariatePolynomial<Rational<BigInteger>>> ZippelGCDInNumberFieldViaRationalReconstruction(MultivariatePolynomial<UnivariatePolynomial<Rational<BigInteger>>> a, MultivariatePolynomial<UnivariatePolynomial<Rational<BigInteger>>> b)Zippel's sparse modular interpolation algorithm for polynomials over simple field extensions with the use of rational reconstruction to reconstruct the result -
ZippelGCDInNumberFieldViaLangemyrMcCallum
public static MultivariatePolynomial<UnivariatePolynomial<Rational<BigInteger>>> ZippelGCDInNumberFieldViaLangemyrMcCallum(MultivariatePolynomial<UnivariatePolynomial<Rational<BigInteger>>> a, MultivariatePolynomial<UnivariatePolynomial<Rational<BigInteger>>> b)Zippel's sparse modular interpolation algorithm for computing GCD associate for polynomials over simple field extensions with the use of Langemyr & McCallum approach to avoid rational reconstruction -
ModularGCDInNumberFieldViaRationalReconstruction
public static MultivariatePolynomial<UnivariatePolynomial<Rational<BigInteger>>> ModularGCDInNumberFieldViaRationalReconstruction(MultivariatePolynomial<UnivariatePolynomial<Rational<BigInteger>>> a, MultivariatePolynomial<UnivariatePolynomial<Rational<BigInteger>>> b, BiFunction<MultivariatePolynomial<UnivariatePolynomialZp64>,MultivariatePolynomial<UnivariatePolynomialZp64>,MultivariatePolynomial<UnivariatePolynomialZp64>> modularAlgorithm)Modular interpolation algorithm for polynomials over simple field extensions with the use of Langemyr & McCallum approach to avoid rational reconstruction -
ModularGCDInNumberFieldViaLangemyrMcCallum
public static MultivariatePolynomial<UnivariatePolynomial<Rational<BigInteger>>> ModularGCDInNumberFieldViaLangemyrMcCallum(MultivariatePolynomial<UnivariatePolynomial<Rational<BigInteger>>> a, MultivariatePolynomial<UnivariatePolynomial<Rational<BigInteger>>> b, BiFunction<MultivariatePolynomial<UnivariatePolynomialZp64>,MultivariatePolynomial<UnivariatePolynomialZp64>,MultivariatePolynomial<UnivariatePolynomialZp64>> modularAlgorithm)Zippel's sparse modular interpolation algorithm for polynomials over simple field extensions with the use of Langemyr & McCallum approach to avoid rational reconstruction -
KaltofenMonaganSparseModularGCDInGF
public static <E> MultivariatePolynomial<E> KaltofenMonaganSparseModularGCDInGF(MultivariatePolynomial<E> a, MultivariatePolynomial<E> b)Modular GCD algorithm for polynomials over finite fields of small cardinality.- Parameters:
a
- the first polynomialb
- the second polynomial- Returns:
- GCD of two polynomials
-
KaltofenMonaganEEZModularGCDInGF
public static <E> MultivariatePolynomial<E> KaltofenMonaganEEZModularGCDInGF(MultivariatePolynomial<E> a, MultivariatePolynomial<E> b)Modular GCD algorithm for polynomials over finite fields of small cardinality.- Parameters:
a
- the first polynomialb
- the second polynomial- Returns:
- GCD of two polynomials
-
KaltofenMonaganSparseModularGCDInGF
public static MultivariatePolynomialZp64 KaltofenMonaganSparseModularGCDInGF(MultivariatePolynomialZp64 a, MultivariatePolynomialZp64 b)Modular GCD algorithm for polynomials over finite fields of small cardinality.- Parameters:
a
- the first polynomialb
- the second polynomial- Returns:
- GCD of two polynomials
-
KaltofenMonaganEEZModularGCDInGF
public static MultivariatePolynomialZp64 KaltofenMonaganEEZModularGCDInGF(MultivariatePolynomialZp64 a, MultivariatePolynomialZp64 b)Modular GCD algorithm for polynomials over finite fields of small cardinality.- Parameters:
a
- the first polynomialb
- the second polynomial- Returns:
- GCD of two polynomials
-
KaltofenMonaganModularGCDInGF
public static MultivariatePolynomialZp64 KaltofenMonaganModularGCDInGF(MultivariatePolynomialZp64 a, MultivariatePolynomialZp64 b, cc.redberry.rings.poly.multivar.MultivariateGCD.KaltofenMonaganAlgorithm algorithm)Modular GCD algorithm for polynomials over finite fields of small cardinality.- Parameters:
a
- the first polynomialb
- the second polynomialalgorithm
- the actual algorithm- Returns:
- GCD of two polynomials
-
BrownGCD
public static <E> MultivariatePolynomial<E> BrownGCD(MultivariatePolynomial<E> a, MultivariatePolynomial<E> b)Calculates GCD of two multivariate polynomials over Zp using Brown's algorithm with dense interpolation.- Parameters:
a
- the first multivariate polynomialb
- the second multivariate polynomial- Returns:
- greatest common divisor of
a
andb
-
ZippelGCD
public static <E> MultivariatePolynomial<E> ZippelGCD(MultivariatePolynomial<E> a, MultivariatePolynomial<E> b)Calculates GCD of two multivariate polynomials over Zp using Zippel's algorithm with sparse interpolation.- Parameters:
a
- the first multivariate polynomialb
- the second multivariate polynomial- Returns:
- greatest common divisor of
a
andb
-
BrownGCD
public static MultivariatePolynomialZp64 BrownGCD(MultivariatePolynomialZp64 a, MultivariatePolynomialZp64 b)Calculates GCD of two multivariate polynomials over Zp using Brown's algorithm with dense interpolation.- Parameters:
a
- the first multivariate polynomialb
- the second multivariate polynomial- Returns:
- greatest common divisor of
a
andb
-
ZippelGCD
public static MultivariatePolynomialZp64 ZippelGCD(MultivariatePolynomialZp64 a, MultivariatePolynomialZp64 b)Calculates GCD of two multivariate polynomials over Zp using Zippel's algorithm with sparse interpolation.- Parameters:
a
- the first multivariate polynomialb
- the second multivariate polynomial- Returns:
- greatest common divisor of
a
andb
-
EZGCD
public static MultivariatePolynomialZp64 EZGCD(MultivariatePolynomialZp64 a, MultivariatePolynomialZp64 b)Calculates GCD of two multivariate polynomials over Zp using EZ algorithm- Parameters:
a
- the first multivariate polynomialb
- the second multivariate polynomial- Returns:
- greatest common divisor of
a
andb
-
EEZGCD
public static <Term extends AMonomial<Term>, Poly extends AMultivariatePolynomial<Term, Poly>> Poly EEZGCD(Poly a, Poly b)Calculates GCD of two multivariate polynomials over Zp using enhanced EZ algorithm- Parameters:
a
- the first multivariate polynomialb
- the second multivariate polynomial- Returns:
- greatest common divisor of
a
andb
-