| Package | Description |
|---|---|
| cc.redberry.rings | |
| cc.redberry.rings.io | |
| cc.redberry.rings.poly | |
| cc.redberry.rings.poly.multivar | |
| cc.redberry.rings.poly.univar |
| Modifier and Type | Method and Description |
|---|---|
static <Poly extends IUnivariatePolynomial<Poly>> |
Rings.AlgebraicNumberField(Poly minimalPoly)
Algebraic number field generated by the specified minimal polynomial
|
static <Poly extends IUnivariatePolynomial<Poly>> |
Rings.GF(Poly irreducible)
Galois field with the specified minimal polynomial.
|
static <Term extends AMonomial<Term>,mPoly extends AMultivariatePolynomial<Term,mPoly>,sPoly extends IUnivariatePolynomial<sPoly>> |
Rings.MultipleFieldExtension(sPoly... minimalPolynomials)
Multiple field extension generated by given algebraic elements represented by their minimal polynomials (not
tested that they are irreducible)
|
static <Poly extends IUnivariatePolynomial<Poly>> |
RationalReconstruction.reconstruct(Poly n,
Poly modulus,
int numeratorBound,
int denominatorBound)
Performs a rational number reconstruction.
|
static <uPoly extends IUnivariatePolynomial<uPoly>> |
Rings.SimpleFieldExtension(uPoly minimalPolynomial)
Returns a simple field extension generated by given minimal polynomial
|
static <Term extends AMonomial<Term>,mPoly extends AMultivariatePolynomial<Term,mPoly>,sPoly extends IUnivariatePolynomial<sPoly>> |
Rings.SplittingField(sPoly polynomial)
Splitting field of a given polynomial.
|
static <uPoly extends IUnivariatePolynomial<uPoly>> |
Rings.UnivariateQuotientRing(uPoly modulus)
Deprecated.
|
static <Poly extends IUnivariatePolynomial<Poly>> |
Rings.UnivariateRing(Poly factory)
Ring of univariate polynomials with specified factory
|
| Modifier and Type | Method and Description |
|---|---|
static <Poly extends IUnivariatePolynomial<Poly>> |
RationalReconstruction.reconstruct(Poly n,
Poly modulus,
int numeratorBound,
int denominatorBound)
Performs a rational number reconstruction.
|
| Modifier and Type | Method and Description |
|---|---|
static <Term extends AMonomial<Term>,mPoly extends AMultivariatePolynomial<Term,mPoly>,sPoly extends IUnivariatePolynomial<sPoly>> |
Rings.MultipleFieldExtension(sPoly... minimalPolynomials)
Multiple field extension generated by given algebraic elements represented by their minimal polynomials (not
tested that they are irreducible)
|
| Modifier and Type | Method and Description |
|---|---|
static <Term extends AMonomial<Term>,mPoly extends AMultivariatePolynomial<Term,mPoly>,sPoly extends IUnivariatePolynomial<sPoly>> |
Coder.mkMultipleExtensionCoder(MultipleFieldExtension<Term,mPoly,sPoly> field,
Map<String,mPoly> variables)
Create coder for multiple field extension
|
static <Term extends AMonomial<Term>,mPoly extends AMultivariatePolynomial<Term,mPoly>,sPoly extends IUnivariatePolynomial<sPoly>> |
Coder.mkMultipleExtensionCoder(MultipleFieldExtension<Term,mPoly,sPoly> field,
String... variables)
Create coder for multiple field extension
|
static <Poly extends IUnivariatePolynomial<Poly>> |
Coder.mkUnivariateCoder(IPolynomialRing<Poly> ring,
Map<String,Poly> variables)
Create coder for univariate polynomial rings
|
static <Poly extends IUnivariatePolynomial<Poly>> |
Coder.mkUnivariateCoder(IPolynomialRing<Poly> ring,
String variable)
Create coder for univariate polynomial rings
|
| Modifier and Type | Class and Description |
|---|---|
class |
AlgebraicNumberField<E extends IUnivariatePolynomial<E>>
Algebraic number field
F(α) represented as a simple field extension, for details see SimpleFieldExtension. |
class |
FiniteField<E extends IUnivariatePolynomial<E>>
Galois field
GF(p, q). |
class |
MultipleFieldExtension<Term extends AMonomial<Term>,mPoly extends AMultivariatePolynomial<Term,mPoly>,sPoly extends IUnivariatePolynomial<sPoly>>
Multiple field extension
F(α_1, α_2, ..., α_N). |
class |
SimpleFieldExtension<E extends IUnivariatePolynomial<E>>
A simple field extension
F(α) represented as a univariate quotient ring F[x]/<m(x)> where m(x) is the minimal polynomial of α. |
class |
UnivariateRing<Poly extends IUnivariatePolynomial<Poly>>
Ring of univariate polynomials.
|
| Modifier and Type | Method and Description |
|---|---|
static <Term extends AMonomial<Term>,mPoly extends AMultivariatePolynomial<Term,mPoly>,sPoly extends IUnivariatePolynomial<sPoly>> |
MultipleFieldExtension.mkMultipleExtension(SimpleFieldExtension<sPoly> ext) |
static <Term extends AMonomial<Term>,mPoly extends AMultivariatePolynomial<Term,mPoly>,sPoly extends IUnivariatePolynomial<sPoly>> |
MultipleFieldExtension.mkMultipleExtension(sPoly... minimalPolynomials)
Creates multiple field extension
F(α_1, α_2, ..., α_i) where α_i are specified by their minimal
polynomials over F. |
static <Term extends AMonomial<Term>,mPoly extends AMultivariatePolynomial<Term,mPoly>,sPoly extends IUnivariatePolynomial<sPoly>> |
MultipleFieldExtension.mkMultipleExtension(sPoly a) |
static <Term extends AMonomial<Term>,mPoly extends AMultivariatePolynomial<Term,mPoly>,sPoly extends IUnivariatePolynomial<sPoly>> |
MultipleFieldExtension.mkSplittingField(sPoly poly)
Constructs splitting field for a given polynomial.
|
static <T extends IUnivariatePolynomial<T>> |
PolynomialMethods.PolynomialExtendedGCD(T a,
T b)
Computes
[gcd(a,b), s, t] such that s * a + t * b = gcd(a, b). |
| Modifier and Type | Method and Description |
|---|---|
E[] |
SimpleFieldExtension.createArray(int length) |
E[][] |
SimpleFieldExtension.createArray2d(int length) |
E[][] |
SimpleFieldExtension.createArray2d(int m,
int n) |
E[] |
FiniteField.divideAndRemainder(E a,
E b) |
E[] |
AlgebraicNumberField.divideAndRemainder(E a,
E b) |
Poly[] |
UnivariateRing.divideAndRemainder(Poly a,
Poly b) |
Poly[] |
UnivariateRing.extendedGCD(Poly a,
Poly b) |
Poly[] |
UnivariateRing.firstBezoutCoefficient(Poly a,
Poly b) |
sPoly[] |
MultipleFieldExtension.getGeneratorReps()
Returns representation of generators as elements of simple field extension generated by primitive element
MultipleFieldExtension.getPrimitiveElement() |
static <T extends IUnivariatePolynomial<T>> |
PolynomialMethods.PolynomialExtendedGCD(T a,
T b)
Computes
[gcd(a,b), s, t] such that s * a + t * b = gcd(a, b). |
| Modifier and Type | Method and Description |
|---|---|
static <Term extends AMonomial<Term>,mPoly extends AMultivariatePolynomial<Term,mPoly>,sPoly extends IUnivariatePolynomial<sPoly>> |
MultipleFieldExtension.mkMultipleExtension(sPoly... minimalPolynomials)
Creates multiple field extension
F(α_1, α_2, ..., α_i) where α_i are specified by their minimal
polynomials over F. |
| Constructor and Description |
|---|
MultipleFieldExtension(MultipleFieldExtension<Term,mPoly,sPoly>[] tower,
UnivariatePolynomial<mPoly>[] minimalPolynomialsOfGenerators,
mPoly primitiveElement,
sPoly[] generatorsReps,
SimpleFieldExtension<sPoly> simpleExtension) |
| Modifier and Type | Method and Description |
|---|---|
static <Term extends AMonomial<Term>,Poly extends AMultivariatePolynomial<Term,Poly>,uPoly extends IUnivariatePolynomial<uPoly>> |
HenselLifting.bivariateLiftNoLCCorrection0(Poly base,
Poly[] factors,
cc.redberry.rings.poly.multivar.HenselLifting.IEvaluation<Term,Poly> evaluation,
int degreeBound)
Fast bivariate Hensel lifting which uses dense representation for bivariate polynomials
|
<sPoly extends IUnivariatePolynomial<sPoly>> |
AMultivariatePolynomial.composition(Ring<sPoly> uRing,
sPoly... values)
Substitutes given polynomials instead of variables of this (that is
this(values_1, ..., values_N)) |
<sPoly extends IUnivariatePolynomial<sPoly>> |
AMultivariatePolynomial.composition(sPoly... values)
Substitutes given polynomials instead of variables of this (that is
this(values_1, ..., values_N)) |
static <Term extends AMonomial<Term>,Poly extends AMultivariatePolynomial<Term,Poly>,uPoly extends IUnivariatePolynomial<uPoly>> |
HenselLifting.seriesExpansionDense(Ring<uPoly> ring,
Poly poly,
int variable,
cc.redberry.rings.poly.multivar.HenselLifting.IEvaluation<Term,Poly> evaluate)
Generates a power series expansion for poly about the point specified by variable and evaluation
|
| Modifier and Type | Method and Description |
|---|---|
abstract IUnivariatePolynomial |
AMultivariatePolynomial.asUnivariate()
Converts this to univariate polynomial or throws exception if conversion is impossible (more than one variable
have non zero exponents)
|
abstract IUnivariatePolynomial |
AMultivariatePolynomial.contentUnivariate(int variable)
Gives the content of this considered as R[variable][other_variables]
|
IUnivariatePolynomial |
MultivariatePolynomialZp64.toDenseRecursiveForm()
Gives a recursive univariate representation of this poly.
|
| Modifier and Type | Method and Description |
|---|---|
abstract MultivariatePolynomial<? extends IUnivariatePolynomial> |
AMultivariatePolynomial.asOverUnivariate(int variable)
Converts this to a multivariate polynomial with coefficients being univariate polynomials over
variable |
abstract MultivariatePolynomial<? extends IUnivariatePolynomial> |
AMultivariatePolynomial.asOverUnivariateEliminate(int variable)
Converts this to a multivariate polynomial with coefficients being univariate polynomials over
variable,
the resulting polynomial have (nVariable - 1) multivariate variables (specified variable is eliminated) |
| Modifier and Type | Method and Description |
|---|---|
static <Term extends AMonomial<Term>,Poly extends AMultivariatePolynomial<Term,Poly>> |
AMultivariatePolynomial.asMultivariate(IUnivariatePolynomial poly,
int nVariables,
int variable,
Comparator<DegreeVector> ordering)
Converts univariate polynomial to multivariate.
|
<sPoly extends IUnivariatePolynomial<sPoly>> |
AMultivariatePolynomial.composition(Ring<sPoly> uRing,
sPoly... values)
Substitutes given polynomials instead of variables of this (that is
this(values_1, ..., values_N)) |
<sPoly extends IUnivariatePolynomial<sPoly>> |
AMultivariatePolynomial.composition(sPoly... values)
Substitutes given polynomials instead of variables of this (that is
this(values_1, ..., values_N)) |
static long |
MultivariatePolynomialZp64.evaluateDenseRecursiveForm(IUnivariatePolynomial recForm,
long[] values)
Evaluates polynomial given in a dense recursive form at a given points
|
static MultivariatePolynomialZp64 |
MultivariatePolynomialZp64.fromDenseRecursiveForm(IUnivariatePolynomial recForm,
Comparator<DegreeVector> ordering)
Converts poly from a recursive univariate representation.
|
static MultivariatePolynomialZp64 |
MultivariatePolynomialZp64.fromDenseRecursiveForm(IUnivariatePolynomial recForm,
int nVariables,
Comparator<DegreeVector> ordering)
Converts poly from a recursive univariate representation.
|
| Modifier and Type | Class and Description |
|---|---|
static class |
DiophantineEquations.DiophantineSolver<Poly extends IUnivariatePolynomial<Poly>>
Solves a1 * x1 + a2 * x2 + ...
|
static interface |
HenselLifting.LiftableQuintet<PolyZp extends IUnivariatePolynomial<PolyZp>>
Liftable quintet.
|
interface |
IUnivariatePolynomial<Poly extends IUnivariatePolynomial<Poly>>
Parent interface for univariate polynomials.
|
static class |
UnivariateDivision.InverseModMonomial<Poly extends IUnivariatePolynomial<Poly>>
Holds
poly^(-1) mod x^i |
static class |
UnivariateResultants.APolynomialRemainderSequence<Poly extends IUnivariatePolynomial<Poly>>
Polynomial remainder sequence (PRS).
|
| Modifier and Type | Class and Description |
|---|---|
class |
UnivariatePolynomial<E>
Univariate polynomial over generic ring.
|
class |
UnivariatePolynomialZ64
Univariate polynomial over machine integers in range [-2^63, 2^63].
|
class |
UnivariatePolynomialZp64
Univariate polynomial over Zp ring with modulus in the range of
[2, 2^62) (the last value is specified by
MachineArithmetic.MAX_SUPPORTED_MODULUS_BITS. |
| Modifier and Type | Field and Description |
|---|---|
Poly |
UnivariateResultants.APolynomialRemainderSequence.a
Initial polynomials
|
Poly |
UnivariateResultants.APolynomialRemainderSequence.b
Initial polynomials
|
| Modifier and Type | Method and Description |
|---|---|
static <Poly extends IUnivariatePolynomial<Poly>> |
EqualDegreeFactorization.CantorZassenhaus(Poly input,
int d)
Plain Cantor-Zassenhaus algorithm implementation
|
static <T extends IUnivariatePolynomial<T>> |
ModularComposition.composition(T poly,
T point,
T polyModulus)
Returns modular composition
poly(point) mod polyModulus. |
static <T extends IUnivariatePolynomial<T>> |
ModularComposition.composition(T poly,
T point,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod)
Returns modular composition
poly(point) mod polyModulus. |
static <T extends IUnivariatePolynomial<T>> |
ModularComposition.compositionBrentKung(T poly,
ArrayList<T> pointPowers,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod,
int tBrentKung)
Returns modular composition
poly(point) mod polyModulus calculated using Brent & Kung algorithm for
modular composition. |
static <T extends IUnivariatePolynomial<T>> |
ModularComposition.compositionBrentKung(T poly,
T point,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod)
Returns modular composition
poly(point) mod polyModulus calculated using Brent & Kung algorithm for
modular composition. |
static <T extends IUnivariatePolynomial<T>> |
UnivariatePolynomialArithmetic.createMonomialMod(BigInteger exponent,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod)
Creates
x^exponent mod polyModulus. |
static <T extends IUnivariatePolynomial<T>> |
UnivariatePolynomialArithmetic.createMonomialMod(long exponent,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod)
Creates
x^exponent mod polyModulus. |
static <Poly extends IUnivariatePolynomial<Poly>> |
UnivariateResultants.DiscriminantAsPoly(Poly a)
Computes discriminant of polynomial and returns the result as a constant poly
|
static <Poly extends IUnivariatePolynomial<Poly>> |
DistinctDegreeFactorization.DistinctDegreeFactorization(Poly poly)
Performs distinct-degree factorization for square-free polynomial
poly. |
static <Poly extends IUnivariatePolynomial<Poly>> |
DistinctDegreeFactorization.DistinctDegreeFactorizationShoup(Poly poly)
Performs distinct-degree factorization for square-free polynomial
poly using Victor Shoup's baby step /
giant step algorithm. |
static <Poly extends IUnivariatePolynomial<Poly>> |
UnivariateDivision.divideAndRemainder(Poly dividend,
Poly divider,
boolean copy)
Returns
{quotient, remainder} of dividend and divider or null if the division is
not possible. |
static <Poly extends IUnivariatePolynomial<Poly>> |
UnivariateDivision.divideAndRemainderFast(Poly dividend,
Poly divider,
UnivariateDivision.InverseModMonomial<Poly> invMod,
boolean copy)
Returns
{quotient, remainder} of dividend and divider |
static <Poly extends IUnivariatePolynomial<Poly>> |
UnivariateDivision.divideAndRemainderFast0(Poly dividend,
Poly divider,
UnivariateDivision.InverseModMonomial<Poly> invRevMod,
boolean copy)
fast division implementation
|
static <Poly extends IUnivariatePolynomial<Poly>> |
UnivariateDivision.divideExact(Poly dividend,
Poly divider,
boolean copy)
Divides
dividend by divider or throws ArithmeticException if exact division is not
possible |
static <Poly extends IUnivariatePolynomial<Poly>> |
UnivariateDivision.divideOrNull(Poly dividend,
Poly divider,
boolean copy)
Divides
dividend by divider or returns null if exact division is not possible |
static <T extends IUnivariatePolynomial<T>> |
UnivariateGCD.EuclidFirstBezoutCoefficient(T a,
T b)
Returns array of
[gcd(a,b), s] such that s * a + t * b = gcd(a, b) |
static <T extends IUnivariatePolynomial<T>> |
UnivariateGCD.EuclidGCD(T a,
T b)
Returns the GCD calculated with Euclidean algorithm.
|
static <T extends IUnivariatePolynomial<T>> |
UnivariateGCD.ExtendedEuclidGCD(T a,
T b)
Runs extended Euclidean algorithm to compute
[gcd(a,b), s, t] such that s * a + t * b = gcd(a,
b). |
static <T extends IUnivariatePolynomial<T>> |
UnivariateGCD.ExtendedHalfGCD(T a,
T b)
Runs extended Half-GCD algorithm to compute
[gcd(a,b), s, t] such that s * a + t * b = gcd(a, b). |
static <Poly extends IUnivariatePolynomial<Poly>> |
UnivariateFactorization.Factor(Poly poly)
Factors univariate
poly. |
static <Poly extends IUnivariatePolynomial<Poly>> |
UnivariateFactorization.FactorInGF(Poly poly)
Factors polynomial over finite field
|
static <Poly extends IUnivariatePolynomial<Poly>> |
UnivariateFactorization.FactorInZ(Poly poly)
Factors polynomial in Z[x].
|
static <T extends IUnivariatePolynomial<T>> |
UnivariateFactorization.FactorSquareFreeInGF(T poly)
Factors square-free polynomial over finite field
|
static <PolyZ extends IUnivariatePolynomial<PolyZ>> |
UnivariateFactorization.FactorSquareFreeInZ(PolyZ poly) |
static <Poly extends IUnivariatePolynomial<Poly>> |
UnivariateDivision.fastDivisionPreConditioning(Poly divider)
Prepares
rev(divider)^(-1) mod x^i for fast division. |
static <Poly extends IUnivariatePolynomial<Poly>> |
UnivariateDivision.fastDivisionPreConditioningWithLCCorrection(Poly divider)
Prepares
rev(divider)^(-1) mod x^i for fast division. |
static <Poly extends IUnivariatePolynomial<Poly>> |
IrreduciblePolynomials.finiteFieldIrreducibleBenOr(Poly poly)
Tests whether
poly is irreducible over the finite field |
static <Poly extends IUnivariatePolynomial<Poly>> |
IrreduciblePolynomials.finiteFieldIrreducibleQ(Poly poly)
Tests whether
poly is irreducible over the finite field |
static <Poly extends IUnivariatePolynomial<Poly>> |
IrreduciblePolynomials.finiteFieldIrreducibleViaModularComposition(Poly poly)
Tests whether
poly is irreducible over the finite field |
static <T extends IUnivariatePolynomial<T>> |
UnivariateGCD.HalfGCD(T a,
T b)
Half-GCD algorithm.
|
static <Poly extends IUnivariatePolynomial<Poly>> |
IrreduciblePolynomials.irreducibleQ(Poly poly)
Tests whether
poly is irreducible |
static <T extends IUnivariatePolynomial<T>> |
UnivariateSquareFreeFactorization.isSquareFree(T poly)
Returns
true if poly is square-free and false otherwise |
static <Poly extends IUnivariatePolynomial<Poly>> |
DiophantineEquations.monicExtendedEuclid(Poly a,
Poly b)
runs xgcd for coprime polynomials ensuring that gcd is 1 (not another constant)
|
static <T extends IUnivariatePolynomial<T>> |
UnivariatePolynomialArithmetic.polyAddMod(T m1,
T m2,
T polyModulus,
boolean copy)
Returns the remainder of the sum
(m1 + m2) and polyModulus. |
static <T extends IUnivariatePolynomial<T>> |
UnivariatePolynomialArithmetic.polyAddMod(T m1,
T m2,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod,
boolean copy)
Returns the remainder of the sum
(m1 + m2) and polyModulus using fast algorithm for
pre-conditioned modulus. |
static <T extends IUnivariatePolynomial<T>> |
UnivariatePolynomialArithmetic.polyMod(T dividend,
T polyModulus,
boolean copy)
Returns the remainder of
dividend and polyModulus. |
static <T extends IUnivariatePolynomial<T>> |
UnivariatePolynomialArithmetic.polyMod(T dividend,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod,
boolean copy)
Returns the remainder of
dividend and polyModulus using fast algorithm for pre-conditioned
modulus. |
static <T extends IUnivariatePolynomial<T>> |
UnivariatePolynomialArithmetic.polyMultiplyMod(T m1,
T m2,
T polyModulus,
boolean copy)
Returns the remainder of the product
(m1 * m2) and polyModulus. |
static <T extends IUnivariatePolynomial<T>> |
UnivariatePolynomialArithmetic.polyMultiplyMod(T m1,
T m2,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod,
boolean copy)
Returns the remainder of the product
(m1 * m2) and polyModulus using fast algorithm for
pre-conditioned modulus. |
static <T extends IUnivariatePolynomial<T>> |
UnivariatePolynomialArithmetic.polyNegateMod(T m1,
T polyModulus,
boolean copy)
Returns the remainder of the negated poly
-m1 and polyModulus. |
static <T extends IUnivariatePolynomial<T>> |
UnivariatePolynomialArithmetic.polyNegateMod(T m1,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod,
boolean copy)
Returns the remainder of the negated poly
-m1 and polyModulus using fast algorithm for
pre-conditioned modulus. |
static <T extends IUnivariatePolynomial<T>> |
UnivariateGCD.PolynomialExtendedGCD(T a,
T b)
Computes
[gcd(a,b), s, t] such that s * a + t * b = gcd(a, b). |
static <T extends IUnivariatePolynomial<T>> |
UnivariateGCD.PolynomialFirstBezoutCoefficient(T a,
T b)
Returns array of
[gcd(a,b), s] such that s * a + t * b = gcd(a, b) |
static <T extends IUnivariatePolynomial<T>> |
UnivariateGCD.PolynomialGCD(Iterable<T> polynomials)
Returns GCD of a list of polynomials.
|
static <T extends IUnivariatePolynomial<T>> |
UnivariateGCD.PolynomialGCD(T... polynomials)
Returns GCD of a list of polynomials.
|
static <T extends IUnivariatePolynomial<T>> |
UnivariateGCD.PolynomialGCD(T a,
T b)
Calculates the GCD of two polynomials.
|
static <T extends IUnivariatePolynomial<T>> |
UnivariatePolynomialArithmetic.polyPow(T base,
long exponent,
boolean copy)
Returns
base in a power of non-negative exponent |
static <T extends IUnivariatePolynomial<T>> |
ModularComposition.polyPowers(T poly,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod,
int nIterations)
Returns
poly^{i} mod polyModulus for i in [0...nIterations] |
static <T extends IUnivariatePolynomial<T>> |
UnivariatePolynomialArithmetic.polyPowMod(T base,
BigInteger exponent,
T polyModulus,
boolean copy)
Returns
base in a power of non-negative exponent modulo polyModulus |
static <T extends IUnivariatePolynomial<T>> |
UnivariatePolynomialArithmetic.polyPowMod(T base,
BigInteger exponent,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod,
boolean copy)
Returns
base in a power of non-negative exponent modulo polyModulus |
static <T extends IUnivariatePolynomial<T>> |
UnivariatePolynomialArithmetic.polyPowMod(T base,
long exponent,
T polyModulus,
boolean copy)
Returns
base in a power of non-negative exponent modulo polyModulus |
static <T extends IUnivariatePolynomial<T>> |
UnivariatePolynomialArithmetic.polyPowMod(T base,
long exponent,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod,
boolean copy)
Returns
base in a power of non-negative exponent modulo polyModulus |
static <T extends IUnivariatePolynomial<T>> |
UnivariatePolynomialArithmetic.polySubtractMod(T m1,
T m2,
T polyModulus,
boolean copy)
Returns the remainder of the difference
(m1 - m2) and polyModulus. |
static <T extends IUnivariatePolynomial<T>> |
UnivariatePolynomialArithmetic.polySubtractMod(T m1,
T m2,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod,
boolean copy)
Returns the remainder of the difference
(m1 - m2) and polyModulus using fast algorithm for
pre-conditioned modulus. |
static <T extends IUnivariatePolynomial<T>> |
ModularComposition.powModulusMod(T poly,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod,
ArrayList<T> xPowers)
Returns
poly^modulus mod polyModulus using precomputed monomial powers x^{i*modulus} mod
polyModulus for i in [0...degree(poly)] |
static <Poly extends IUnivariatePolynomial<Poly>> |
UnivariateDivision.pseudoDivideAndRemainder(Poly dividend,
Poly divider,
boolean copy)
Returns quotient and remainder of
dividend and divider using pseudo division. |
static <Poly extends IUnivariatePolynomial<Poly>> |
UnivariateDivision.quotient(Poly dividend,
Poly divider,
boolean copy)
Returns quotient
dividend/ divider or null if exact division o |
static <Poly extends IUnivariatePolynomial<Poly>> |
IrreduciblePolynomials.randomIrreduciblePolynomial(Poly factory,
int degree,
org.apache.commons.math3.random.RandomGenerator rnd)
Generated random irreducible polynomial of degree
degree |
static <Poly extends IUnivariatePolynomial<Poly>> |
RandomUnivariatePolynomials.randomPoly(Poly factory,
int degree,
org.apache.commons.math3.random.RandomGenerator rnd)
Creates random polynomial of specified
degree. |
static <Poly extends IUnivariatePolynomial<Poly>> |
UnivariateDivision.remainder(Poly dividend,
Poly divider,
boolean copy)
Returns remainder of
dividend and divider. |
static <Poly extends IUnivariatePolynomial<Poly>> |
UnivariateDivision.remainderFast(Poly dividend,
Poly divider,
UnivariateDivision.InverseModMonomial<Poly> invMod,
boolean copy)
Fast remainder using Newton's iteration with switch to classical remainder for small polynomials.
|
static <T extends IUnivariatePolynomial<T>> |
UnivariateDivision.remainderMonomial(T dividend,
int xDegree,
boolean copy)
Returns the remainder of
dividend and monomial x^xDegree |
static <Poly extends IUnivariatePolynomial<Poly>> |
UnivariateResultants.ResultantAsPoly(Poly a,
Poly b)
Computes resultant of two polynomials and returns the result as a constant poly
|
static <T extends IUnivariatePolynomial<T>> |
UnivariateSquareFreeFactorization.SquareFreeFactorization(T poly)
Performs square-free factorization of a
poly. |
static <Poly extends IUnivariatePolynomial<Poly>> |
UnivariateSquareFreeFactorization.SquareFreeFactorizationMusser(Poly poly)
Performs square-free factorization of a
poly using Musser's algorithm (both zero and non-zero
characteristic of coefficient ring allowed). |
static <Poly extends IUnivariatePolynomial<Poly>> |
UnivariateSquareFreeFactorization.SquareFreeFactorizationMusserZeroCharacteristics(Poly poly)
Performs square-free factorization of a poly which coefficient ring has zero characteristic using Musser's
algorithm.
|
static <Poly extends IUnivariatePolynomial<Poly>> |
UnivariateSquareFreeFactorization.SquareFreeFactorizationYunZeroCharacteristics(Poly poly)
Performs square-free factorization of a
poly which coefficient ring has zero characteristic using Yun's
algorithm. |
static <T extends IUnivariatePolynomial<T>> |
UnivariateSquareFreeFactorization.SquareFreePart(T poly)
Returns square-free part of the
poly |
static <T extends IUnivariatePolynomial<T>> |
ModularComposition.xPowers(T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod)
Returns
x^{i*modulus} mod polyModulus for i in [0...degree], where degree is polyModulus degree. |
| Modifier and Type | Method and Description |
|---|---|
static <Poly extends IUnivariatePolynomial<Poly>> |
UnivariateDivision.divideAndRemainder(Poly dividend,
Poly divider,
boolean copy)
Returns
{quotient, remainder} of dividend and divider or null if the division is
not possible. |
static <Poly extends IUnivariatePolynomial<Poly>> |
UnivariateDivision.divideAndRemainderFast(Poly dividend,
Poly divider,
UnivariateDivision.InverseModMonomial<Poly> invMod,
boolean copy)
Returns
{quotient, remainder} of dividend and divider |
static <Poly extends IUnivariatePolynomial<Poly>> |
UnivariateDivision.divideAndRemainderFast0(Poly dividend,
Poly divider,
UnivariateDivision.InverseModMonomial<Poly> invRevMod,
boolean copy)
fast division implementation
|
static <T extends IUnivariatePolynomial<T>> |
UnivariateGCD.EuclidFirstBezoutCoefficient(T a,
T b)
Returns array of
[gcd(a,b), s] such that s * a + t * b = gcd(a, b) |
static <T extends IUnivariatePolynomial<T>> |
UnivariateGCD.ExtendedEuclidGCD(T a,
T b)
Runs extended Euclidean algorithm to compute
[gcd(a,b), s, t] such that s * a + t * b = gcd(a,
b). |
static <T extends IUnivariatePolynomial<T>> |
UnivariateGCD.ExtendedHalfGCD(T a,
T b)
Runs extended Half-GCD algorithm to compute
[gcd(a,b), s, t] such that s * a + t * b = gcd(a, b). |
static <Poly extends IUnivariatePolynomial<Poly>> |
DiophantineEquations.monicExtendedEuclid(Poly a,
Poly b)
runs xgcd for coprime polynomials ensuring that gcd is 1 (not another constant)
|
static <T extends IUnivariatePolynomial<T>> |
UnivariateGCD.PolynomialExtendedGCD(T a,
T b)
Computes
[gcd(a,b), s, t] such that s * a + t * b = gcd(a, b). |
static <T extends IUnivariatePolynomial<T>> |
UnivariateGCD.PolynomialFirstBezoutCoefficient(T a,
T b)
Returns array of
[gcd(a,b), s] such that s * a + t * b = gcd(a, b) |
static <Poly extends IUnivariatePolynomial<Poly>> |
UnivariateDivision.pseudoDivideAndRemainder(Poly dividend,
Poly divider,
boolean copy)
Returns quotient and remainder of
dividend and divider using pseudo division. |
Poly[] |
DiophantineEquations.DiophantineSolver.solve(Poly rhs) |
| Modifier and Type | Method and Description |
|---|---|
static <T extends IUnivariatePolynomial<T>> |
UnivariateGCD.PolynomialGCD(T... polynomials)
Returns GCD of a list of polynomials.
|
| Constructor and Description |
|---|
DiophantineSolver(Poly[] factors) |
Copyright © 2022. All rights reserved.