Uses of Interface
cc.redberry.rings.poly.univar.IUnivariatePolynomial
-
Packages that use IUnivariatePolynomial Package Description cc.redberry.rings cc.redberry.rings.io cc.redberry.rings.poly cc.redberry.rings.poly.multivar cc.redberry.rings.poly.univar -
-
Uses of IUnivariatePolynomial in cc.redberry.rings
Methods in cc.redberry.rings with type parameters of type IUnivariatePolynomial Modifier and Type Method Description static <Poly extends IUnivariatePolynomial<Poly>>
AlgebraicNumberField<Poly>Rings. AlgebraicNumberField(Poly minimalPoly)
Algebraic number field generated by the specified minimal polynomialstatic <Poly extends IUnivariatePolynomial<Poly>>
FiniteField<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>>
MultipleFieldExtension<Term,mPoly,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>>
Poly[]RationalReconstruction. reconstruct(Poly n, Poly modulus, int numeratorBound, int denominatorBound)
Performs a rational number reconstruction.static <uPoly extends IUnivariatePolynomial<uPoly>>
SimpleFieldExtension<uPoly>Rings. SimpleFieldExtension(uPoly minimalPolynomial)
Returns a simple field extension generated by given minimal polynomialstatic <Term extends AMonomial<Term>,mPoly extends AMultivariatePolynomial<Term,mPoly>,sPoly extends IUnivariatePolynomial<sPoly>>
MultipleFieldExtension<Term,mPoly,sPoly>Rings. SplittingField(sPoly polynomial)
Splitting field of a given polynomial.static <uPoly extends IUnivariatePolynomial<uPoly>>
SimpleFieldExtension<uPoly>Rings. UnivariateQuotientRing(uPoly modulus)
Deprecated.static <Poly extends IUnivariatePolynomial<Poly>>
UnivariateRing<Poly>Rings. UnivariateRing(Poly factory)
Ring of univariate polynomials with specified factoryMethods in cc.redberry.rings that return IUnivariatePolynomial Modifier and Type Method Description static <Poly extends IUnivariatePolynomial<Poly>>
Poly[]RationalReconstruction. reconstruct(Poly n, Poly modulus, int numeratorBound, int denominatorBound)
Performs a rational number reconstruction.Methods in cc.redberry.rings with parameters of type IUnivariatePolynomial Modifier and Type Method Description static <Term extends AMonomial<Term>,mPoly extends AMultivariatePolynomial<Term,mPoly>,sPoly extends IUnivariatePolynomial<sPoly>>
MultipleFieldExtension<Term,mPoly,sPoly>Rings. MultipleFieldExtension(sPoly... minimalPolynomials)
Multiple field extension generated by given algebraic elements represented by their minimal polynomials (not tested that they are irreducible) -
Uses of IUnivariatePolynomial in cc.redberry.rings.io
Methods in cc.redberry.rings.io with type parameters of type IUnivariatePolynomial Modifier and Type Method Description static <Term extends AMonomial<Term>,mPoly extends AMultivariatePolynomial<Term,mPoly>,sPoly extends IUnivariatePolynomial<sPoly>>
Coder<mPoly,?,?>Coder. mkMultipleExtensionCoder(MultipleFieldExtension<Term,mPoly,sPoly> field, String... variables)
Create coder for multiple field extensionstatic <Term extends AMonomial<Term>,mPoly extends AMultivariatePolynomial<Term,mPoly>,sPoly extends IUnivariatePolynomial<sPoly>>
Coder<mPoly,?,?>Coder. mkMultipleExtensionCoder(MultipleFieldExtension<Term,mPoly,sPoly> field, Map<String,mPoly> variables)
Create coder for multiple field extensionstatic <Poly extends IUnivariatePolynomial<Poly>>
Coder<Poly,?,?>Coder. mkUnivariateCoder(IPolynomialRing<Poly> ring, String variable)
Create coder for univariate polynomial ringsstatic <Poly extends IUnivariatePolynomial<Poly>>
Coder<Poly,?,?>Coder. mkUnivariateCoder(IPolynomialRing<Poly> ring, Map<String,Poly> variables)
Create coder for univariate polynomial rings -
Uses of IUnivariatePolynomial in cc.redberry.rings.poly
Classes in cc.redberry.rings.poly with type parameters of type IUnivariatePolynomial Modifier and Type Class Description class
AlgebraicNumberField<E extends IUnivariatePolynomial<E>>
Algebraic number fieldF(α)
represented as a simple field extension, for details seeSimpleFieldExtension
.class
FiniteField<E extends IUnivariatePolynomial<E>>
Galois fieldGF(p, q)
.class
MultipleFieldExtension<Term extends AMonomial<Term>,mPoly extends AMultivariatePolynomial<Term,mPoly>,sPoly extends IUnivariatePolynomial<sPoly>>
Multiple field extensionF(α_1, α_2, ..., α_N)
.class
SimpleFieldExtension<E extends IUnivariatePolynomial<E>>
A simple field extensionF(α)
represented as a univariate quotient ringF[x]/<m(x)>
wherem(x)
is the minimal polynomial ofα
.class
UnivariateRing<Poly extends IUnivariatePolynomial<Poly>>
Ring of univariate polynomials.Methods in cc.redberry.rings.poly with type parameters of type IUnivariatePolynomial Modifier and Type Method Description static <Term extends AMonomial<Term>,mPoly extends AMultivariatePolynomial<Term,mPoly>,sPoly extends IUnivariatePolynomial<sPoly>>
MultipleFieldExtension<Term,mPoly,sPoly>MultipleFieldExtension. mkMultipleExtension(SimpleFieldExtension<sPoly> ext)
static <Term extends AMonomial<Term>,mPoly extends AMultivariatePolynomial<Term,mPoly>,sPoly extends IUnivariatePolynomial<sPoly>>
MultipleFieldExtension<Term,mPoly,sPoly>MultipleFieldExtension. mkMultipleExtension(sPoly a)
static <Term extends AMonomial<Term>,mPoly extends AMultivariatePolynomial<Term,mPoly>,sPoly extends IUnivariatePolynomial<sPoly>>
MultipleFieldExtension<Term,mPoly,sPoly>MultipleFieldExtension. mkMultipleExtension(sPoly... minimalPolynomials)
Creates multiple field extensionF(α_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<Term,mPoly,sPoly>MultipleFieldExtension. mkSplittingField(sPoly poly)
Constructs splitting field for a given polynomial.static <T extends IUnivariatePolynomial<T>>
T[]PolynomialMethods. PolynomialExtendedGCD(T a, T b)
Computes[gcd(a,b), s, t]
such thats * a + t * b = gcd(a, b)
.Methods in cc.redberry.rings.poly that return IUnivariatePolynomial Modifier and Type Method Description E[]
SimpleFieldExtension. createArray(int length)
E[][]
SimpleFieldExtension. createArray2d(int length)
E[][]
SimpleFieldExtension. createArray2d(int m, int n)
E[]
AlgebraicNumberField. divideAndRemainder(E a, E b)
E[]
FiniteField. 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 elementMultipleFieldExtension.getPrimitiveElement()
static <T extends IUnivariatePolynomial<T>>
T[]PolynomialMethods. PolynomialExtendedGCD(T a, T b)
Computes[gcd(a,b), s, t]
such thats * a + t * b = gcd(a, b)
.Methods in cc.redberry.rings.poly with parameters of type IUnivariatePolynomial Modifier and Type Method Description static <Term extends AMonomial<Term>,mPoly extends AMultivariatePolynomial<Term,mPoly>,sPoly extends IUnivariatePolynomial<sPoly>>
MultipleFieldExtension<Term,mPoly,sPoly>MultipleFieldExtension. mkMultipleExtension(sPoly... minimalPolynomials)
Creates multiple field extensionF(α_1, α_2, ..., α_i)
whereα_i
are specified by their minimal polynomials over F.Constructors in cc.redberry.rings.poly with parameters of type IUnivariatePolynomial Constructor Description MultipleFieldExtension(MultipleFieldExtension<Term,mPoly,sPoly>[] tower, UnivariatePolynomial<mPoly>[] minimalPolynomialsOfGenerators, mPoly primitiveElement, sPoly[] generatorsReps, SimpleFieldExtension<sPoly> simpleExtension)
-
Uses of IUnivariatePolynomial in cc.redberry.rings.poly.multivar
Methods in cc.redberry.rings.poly.multivar with type parameters of type IUnivariatePolynomial Modifier and Type Method Description static <Term extends AMonomial<Term>,Poly extends AMultivariatePolynomial<Term,Poly>,uPoly extends IUnivariatePolynomial<uPoly>>
voidHenselLifting. 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>>
sPolyAMultivariatePolynomial. composition(Ring<sPoly> uRing, sPoly... values)
Substitutes given polynomials instead of variables of this (that isthis(values_1, ..., values_N)
)<sPoly extends IUnivariatePolynomial<sPoly>>
sPolyAMultivariatePolynomial. composition(sPoly... values)
Substitutes given polynomials instead of variables of this (that isthis(values_1, ..., values_N)
)static <Term extends AMonomial<Term>,Poly extends AMultivariatePolynomial<Term,Poly>,uPoly extends IUnivariatePolynomial<uPoly>>
UnivariatePolynomial<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 evaluationMethods in cc.redberry.rings.poly.multivar that return IUnivariatePolynomial Modifier and Type Method 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.Methods in cc.redberry.rings.poly.multivar that return types with arguments of type IUnivariatePolynomial Modifier and Type Method Description abstract MultivariatePolynomial<? extends IUnivariatePolynomial>
AMultivariatePolynomial. asOverUnivariate(int variable)
Converts this to a multivariate polynomial with coefficients being univariate polynomials overvariable
abstract MultivariatePolynomial<? extends IUnivariatePolynomial>
AMultivariatePolynomial. asOverUnivariateEliminate(int variable)
Converts this to a multivariate polynomial with coefficients being univariate polynomials overvariable
, the resulting polynomial have (nVariable - 1) multivariate variables (specifiedvariable
is eliminated)Methods in cc.redberry.rings.poly.multivar with parameters of type IUnivariatePolynomial Modifier and Type Method Description static <Term extends AMonomial<Term>,Poly extends AMultivariatePolynomial<Term,Poly>>
PolyAMultivariatePolynomial. asMultivariate(IUnivariatePolynomial poly, int nVariables, int variable, Comparator<DegreeVector> ordering)
Converts univariate polynomial to multivariate.<sPoly extends IUnivariatePolynomial<sPoly>>
sPolyAMultivariatePolynomial. composition(Ring<sPoly> uRing, sPoly... values)
Substitutes given polynomials instead of variables of this (that isthis(values_1, ..., values_N)
)<sPoly extends IUnivariatePolynomial<sPoly>>
sPolyAMultivariatePolynomial. composition(sPoly... values)
Substitutes given polynomials instead of variables of this (that isthis(values_1, ..., values_N)
)static long
MultivariatePolynomialZp64. evaluateDenseRecursiveForm(IUnivariatePolynomial recForm, long[] values)
Evaluates polynomial given in a dense recursive form at a given pointsstatic MultivariatePolynomialZp64
MultivariatePolynomialZp64. fromDenseRecursiveForm(IUnivariatePolynomial recForm, int nVariables, Comparator<DegreeVector> ordering)
Converts poly from a recursive univariate representation.static MultivariatePolynomialZp64
MultivariatePolynomialZp64. fromDenseRecursiveForm(IUnivariatePolynomial recForm, Comparator<DegreeVector> ordering)
Converts poly from a recursive univariate representation. -
Uses of IUnivariatePolynomial in cc.redberry.rings.poly.univar
Classes in cc.redberry.rings.poly.univar with type parameters of type IUnivariatePolynomial Modifier and Type Class 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>>
Holdspoly^(-1) mod x^i
static class
UnivariateResultants.APolynomialRemainderSequence<Poly extends IUnivariatePolynomial<Poly>>
Polynomial remainder sequence (PRS).Classes in cc.redberry.rings.poly.univar that implement IUnivariatePolynomial Modifier and Type Class 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 byMachineArithmetic.MAX_SUPPORTED_MODULUS_BITS
.Fields in cc.redberry.rings.poly.univar declared as IUnivariatePolynomial Modifier and Type Field Description Poly
UnivariateResultants.APolynomialRemainderSequence. a
Initial polynomialsprotected PolyZp
HenselLifting.QuadraticLiftAbstract. aCoFactor
xgcd coefficientsprotected PolyZp
HenselLifting.QuadraticLiftAbstract. aCoFactor
xgcd coefficientsprotected PolyZp
HenselLifting.QuadraticLiftAbstract. aFactor
Two factors of the initial Z[x] polyprotected PolyZp
HenselLifting.QuadraticLiftAbstract. aFactor
Two factors of the initial Z[x] polyPoly
UnivariateResultants.APolynomialRemainderSequence. b
Initial polynomialsprotected PolyZp
HenselLifting.QuadraticLiftAbstract. bCoFactor
xgcd coefficientsprotected PolyZp
HenselLifting.QuadraticLiftAbstract. bCoFactor
xgcd coefficientsprotected PolyZp
HenselLifting.QuadraticLiftAbstract. bFactor
Two factors of the initial Z[x] polyprotected PolyZp
HenselLifting.QuadraticLiftAbstract. bFactor
Two factors of the initial Z[x] polyMethods in cc.redberry.rings.poly.univar with type parameters of type IUnivariatePolynomial Modifier and Type Method Description static <Poly extends IUnivariatePolynomial<Poly>>
PolynomialFactorDecomposition<Poly>EqualDegreeFactorization. CantorZassenhaus(Poly input, int d)
Plain Cantor-Zassenhaus algorithm implementationstatic <T extends IUnivariatePolynomial<T>>
TModularComposition. composition(T poly, T point, T polyModulus)
Returns modular compositionpoly(point) mod polyModulus
.static <T extends IUnivariatePolynomial<T>>
TModularComposition. composition(T poly, T point, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod)
Returns modular compositionpoly(point) mod polyModulus
.static <T extends IUnivariatePolynomial<T>>
TModularComposition. compositionBrentKung(T poly, ArrayList<T> pointPowers, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, int tBrentKung)
Returns modular compositionpoly(point) mod polyModulus
calculated using Brent & Kung algorithm for modular composition.static <T extends IUnivariatePolynomial<T>>
TModularComposition. compositionBrentKung(T poly, T point, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod)
Returns modular compositionpoly(point) mod polyModulus
calculated using Brent & Kung algorithm for modular composition.static <T extends IUnivariatePolynomial<T>>
TUnivariatePolynomialArithmetic. createMonomialMod(long exponent, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod)
Createsx^exponent mod polyModulus
.static <T extends IUnivariatePolynomial<T>>
TUnivariatePolynomialArithmetic. createMonomialMod(BigInteger exponent, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod)
Createsx^exponent mod polyModulus
.static <Poly extends IUnivariatePolynomial<Poly>>
PolyUnivariateResultants. DiscriminantAsPoly(Poly a)
Computes discriminant of polynomial and returns the result as a constant polystatic <Poly extends IUnivariatePolynomial<Poly>>
PolynomialFactorDecomposition<Poly>DistinctDegreeFactorization. DistinctDegreeFactorization(Poly poly)
Performs distinct-degree factorization for square-free polynomialpoly
.static <Poly extends IUnivariatePolynomial<Poly>>
PolynomialFactorDecomposition<Poly>DistinctDegreeFactorization. DistinctDegreeFactorizationShoup(Poly poly)
Performs distinct-degree factorization for square-free polynomialpoly
using Victor Shoup's baby step / giant step algorithm.static <Poly extends IUnivariatePolynomial<Poly>>
Poly[]UnivariateDivision. divideAndRemainder(Poly dividend, Poly divider, boolean copy)
Returns{quotient, remainder}
ofdividend
anddivider
ornull
if the division is not possible.static <Poly extends IUnivariatePolynomial<Poly>>
Poly[]UnivariateDivision. divideAndRemainderFast(Poly dividend, Poly divider, UnivariateDivision.InverseModMonomial<Poly> invMod, boolean copy)
Returns{quotient, remainder}
ofdividend
anddivider
static <Poly extends IUnivariatePolynomial<Poly>>
Poly[]UnivariateDivision. divideAndRemainderFast0(Poly dividend, Poly divider, UnivariateDivision.InverseModMonomial<Poly> invRevMod, boolean copy)
fast division implementationstatic <Poly extends IUnivariatePolynomial<Poly>>
PolyUnivariateDivision. divideExact(Poly dividend, Poly divider, boolean copy)
Dividesdividend
bydivider
or throwsArithmeticException
if exact division is not possiblestatic <Poly extends IUnivariatePolynomial<Poly>>
PolyUnivariateDivision. divideOrNull(Poly dividend, Poly divider, boolean copy)
Dividesdividend
bydivider
or returnsnull
if exact division is not possiblestatic <T extends IUnivariatePolynomial<T>>
T[]UnivariateGCD. EuclidFirstBezoutCoefficient(T a, T b)
Returns array of[gcd(a,b), s]
such thats * a + t * b = gcd(a, b)
static <T extends IUnivariatePolynomial<T>>
TUnivariateGCD. EuclidGCD(T a, T b)
Returns the GCD calculated with Euclidean algorithm.static <T extends IUnivariatePolynomial<T>>
T[]UnivariateGCD. ExtendedEuclidGCD(T a, T b)
Runs extended Euclidean algorithm to compute[gcd(a,b), s, t]
such thats * a + t * b = gcd(a, b)
.static <T extends IUnivariatePolynomial<T>>
T[]UnivariateGCD. ExtendedHalfGCD(T a, T b)
Runs extended Half-GCD algorithm to compute[gcd(a,b), s, t]
such thats * a + t * b = gcd(a, b)
.static <Poly extends IUnivariatePolynomial<Poly>>
PolynomialFactorDecomposition<Poly>UnivariateFactorization. Factor(Poly poly)
Factors univariatepoly
.static <Poly extends IUnivariatePolynomial<Poly>>
PolynomialFactorDecomposition<Poly>UnivariateFactorization. FactorInGF(Poly poly)
Factors polynomial over finite fieldstatic <Poly extends IUnivariatePolynomial<Poly>>
PolynomialFactorDecomposition<Poly>UnivariateFactorization. FactorInZ(Poly poly)
Factors polynomial in Z[x].static <T extends IUnivariatePolynomial<T>>
PolynomialFactorDecomposition<T>UnivariateFactorization. FactorSquareFreeInGF(T poly)
Factors square-free polynomial over finite fieldstatic <PolyZ extends IUnivariatePolynomial<PolyZ>>
PolynomialFactorDecomposition<PolyZ>UnivariateFactorization. FactorSquareFreeInZ(PolyZ poly)
static <Poly extends IUnivariatePolynomial<Poly>>
UnivariateDivision.InverseModMonomial<Poly>UnivariateDivision. fastDivisionPreConditioning(Poly divider)
Preparesrev(divider)^(-1) mod x^i
for fast division.static <Poly extends IUnivariatePolynomial<Poly>>
UnivariateDivision.InverseModMonomial<Poly>UnivariateDivision. fastDivisionPreConditioningWithLCCorrection(Poly divider)
Preparesrev(divider)^(-1) mod x^i
for fast division.static <Poly extends IUnivariatePolynomial<Poly>>
booleanIrreduciblePolynomials. finiteFieldIrreducibleBenOr(Poly poly)
Tests whetherpoly
is irreducible over the finite fieldstatic <Poly extends IUnivariatePolynomial<Poly>>
booleanIrreduciblePolynomials. finiteFieldIrreducibleQ(Poly poly)
Tests whetherpoly
is irreducible over the finite fieldstatic <Poly extends IUnivariatePolynomial<Poly>>
booleanIrreduciblePolynomials. finiteFieldIrreducibleViaModularComposition(Poly poly)
Tests whetherpoly
is irreducible over the finite fieldstatic <T extends IUnivariatePolynomial<T>>
TUnivariateGCD. HalfGCD(T a, T b)
Half-GCD algorithm.static <Poly extends IUnivariatePolynomial<Poly>>
booleanIrreduciblePolynomials. irreducibleQ(Poly poly)
Tests whetherpoly
is irreduciblestatic <T extends IUnivariatePolynomial<T>>
booleanUnivariateSquareFreeFactorization. isSquareFree(T poly)
Returnstrue
ifpoly
is square-free andfalse
otherwisestatic <Poly extends IUnivariatePolynomial<Poly>>
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>>
TUnivariatePolynomialArithmetic. polyAddMod(T m1, T m2, T polyModulus, boolean copy)
Returns the remainder of the sum(m1 + m2)
andpolyModulus
.static <T extends IUnivariatePolynomial<T>>
TUnivariatePolynomialArithmetic. polyAddMod(T m1, T m2, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)
Returns the remainder of the sum(m1 + m2)
andpolyModulus
using fast algorithm for pre-conditioned modulus.static <T extends IUnivariatePolynomial<T>>
TUnivariatePolynomialArithmetic. polyMod(T dividend, T polyModulus, boolean copy)
Returns the remainder ofdividend
andpolyModulus
.static <T extends IUnivariatePolynomial<T>>
TUnivariatePolynomialArithmetic. polyMod(T dividend, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)
Returns the remainder ofdividend
andpolyModulus
using fast algorithm for pre-conditioned modulus.static <T extends IUnivariatePolynomial<T>>
TUnivariatePolynomialArithmetic. polyMultiplyMod(T m1, T m2, T polyModulus, boolean copy)
Returns the remainder of the product(m1 * m2)
andpolyModulus
.static <T extends IUnivariatePolynomial<T>>
TUnivariatePolynomialArithmetic. polyMultiplyMod(T m1, T m2, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)
Returns the remainder of the product(m1 * m2)
andpolyModulus
using fast algorithm for pre-conditioned modulus.static <T extends IUnivariatePolynomial<T>>
TUnivariatePolynomialArithmetic. polyNegateMod(T m1, T polyModulus, boolean copy)
Returns the remainder of the negated poly-m1
andpolyModulus
.static <T extends IUnivariatePolynomial<T>>
TUnivariatePolynomialArithmetic. polyNegateMod(T m1, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)
Returns the remainder of the negated poly-m1
andpolyModulus
using fast algorithm for pre-conditioned modulus.static <T extends IUnivariatePolynomial<T>>
T[]UnivariateGCD. PolynomialExtendedGCD(T a, T b)
Computes[gcd(a,b), s, t]
such thats * a + t * b = gcd(a, b)
.static <T extends IUnivariatePolynomial<T>>
T[]UnivariateGCD. PolynomialFirstBezoutCoefficient(T a, T b)
Returns array of[gcd(a,b), s]
such thats * a + t * b = gcd(a, b)
static <T extends IUnivariatePolynomial<T>>
TUnivariateGCD. PolynomialGCD(Iterable<T> polynomials)
Returns GCD of a list of polynomials.static <T extends IUnivariatePolynomial<T>>
TUnivariateGCD. PolynomialGCD(T... polynomials)
Returns GCD of a list of polynomials.static <T extends IUnivariatePolynomial<T>>
TUnivariateGCD. PolynomialGCD(T a, T b)
Calculates the GCD of two polynomials.static <T extends IUnivariatePolynomial<T>>
TUnivariatePolynomialArithmetic. polyPow(T base, long exponent, boolean copy)
Returnsbase
in a power of non-negativeexponent
static <T extends IUnivariatePolynomial<T>>
ArrayList<T>ModularComposition. polyPowers(T poly, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, int nIterations)
Returnspoly^{i} mod polyModulus
for i in[0...nIterations]
static <T extends IUnivariatePolynomial<T>>
TUnivariatePolynomialArithmetic. polyPowMod(T base, long exponent, T polyModulus, boolean copy)
Returnsbase
in a power of non-negativeexponent
modulopolyModulus
static <T extends IUnivariatePolynomial<T>>
TUnivariatePolynomialArithmetic. polyPowMod(T base, long exponent, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)
Returnsbase
in a power of non-negativeexponent
modulopolyModulus
static <T extends IUnivariatePolynomial<T>>
TUnivariatePolynomialArithmetic. polyPowMod(T base, BigInteger exponent, T polyModulus, boolean copy)
Returnsbase
in a power of non-negativeexponent
modulopolyModulus
static <T extends IUnivariatePolynomial<T>>
TUnivariatePolynomialArithmetic. polyPowMod(T base, BigInteger exponent, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)
Returnsbase
in a power of non-negativeexponent
modulopolyModulus
static <T extends IUnivariatePolynomial<T>>
TUnivariatePolynomialArithmetic. polySubtractMod(T m1, T m2, T polyModulus, boolean copy)
Returns the remainder of the difference(m1 - m2)
andpolyModulus
.static <T extends IUnivariatePolynomial<T>>
TUnivariatePolynomialArithmetic. polySubtractMod(T m1, T m2, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)
Returns the remainder of the difference(m1 - m2)
andpolyModulus
using fast algorithm for pre-conditioned modulus.static <T extends IUnivariatePolynomial<T>>
TModularComposition. powModulusMod(T poly, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, ArrayList<T> xPowers)
Returnspoly^modulus mod polyModulus
using precomputed monomial powersx^{i*modulus} mod polyModulus
for i in[0...degree(poly)]
static <Poly extends IUnivariatePolynomial<Poly>>
Poly[]UnivariateDivision. pseudoDivideAndRemainder(Poly dividend, Poly divider, boolean copy)
Returns quotient and remainder ofdividend
anddivider
using pseudo division.static <Poly extends IUnivariatePolynomial<Poly>>
PolyUnivariateDivision. quotient(Poly dividend, Poly divider, boolean copy)
Returns quotientdividend/ divider
or null if exact division ostatic <Poly extends IUnivariatePolynomial<Poly>>
PolyIrreduciblePolynomials. randomIrreduciblePolynomial(Poly factory, int degree, org.apache.commons.math3.random.RandomGenerator rnd)
Generated random irreducible polynomial of degreedegree
static <Poly extends IUnivariatePolynomial<Poly>>
PolyRandomUnivariatePolynomials. randomPoly(Poly factory, int degree, org.apache.commons.math3.random.RandomGenerator rnd)
Creates random polynomial of specifieddegree
.static <Poly extends IUnivariatePolynomial<Poly>>
PolyUnivariateDivision. remainder(Poly dividend, Poly divider, boolean copy)
Returns remainder ofdividend
anddivider
.static <Poly extends IUnivariatePolynomial<Poly>>
PolyUnivariateDivision. 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>>
TUnivariateDivision. remainderMonomial(T dividend, int xDegree, boolean copy)
Returns the remainder ofdividend
and monomialx^xDegree
static <Poly extends IUnivariatePolynomial<Poly>>
PolyUnivariateResultants. ResultantAsPoly(Poly a, Poly b)
Computes resultant of two polynomials and returns the result as a constant polystatic <T extends IUnivariatePolynomial<T>>
PolynomialFactorDecomposition<T>UnivariateSquareFreeFactorization. SquareFreeFactorization(T poly)
Performs square-free factorization of apoly
.static <Poly extends IUnivariatePolynomial<Poly>>
PolynomialFactorDecomposition<Poly>UnivariateSquareFreeFactorization. SquareFreeFactorizationMusser(Poly poly)
Performs square-free factorization of apoly
using Musser's algorithm (both zero and non-zero characteristic of coefficient ring allowed).static <Poly extends IUnivariatePolynomial<Poly>>
PolynomialFactorDecomposition<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>>
PolynomialFactorDecomposition<Poly>UnivariateSquareFreeFactorization. SquareFreeFactorizationYunZeroCharacteristics(Poly poly)
Performs square-free factorization of apoly
which coefficient ring has zero characteristic using Yun's algorithm.static <T extends IUnivariatePolynomial<T>>
TUnivariateSquareFreeFactorization. SquareFreePart(T poly)
Returns square-free part of thepoly
static <T extends IUnivariatePolynomial<T>>
ArrayList<T>ModularComposition. xPowers(T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod)
Returnsx^{i*modulus} mod polyModulus
for i in[0...degree]
, wheredegree
ispolyModulus
degree.Methods in cc.redberry.rings.poly.univar that return IUnivariatePolynomial Modifier and Type Method Description static <Poly extends IUnivariatePolynomial<Poly>>
Poly[]UnivariateDivision. divideAndRemainder(Poly dividend, Poly divider, boolean copy)
Returns{quotient, remainder}
ofdividend
anddivider
ornull
if the division is not possible.static <Poly extends IUnivariatePolynomial<Poly>>
Poly[]UnivariateDivision. divideAndRemainderFast(Poly dividend, Poly divider, UnivariateDivision.InverseModMonomial<Poly> invMod, boolean copy)
Returns{quotient, remainder}
ofdividend
anddivider
static <Poly extends IUnivariatePolynomial<Poly>>
Poly[]UnivariateDivision. divideAndRemainderFast0(Poly dividend, Poly divider, UnivariateDivision.InverseModMonomial<Poly> invRevMod, boolean copy)
fast division implementationstatic <T extends IUnivariatePolynomial<T>>
T[]UnivariateGCD. EuclidFirstBezoutCoefficient(T a, T b)
Returns array of[gcd(a,b), s]
such thats * a + t * b = gcd(a, b)
static <T extends IUnivariatePolynomial<T>>
T[]UnivariateGCD. ExtendedEuclidGCD(T a, T b)
Runs extended Euclidean algorithm to compute[gcd(a,b), s, t]
such thats * a + t * b = gcd(a, b)
.static <T extends IUnivariatePolynomial<T>>
T[]UnivariateGCD. ExtendedHalfGCD(T a, T b)
Runs extended Half-GCD algorithm to compute[gcd(a,b), s, t]
such thats * a + t * b = gcd(a, b)
.static <Poly extends IUnivariatePolynomial<Poly>>
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>>
T[]UnivariateGCD. PolynomialExtendedGCD(T a, T b)
Computes[gcd(a,b), s, t]
such thats * a + t * b = gcd(a, b)
.static <T extends IUnivariatePolynomial<T>>
T[]UnivariateGCD. PolynomialFirstBezoutCoefficient(T a, T b)
Returns array of[gcd(a,b), s]
such thats * a + t * b = gcd(a, b)
static <Poly extends IUnivariatePolynomial<Poly>>
Poly[]UnivariateDivision. pseudoDivideAndRemainder(Poly dividend, Poly divider, boolean copy)
Returns quotient and remainder ofdividend
anddivider
using pseudo division.Poly[]
DiophantineEquations.DiophantineSolver. solve(Poly rhs)
Methods in cc.redberry.rings.poly.univar with parameters of type IUnivariatePolynomial Modifier and Type Method Description static <T extends IUnivariatePolynomial<T>>
TUnivariateGCD. PolynomialGCD(T... polynomials)
Returns GCD of a list of polynomials.Constructors in cc.redberry.rings.poly.univar with parameters of type IUnivariatePolynomial Constructor Description DiophantineSolver(Poly[] factors)
-