public final class MultivariatePolynomial<E> extends AMultivariatePolynomial<Monomial<E>,MultivariatePolynomial<E>>
| Modifier and Type | Class and Description |
|---|---|
static class |
MultivariatePolynomial.HornerForm<E>
A representation of multivariate polynomial specifically optimized for fast evaluation of given variables
|
static class |
MultivariatePolynomial.PrecomputedPowersHolder<E>
holds an array of precomputed powers
|
AMultivariatePolynomial.PolynomialCollector<Term extends AMonomial<Term>,Poly extends AMultivariatePolynomial<Term,Poly>>| Modifier and Type | Field and Description |
|---|---|
Ring<E> |
ring
The coefficient ring
|
monomialAlgebra, nVariables, ordering| Modifier and Type | Method and Description |
|---|---|
MultivariatePolynomial<E> |
add(E oth)
Adds
oth to this polynomial |
static <E> MultivariatePolynomial<E> |
asMultivariate(UnivariatePolynomial<E> poly,
int nVariables,
int variable,
Comparator<DegreeVector> ordering)
Converts univariate polynomial to multivariate.
|
static <E> MultivariatePolynomial<E> |
asNormalMultivariate(MultivariatePolynomial<MultivariatePolynomial<E>> poly)
Converts multivariate polynomial over multivariate polynomial ring to a multivariate polynomial over coefficient
ring
|
static <E> MultivariatePolynomial<E> |
asNormalMultivariate(MultivariatePolynomial<MultivariatePolynomial<E>> poly,
int[] coefficientVariables,
int[] mainVariables)
Converts multivariate polynomial over multivariate polynomial ring to a multivariate polynomial over coefficient
ring
|
static <E> MultivariatePolynomial<E> |
asNormalMultivariate(MultivariatePolynomial<UnivariatePolynomial<E>> poly,
int variable)
Converts multivariate polynomial over univariate polynomial ring (R[variable][other_variables]) to a multivariate
polynomial over coefficient ring (R[variables])
|
MultivariatePolynomial<MultivariatePolynomial<E>> |
asOverMultivariate(int... variables)
Converts this to a multivariate polynomial with coefficients being multivariate polynomials polynomials over
variables that is polynomial in R[variables][other_variables] |
MultivariatePolynomial<MultivariatePolynomial<E>> |
asOverMultivariateEliminate(int[] variables,
Comparator<DegreeVector> ordering)
Converts this to a multivariate polynomial with coefficients being multivariate polynomials polynomials over
variables that is polynomial in R[variables][other_variables] |
MultivariatePolynomial<UnivariatePolynomial<E>> |
asOverUnivariate(int variable)
Converts this to a multivariate polynomial with coefficients being univariate polynomials over
variable |
MultivariatePolynomial<UnivariatePolynomial<E>> |
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) |
static MultivariatePolynomialZp64 |
asOverZp64(MultivariatePolynomial<BigInteger> poly)
Converts multivariate polynomial over BigIntegers to multivariate polynomial over machine modular integers
|
static MultivariatePolynomialZp64 |
asOverZp64(MultivariatePolynomial<BigInteger> poly,
IntegersZp64 ring)
Converts multivariate polynomial over BigIntegers to multivariate polynomial over machine modular integers
|
static MultivariatePolynomial<BigInteger> |
asPolyZ(MultivariatePolynomial<BigInteger> poly,
boolean copy)
Returns Z[X] polynomial formed from the coefficients of the poly.
|
static MultivariatePolynomial<BigInteger> |
asPolyZSymmetric(MultivariatePolynomial<BigInteger> poly)
Converts Zp[x] polynomial to Z[x] polynomial formed from the coefficients of this represented in symmetric
modular form (
-modulus/2 <= cfx <= modulus/2). |
UnivariatePolynomial<E> |
asUnivariate()
Converts this to univariate polynomial or throws exception if conversion is impossible (more than one variable
have non zero exponents)
|
E |
cc()
Returns the constant coefficient of this polynomial.
|
MultivariatePolynomial<E> |
ccAsPoly()
Returns the constant coefficient as a constant poly
|
MultivariatePolynomial<E> |
clone()
Deep copy of this
|
BigInteger |
coefficientRingCardinality()
Returns cardinality of the coefficient ring of this poly
|
BigInteger |
coefficientRingCharacteristic()
Returns characteristic of the coefficient ring of this poly
|
BigInteger |
coefficientRingPerfectPowerBase()
Returns
base so that coefficientRingCardinality() == base^exponent or null if cardinality is not
finite |
BigInteger |
coefficientRingPerfectPowerExponent()
Returns
exponent so that coefficientRingCardinality() == base^exponent or null if cardinality is
not finite |
String |
coefficientRingToString(IStringifier<MultivariatePolynomial<E>> stringifier)
String representation of the coefficient ring of this
|
Iterable<E> |
coefficients()
Returns iterable over polynomial coefficients
|
E[] |
coefficientsArray()
Returns array of polynomial coefficients
|
int |
compareTo(MultivariatePolynomial<E> oth) |
E |
content()
Returns the content of this polynomial.
|
MultivariatePolynomial<E> |
contentAsPoly()
Returns the content of this (gcd of coefficients) as a constant poly
|
UnivariatePolynomial<E> |
contentUnivariate(int variable)
Gives the content of this considered as R[variable][other_variables]
|
static <E> MultivariatePolynomial<E> |
create(int nVariables,
Ring<E> ring,
Comparator<DegreeVector> ordering,
Iterable<Monomial<E>> terms)
Creates multivariate polynomial from a list of monomial terms
|
static <E> MultivariatePolynomial<E> |
create(int nVariables,
Ring<E> ring,
Comparator<DegreeVector> ordering,
Monomial<E>... terms)
Creates multivariate polynomial from a list of monomial terms
|
MultivariatePolynomial<E>[] |
createArray(int length)
overcome Java generics...
|
MultivariatePolynomial<E>[][] |
createArray2d(int length)
overcome Java generics...
|
MultivariatePolynomial<E>[][] |
createArray2d(int length1,
int length2)
overcome Java generics...
|
MultivariatePolynomial<E> |
createConstant(E val)
Creates constant polynomial with specified value
|
MultivariatePolynomial<E> |
createConstantFromTerm(Monomial<E> monomial)
Creates multivariate polynomial over the same ring as this with the single constant element taken from given
monomial
|
MultivariatePolynomial<E> |
createLinear(int variable,
E cc,
E lc)
Creates linear polynomial of the form
cc + lc * variable |
MultivariatePolynomial<E> |
createOne()
Returns the new instance of unit polynomial (with the same coefficient ring)
|
MultivariatePolynomial<E> |
createZero()
Returns the new instance of zero polynomial (with the same coefficient ring)
|
MultivariatePolynomial<E> |
decrement()
Subtracts 1 from this
|
MultivariatePolynomial<E> |
derivative(int variable,
int order)
Gives partial derivative of specified
order with respect to specified variable (new instance created) |
MultivariatePolynomial<E> |
divideByLC(MultivariatePolynomial<E> other)
Divides this polynomial by the leading coefficient of
other or returns null (causing loss of
internal data) if some of the elements can't be exactly divided by the other.lc(). |
MultivariatePolynomial<E> |
divideExact(E factor)
Divides this polynomial by a
factor or throws exception if exact division is not possible |
MultivariatePolynomial<E> |
divideOrNull(E factor)
Divides this polynomial by a
factor or returns null (causing loss of internal data) if some of
the elements can't be exactly divided by the factor. |
MultivariatePolynomial<E> |
divideOrNull(Monomial<E> monomial)
Divides this polynomial by a
monomial or returns null (causing loss of internal data) if some of
the elements can't be exactly divided by the monomial. |
MultivariatePolynomial<E> |
eliminate(int[] variables,
E[] values)
Returns a copy of this with
values substituted for variables |
MultivariatePolynomial<E> |
eliminate(int variable,
E value)
Substitutes
value for variable and eliminates variable from the list of variables so that
the resulting polynomial has result.nVariables = this.nVariables - 1. |
MultivariatePolynomial<E> |
eliminate(int variable,
long value)
Substitutes
value for variable and eliminates variable from the list of variables so that
the resulting polynomial has result.nVariables = this.nVariables - 1. |
E |
evaluate(E... values)
Evaluates this polynomial at specified points
|
MultivariatePolynomial<E> |
evaluate(int[] variables,
E[] values)
Returns a copy of this with
values substituted for variables. |
MultivariatePolynomial<E>[] |
evaluate(int variable,
E... values)
Evaluates this polynomial at specified points
|
MultivariatePolynomial<E> |
evaluate(int variable,
E value)
Returns a copy of this with
value substituted for variable. |
MultivariatePolynomial<E> |
evaluate(int variable,
long value)
Returns a copy of this with
value substituted for variable. |
MultivariatePolynomial<E> |
evaluateAtRandom(int variable,
org.apache.commons.math3.random.RandomGenerator rnd)
Evaluates
poly at random point |
MultivariatePolynomial<E> |
evaluateAtRandomPreservingSkeleton(int variable,
org.apache.commons.math3.random.RandomGenerator rnd)
Evaluates
poly at random point chosen in such way that the skeleton of evaluated version is the same as
of the original poly with respect to all except variable variables |
static <E> E |
evaluateDenseRecursiveForm(UnivariatePolynomial recForm,
int nVariables,
E[] values)
Evaluates polynomial given in a dense recursive form at a given points
|
static <E> E |
evaluateSparseRecursiveForm(AMultivariatePolynomial recForm,
int nVariables,
E[] values)
Evaluates polynomial given in a sparse recursive form at a given points
|
static <E> MultivariatePolynomial<E> |
fromDenseRecursiveForm(UnivariatePolynomial recForm,
int nVariables,
Comparator<DegreeVector> ordering)
Converts poly from a recursive univariate representation.
|
static <E> MultivariatePolynomial<E> |
fromSparseRecursiveForm(AMultivariatePolynomial recForm,
int nVariables,
Comparator<DegreeVector> ordering)
Converts poly from a recursive univariate representation.
|
MultivariatePolynomial.HornerForm |
getHornerForm(int[] evaluationVariables)
Gives data structure for fast Horner-like sparse evaluation of this multivariate polynomial
|
MultivariatePolynomial<E> |
increment()
Adds 1 to this
|
boolean |
isConstant()
Returns
true if this polynomial has only constant term |
boolean |
isMonic()
Returns
true if this polynomial is monic |
boolean |
isOne()
Returns
true if this is one |
boolean |
isOverField()
Returns whether the coefficient ring of this polynomial is a field
|
boolean |
isOverFiniteField()
Returns whether the coefficient ring of this polynomial is a finite field
|
boolean |
isOverPerfectPower()
Returns whether the
coefficientRingCardinality() is a perfect power |
boolean |
isOverZ()
Returns whether the coefficient ring of this polynomial is Z
|
boolean |
isUnitCC()
Returns true if constant term is equal to one
|
E |
lc()
Returns the leading coefficient of this polynomial that is coefficient of the largest term according to the
ordering.
|
E |
lc(Comparator<DegreeVector> ordering)
Returns the leading coefficient of this polynomial with respect to specified ordering
|
MultivariatePolynomial<E> |
lcAsPoly()
Returns the leading coefficient as a constant poly
|
MultivariatePolynomial<E> |
lcAsPoly(Comparator<DegreeVector> ordering)
Returns the leading coefficient with respect to specified ordering as a constant poly
|
MultivariatePolynomialZp64 |
mapCoefficients(IntegersZp64 newDomain,
ToLongFunction<E> mapper)
Maps coefficients of this using specified mapping function
|
<T> MultivariatePolynomial<T> |
mapCoefficients(Ring<T> newRing,
Function<E,T> mapper)
Maps coefficients of this using specified mapping function
|
<T> MultivariatePolynomial<T> |
mapCoefficientsAsPolys(Ring<T> ring,
Function<MultivariatePolynomial<E>,T> mapper) |
<T> MultivariatePolynomial<T> |
mapTerms(Ring<T> newRing,
Function<Monomial<E>,Monomial<T>> mapper)
Maps terms of this using specified mapping function
|
E |
maxAbsCoefficient()
Returns max absolute coefficient
|
MultivariatePolynomial.PrecomputedPowersHolder<E> |
mkPrecomputedPowers(E[] values) |
MultivariatePolynomial.PrecomputedPowersHolder<E> |
mkPrecomputedPowers(int[] variables,
E[] values) |
MultivariatePolynomial.PrecomputedPowersHolder<E> |
mkPrecomputedPowers(int variable,
E value) |
static <E> MultivariatePolynomial.PrecomputedPowersHolder<E> |
mkPrecomputedPowers(int nVariables,
Ring<E> ring,
int[] variables,
E[] values) |
MultivariatePolynomial<E> |
monic()
Makes this polynomial monic if possible, if not -- destroys this and returns null
|
MultivariatePolynomial<E> |
monic(Comparator<DegreeVector> ordering)
Make this poly monic considering leading term with respect to given ordering
|
MultivariatePolynomial<E> |
monic(Comparator<DegreeVector> ordering,
E factor)
Sets
this to its monic part (with respect to given ordering) multiplied by the given factor; |
MultivariatePolynomial<E> |
monic(E factor)
Sets
this to its monic part multiplied by the factor modulo modulus (that is monic(modulus).multiply(factor) ). |
MultivariatePolynomial<E> |
monicWithLC(Comparator<DegreeVector> ordering,
MultivariatePolynomial<E> other)
Sets
this to its monic part multiplied by the leading coefficient of other with respect to given
ordering |
MultivariatePolynomial<E> |
monicWithLC(MultivariatePolynomial<E> other)
Sets
this to its monic part multiplied by the leading coefficient of other; |
MultivariatePolynomial<E> |
multiply(E factor)
Multiplies
this by the factor |
MultivariatePolynomial<E> |
multiply(long factor)
Multiplies this by
factor |
MultivariatePolynomial<E> |
multiply(Monomial<E> monomial)
Multiplies
this by the monomial |
MultivariatePolynomial<E> |
multiply(MultivariatePolynomial<E> oth)
Multiplies this by
oth |
MultivariatePolynomial<E> |
multiplyByBigInteger(BigInteger factor)
Multiplies this by
factor |
MultivariatePolynomial<E> |
multiplyByLC(MultivariatePolynomial<E> other)
Multiply this by the leading coefficient of
other |
static <E> MultivariatePolynomial<E> |
one(int nVariables,
Ring<E> ring,
Comparator<DegreeVector> ordering)
Creates unit polynomial.
|
static MultivariatePolynomial<BigInteger> |
parse(String string)
Deprecated.
use #parse(string, ring, ordering, variables)
|
static MultivariatePolynomial<BigInteger> |
parse(String string,
Comparator<DegreeVector> ordering)
Deprecated.
use #parse(string, ring, ordering, variables)
|
static MultivariatePolynomial<BigInteger> |
parse(String string,
Comparator<DegreeVector> ordering,
String... variables)
Parse multivariate Z[X] polynomial from string.
|
static <E> MultivariatePolynomial<E> |
parse(String string,
Ring<E> ring)
Deprecated.
use #parse(string, ring, ordering, variables)
|
static <E> MultivariatePolynomial<E> |
parse(String string,
Ring<E> ring,
Comparator<DegreeVector> ordering)
Deprecated.
use #parse(string, ring, ordering, variables)
|
static <E> MultivariatePolynomial<E> |
parse(String string,
Ring<E> ring,
Comparator<DegreeVector> ordering,
String... variables)
Parse multivariate polynomial from string.
|
static <E> MultivariatePolynomial<E> |
parse(String string,
Ring<E> ring,
String... variables)
Parse multivariate polynomial from string.
|
static MultivariatePolynomial<BigInteger> |
parse(String string,
String... variables)
Parse multivariate Z[X] polynomial from string.
|
MultivariatePolynomial<E> |
parsePoly(String string)
Deprecated.
|
MultivariatePolynomial<E> |
primitivePart()
Reduces poly to its primitive part (primitive part will always have positive l.c.)
|
MultivariatePolynomial<E> |
primitivePart(int variable)
Gives primitive part of this considered as R[variable][other_variables]
|
MultivariatePolynomial<E> |
primitivePartSameSign()
Reduces poly to its primitive part, so that primitive part will have the same signum as the initial poly
|
protected void |
release()
release caches
|
boolean |
sameCoefficientRingWith(MultivariatePolynomial<E> oth)
Returns whether
oth and this have the same coefficient ring |
MultivariatePolynomial<E> |
seriesCoefficient(int variable,
int order)
Gives (unevaluated) coefficient of Taylor series expansion for specified variable that is
derivative(poly,
variable, order) / order! , where the derivative is formal derivative and calculated with arithmetic performed
in Z ring (to overcome possible zeros in Zp). |
MultivariatePolynomial<E> |
setCoefficientRingFrom(MultivariatePolynomial<E> poly)
Set the coefficient ring from specified poly
|
MultivariatePolynomial<E> |
setLC(E val)
Sets the leading coefficient to the specified value
|
MultivariatePolynomial<E> |
setRing(Ring<E> newRing)
Returns a copy of this with coefficient reduced to a
newRing |
MultivariatePolynomial<E> |
setRingUnsafe(Ring<E> newRing)
internal API
|
MultivariatePolynomial<E> |
shift(int[] variables,
E[] shifts)
Returns a copy of this with
variables -> variables + shifts |
MultivariatePolynomial<E> |
shift(int variable,
E shift)
Returns a copy of this with
variable -> variable + shift |
MultivariatePolynomial<E> |
shift(int variable,
long shift)
Returns a copy of this with
variable -> variable + shift |
int |
signumOfLC()
Gives signum of the leading coefficient
|
MultivariatePolynomial<E> |
square()
Squares
this |
Stream<E> |
stream()
Returns a stream of coefficients of this
|
MultivariatePolynomial<E> |
substitute(int variable,
MultivariatePolynomial<E> poly)
Returns a copy of this with
poly substituted for variable. |
MultivariatePolynomial<E> |
subtract(E oth)
Subtracts
oth from this polynomial |
UnivariatePolynomial |
toDenseRecursiveForm()
Gives a recursive univariate representation of this poly.
|
AMultivariatePolynomial |
toSparseRecursiveForm()
Gives a recursive sparse univariate representation of this poly.
|
String |
toString(IStringifier<MultivariatePolynomial<E>> stringifier)
convert this to string with the use of stringifier
|
static <E> MultivariatePolynomial<E> |
zero(int nVariables,
Ring<E> ring,
Comparator<DegreeVector> ordering)
Creates zero polynomial.
|
add, add, add, add, ascendingIterator, asMultivariate, asMultivariate, asMultivariate, asOverMultivariateEliminate, asOverPoly, asUnivariate, asUnivariateEliminate, coefficientOf, coefficientOf, collection, composition, composition, composition, composition, composition, composition, content, contentExcept, create, create, create, create, createMonomial, degree, degree, degree, degreeMax, degrees, degrees, degreesRef, degreeSum, derivative, derivative, descendingIterator, divideDegreeVectorOrNull, dropCoefficientOf, dropSelectVariables, dropVariable, dropVariables, ecart, equals, evaluateAtZero, evaluateAtZero, first, getSkeleton, getSkeleton, getSkeletonDrop, getSkeletonExcept, hashCode, homogenize, insertVariable, insertVariable, isEffectiveUnivariate, isHomogeneous, isLinearExactly, isLinearOrConstant, isMonomial, isVariable, isZero, isZeroCC, iterator, joinNewVariable, joinNewVariables, last, lc, lt, lt, ltAsPoly, mapVariables, monomialContent, mt, multidegree, multiplyByDegreeVector, multiplyByMonomial, negate, nUsedVariables, put, renameVariables, renameVariables, renameVariables, sameSkeletonExceptQ, sameSkeletonQ, sameSkeletonQ, set, setAllCoefficientsToUnit, setLC, setNVariables, setOrdering, size, skeletonHashCode, sparsity, sparsity2, subtract, subtract, subtract, subtractLt, swapVariables, toArray, toString, totalDegree, toZero, univariateVariablefinalize, getClass, notify, notifyAll, wait, wait, waitadd, assertSameCoefficientRingWith, canonical, coefficientRingToString, copy, createArray, createArray, createArray, createConstant, monicExact, multiply, multiply, setCoefficientRingFromOptional, subtract, toPositiveLC, toStringforEach, spliteratorpublic static <E> MultivariatePolynomial<E> create(int nVariables, Ring<E> ring, Comparator<DegreeVector> ordering, Iterable<Monomial<E>> terms)
ring - the ringordering - term orderingterms - the monomial termspublic static <E> MultivariatePolynomial<E> create(int nVariables, Ring<E> ring, Comparator<DegreeVector> ordering, Monomial<E>... terms)
ring - the ringordering - term orderingterms - the monomial termspublic static <E> MultivariatePolynomial<E> zero(int nVariables, Ring<E> ring, Comparator<DegreeVector> ordering)
nVariables - number of variablesring - the ringordering - the orderingpublic static <E> MultivariatePolynomial<E> one(int nVariables, Ring<E> ring, Comparator<DegreeVector> ordering)
nVariables - number of variablesring - the ringordering - the orderingpublic static MultivariatePolynomial<BigInteger> parse(String string, String... variables)
string - the stringvariables - string variables that should be taken into account. For examples: parse("a", LEX) and
parse("a", LEX, "a", "b") although give the same mathematical expressions are differ,
since the first one is considered as Z[x], while the second as Z[x1,x2]@Deprecated public static MultivariatePolynomial<BigInteger> parse(String string)
string - the stringpublic static <E> MultivariatePolynomial<E> parse(String string, Ring<E> ring, String... variables)
string - the stringring - the ringvariables - string variables that should be taken into account. For examples: parse("a", LEX) and
parse("a", LEX, "a", "b") although give the same mathematical expressions are differ,
since the first one is considered as Z[x], while the second as Z[x1,x2]@Deprecated public static <E> MultivariatePolynomial<E> parse(String string, Ring<E> ring)
string - the stringring - the ringpublic static MultivariatePolynomial<BigInteger> parse(String string, Comparator<DegreeVector> ordering, String... variables)
string - the stringordering - monomial ordervariables - string variables that should be taken into account. For examples: parse("a", LEX) and
parse("a", LEX, "a", "b") although give the same mathematical expressions are differ,
since the first one is considered as Z[x], while the second as Z[x1,x2]@Deprecated public static MultivariatePolynomial<BigInteger> parse(String string, Comparator<DegreeVector> ordering)
string - the stringordering - monomial orderpublic static <E> MultivariatePolynomial<E> parse(String string, Ring<E> ring, Comparator<DegreeVector> ordering, String... variables)
string - the stringring - the ringordering - monomial ordervariables - string variables that should be taken into account. For examples: parse("a", LEX) and
parse("a", LEX, "a", "b") although give the same mathematical expressions are different,
since the first one is considered as Z[a], while the second as Z[a,b]@Deprecated public static <E> MultivariatePolynomial<E> parse(String string, Ring<E> ring, Comparator<DegreeVector> ordering)
string - the stringring - the ringordering - monomial orderpublic static MultivariatePolynomialZp64 asOverZp64(MultivariatePolynomial<BigInteger> poly)
poly - the polynomialIllegalArgumentException - if poly.ring is not ZpArithmeticException - if some of coefficients will not exactly fit in a long.public static MultivariatePolynomialZp64 asOverZp64(MultivariatePolynomial<BigInteger> poly, IntegersZp64 ring)
poly - the polynomialring - Zp64 ringIllegalArgumentException - if poly.ring is not ZpArithmeticException - if some of coefficients will not exactly fit in a long.public static <E> MultivariatePolynomial<E> asMultivariate(UnivariatePolynomial<E> poly, int nVariables, int variable, Comparator<DegreeVector> ordering)
poly - univariate polynomialnVariables - number of variables in the resultvariable - variable that will be used as a primary variableordering - monomial orderpublic UnivariatePolynomial<E> asUnivariate()
AMultivariatePolynomialasUnivariate in class AMultivariatePolynomial<Monomial<E>,MultivariatePolynomial<E>>public MultivariatePolynomial<UnivariatePolynomial<E>> asOverUnivariate(int variable)
AMultivariatePolynomialvariableasOverUnivariate in class AMultivariatePolynomial<Monomial<E>,MultivariatePolynomial<E>>variable - variablevariablepublic MultivariatePolynomial<UnivariatePolynomial<E>> asOverUnivariateEliminate(int variable)
AMultivariatePolynomialvariable,
the resulting polynomial have (nVariable - 1) multivariate variables (specified variable is eliminated)asOverUnivariateEliminate in class AMultivariatePolynomial<Monomial<E>,MultivariatePolynomial<E>>variable - the variablevariable, the
resulting polynomial have (nVariable - 1) multivariate variablespublic MultivariatePolynomial<MultivariatePolynomial<E>> asOverMultivariate(int... variables)
AMultivariatePolynomialvariables that is polynomial in R[variables][other_variables]asOverMultivariate in class AMultivariatePolynomial<Monomial<E>,MultivariatePolynomial<E>>variables - the variables to separatevariables that is polynomial in R[variables][other_variables]public MultivariatePolynomial<MultivariatePolynomial<E>> asOverMultivariateEliminate(int[] variables, Comparator<DegreeVector> ordering)
AMultivariatePolynomialvariables that is polynomial in R[variables][other_variables]asOverMultivariateEliminate in class AMultivariatePolynomial<Monomial<E>,MultivariatePolynomial<E>>variables - the variables to separateordering - monomial order to use for resultvariables that is polynomial in R[variables][other_variables]public static <E> MultivariatePolynomial<E> asNormalMultivariate(MultivariatePolynomial<UnivariatePolynomial<E>> poly, int variable)
poly - the polynomialvariable - the variable to insertpublic static <E> MultivariatePolynomial<E> asNormalMultivariate(MultivariatePolynomial<MultivariatePolynomial<E>> poly)
poly - the polynomialpublic static <E> MultivariatePolynomial<E> asNormalMultivariate(MultivariatePolynomial<MultivariatePolynomial<E>> poly, int[] coefficientVariables, int[] mainVariables)
poly - the polynomialpublic static MultivariatePolynomial<BigInteger> asPolyZ(MultivariatePolynomial<BigInteger> poly, boolean copy)
poly - the polynomialcopy - whether to copy the internal datapublic static MultivariatePolynomial<BigInteger> asPolyZSymmetric(MultivariatePolynomial<BigInteger> poly)
-modulus/2 <= cfx <= modulus/2).poly - Zp polynomial-modulus/2 <=
cfx <= modulus/2).IllegalArgumentException - is poly.ring is not a IntegersZppublic MultivariatePolynomial<E> contentAsPoly()
IPolynomialpublic MultivariatePolynomial<E> lcAsPoly()
IPolynomialpublic MultivariatePolynomial<E> lcAsPoly(Comparator<DegreeVector> ordering)
AMultivariatePolynomiallcAsPoly in class AMultivariatePolynomial<Monomial<E>,MultivariatePolynomial<E>>public MultivariatePolynomial<E> ccAsPoly()
IPolynomialpublic boolean isOverField()
IPolynomialpublic boolean isOverFiniteField()
IPolynomialpublic boolean isOverZ()
IPolynomialpublic BigInteger coefficientRingCardinality()
IPolynomialpublic BigInteger coefficientRingCharacteristic()
IPolynomialpublic boolean isOverPerfectPower()
IPolynomialcoefficientRingCardinality() is a perfect powercoefficientRingCardinality() is a perfect powerpublic BigInteger coefficientRingPerfectPowerBase()
IPolynomialbase so that coefficientRingCardinality() == base^exponent or null if cardinality is not
finitebase so that coefficientRingCardinality() == base^exponent or null if cardinality is not
finitepublic BigInteger coefficientRingPerfectPowerExponent()
IPolynomialexponent so that coefficientRingCardinality() == base^exponent or null if cardinality is
not finiteexponent so that coefficientRingCardinality() == base^exponent or null if cardinality is
not finitepublic MultivariatePolynomial<E>[] createArray(int length)
IPolynomialpublic MultivariatePolynomial<E>[][] createArray2d(int length)
IPolynomialpublic MultivariatePolynomial<E>[][] createArray2d(int length1, int length2)
IPolynomialpublic boolean sameCoefficientRingWith(MultivariatePolynomial<E> oth)
IPolynomialoth and this have the same coefficient ringoth - other polynomialpublic MultivariatePolynomial<E> setCoefficientRingFrom(MultivariatePolynomial<E> poly)
IPolynomialpoly - the polynomialpolyprotected void release()
release in class AMultivariatePolynomial<Monomial<E>,MultivariatePolynomial<E>>public MultivariatePolynomial<E> setRing(Ring<E> newRing)
newRingnewRing - the new ringnewRingpublic MultivariatePolynomial<E> setRingUnsafe(Ring<E> newRing)
public MultivariatePolynomial<E> createConstant(E val)
val - valuepublic MultivariatePolynomial<E> createConstantFromTerm(Monomial<E> monomial)
AMultivariatePolynomialcreateConstantFromTerm in class AMultivariatePolynomial<Monomial<E>,MultivariatePolynomial<E>>monomial - the monomialpublic MultivariatePolynomial<E> createZero()
IPolynomialpublic MultivariatePolynomial<E> createOne()
IPolynomialpublic final MultivariatePolynomial<E> createLinear(int variable, E cc, E lc)
cc + lc * variablevariable - the variablecc - the constant coefficientlc - the leading coefficientcc + lc * variablepublic boolean isMonic()
IPolynomialtrue if this polynomial is monicthis is monicpublic int signumOfLC()
IPolynomialpublic boolean isOne()
IPolynomialtrue if this is onethis is onepublic boolean isUnitCC()
IPolynomialpublic boolean isConstant()
IPolynomialtrue if this polynomial has only constant termthis is constantpublic E maxAbsCoefficient()
public E lc()
public E lc(Comparator<DegreeVector> ordering)
public MultivariatePolynomial<E> setLC(E val)
val - new value for the lcpublic E cc()
public E content()
public Iterable<E> coefficients()
public E[] coefficientsArray()
public MultivariatePolynomial<E> primitivePart(int variable)
AMultivariatePolynomialprimitivePart in class AMultivariatePolynomial<Monomial<E>,MultivariatePolynomial<E>>variable - the variablepublic UnivariatePolynomial<E> contentUnivariate(int variable)
AMultivariatePolynomialcontentUnivariate in class AMultivariatePolynomial<Monomial<E>,MultivariatePolynomial<E>>variable - the variablepublic MultivariatePolynomial<E> primitivePart()
IPolynomialpublic MultivariatePolynomial<E> primitivePartSameSign()
IPolynomialpublic MultivariatePolynomial<E> divideByLC(MultivariatePolynomial<E> other)
IPolynomialother or returns null (causing loss of
internal data) if some of the elements can't be exactly divided by the other.lc(). NOTE: if null
is returned, the content of this is destroyed.other - the polynomialthis divided by the other.lc() or null if exact division is not possiblepublic MultivariatePolynomial<E> divideOrNull(E factor)
factor or returns null (causing loss of internal data) if some of
the elements can't be exactly divided by the factor. NOTE: if null is returned, the content of
this is destroyed.factor - the factorthis divided by the factor or nullpublic MultivariatePolynomial<E> divideExact(E factor)
factor or throws exception if exact division is not possiblefactor - the factorthis divided by the factorArithmeticException - if exact division is not possiblepublic MultivariatePolynomial<E> divideOrNull(Monomial<E> monomial)
AMultivariatePolynomialmonomial or returns null (causing loss of internal data) if some of
the elements can't be exactly divided by the monomial. NOTE: if null is returned, the content of
this is destroyed.divideOrNull in class AMultivariatePolynomial<Monomial<E>,MultivariatePolynomial<E>>monomial - monomial degreesthis divided by the factor * monomial or nullpublic MultivariatePolynomial<E> monic()
public MultivariatePolynomial<E> monic(Comparator<DegreeVector> ordering)
AMultivariatePolynomialmonic in class AMultivariatePolynomial<Monomial<E>,MultivariatePolynomial<E>>public MultivariatePolynomial<E> monic(E factor)
this to its monic part multiplied by the factor modulo modulus (that is monic(modulus).multiply(factor) ).factor - the factorthispublic MultivariatePolynomial<E> monic(Comparator<DegreeVector> ordering, E factor)
this to its monic part (with respect to given ordering) multiplied by the given factor;public MultivariatePolynomial<E> monicWithLC(MultivariatePolynomial<E> other)
IPolynomialthis to its monic part multiplied by the leading coefficient of other;other - other polynomialother or null if exact division by the
reduced leading coefficient is not possiblepublic MultivariatePolynomial<E> monicWithLC(Comparator<DegreeVector> ordering, MultivariatePolynomial<E> other)
AMultivariatePolynomialthis to its monic part multiplied by the leading coefficient of other with respect to given
orderingmonicWithLC in class AMultivariatePolynomial<Monomial<E>,MultivariatePolynomial<E>>public UnivariatePolynomial toDenseRecursiveForm()
public static <E> MultivariatePolynomial<E> fromDenseRecursiveForm(UnivariatePolynomial recForm, int nVariables, Comparator<DegreeVector> ordering)
recForm - recursive univariate representationnVariables - number of variables in multivariate polynomialordering - monomial orderpublic static <E> E evaluateDenseRecursiveForm(UnivariatePolynomial recForm, int nVariables, E[] values)
public AMultivariatePolynomial toSparseRecursiveForm()
public static <E> MultivariatePolynomial<E> fromSparseRecursiveForm(AMultivariatePolynomial recForm, int nVariables, Comparator<DegreeVector> ordering)
recForm - recursive univariate representationnVariables - number of variables in multivariate polynomialordering - monomial orderpublic static <E> E evaluateSparseRecursiveForm(AMultivariatePolynomial recForm, int nVariables, E[] values)
public MultivariatePolynomial.HornerForm getHornerForm(int[] evaluationVariables)
evaluationVariables - variables which will be substitutedpublic MultivariatePolynomial<E> evaluate(int variable, E value)
value substituted for variable.variable - the variablevalue - the valuevalue substituted for variable but still with the same
AMultivariatePolynomial.nVariables (though the effective number of variables is nVariables - 1, compare to
eliminate(int, Object))eliminate(int, Object)public MultivariatePolynomial<E> evaluate(int[] variables, E[] values)
values substituted for variables.variables - the variablesvalues - the valuesvalue substituted for variable but still with the same
AMultivariatePolynomial.nVariables (though the effective number of variables is nVariables - 1, compare to
eliminate(int, Object))eliminate(int, Object)public MultivariatePolynomial<E>[] evaluate(int variable, E... values)
public MultivariatePolynomial<E> evaluate(int variable, long value)
value substituted for variable.variable - the variablevalue - the valuevalue substituted for variable but still with the same
AMultivariatePolynomial.nVariables (though the effective number of variables is nVariables - 1, compare to
eliminate(int, long))eliminate(int, long)public MultivariatePolynomial<E> eliminate(int variable, E value)
value for variable and eliminates variable from the list of variables so that
the resulting polynomial has result.nVariables = this.nVariables - 1.variable - the variablevalue - the valuevalue substituted for variable and nVariables
= nVariables - 1)evaluate(int, Object)public MultivariatePolynomial<E> eliminate(int variable, long value)
value for variable and eliminates variable from the list of variables so that
the resulting polynomial has result.nVariables = this.nVariables - 1.variable - the variablevalue - the valuevalue substituted for variable and nVariables
= nVariables - 1)evaluate(int, long)public MultivariatePolynomial<E> eliminate(int[] variables, E[] values)
values substituted for variablesvariables - the variablesvalues - the valuesvalue substituted for variable but still with the same
AMultivariatePolynomial.nVariables (though the effective number of variables is nVariables - 1, compare to
eliminate(int, long))public MultivariatePolynomial.PrecomputedPowersHolder<E> mkPrecomputedPowers(int variable, E value)
public MultivariatePolynomial.PrecomputedPowersHolder<E> mkPrecomputedPowers(int[] variables, E[] values)
public static <E> MultivariatePolynomial.PrecomputedPowersHolder<E> mkPrecomputedPowers(int nVariables, Ring<E> ring, int[] variables, E[] values)
public MultivariatePolynomial.PrecomputedPowersHolder<E> mkPrecomputedPowers(E[] values)
public MultivariatePolynomial<E> substitute(int variable, MultivariatePolynomial<E> poly)
poly substituted for variable.variable - the variablepoly - the replacement for the variablevariable -> polypublic MultivariatePolynomial<E> shift(int variable, long shift)
variable -> variable + shiftvariable - the variableshift - shift amountvariable -> variable + shiftpublic MultivariatePolynomial<E> shift(int variable, E shift)
variable -> variable + shiftvariable - the variableshift - shift amountvariable -> variable + shiftpublic MultivariatePolynomial<E> shift(int[] variables, E[] shifts)
variables -> variables + shiftsvariables - the variablesshifts - the corresponding shiftsvariables -> variables + shiftspublic MultivariatePolynomial<E> add(E oth)
oth to this polynomialoth - other polynomialthis + othpublic MultivariatePolynomial<E> subtract(E oth)
oth from this polynomialoth - other polynomialthis - othpublic MultivariatePolynomial<E> increment()
IPolynomialthis + 1public MultivariatePolynomial<E> decrement()
IPolynomialthis - 1public MultivariatePolynomial<E> multiply(E factor)
this by the factorfactor - the factorfactorpublic MultivariatePolynomial<E> multiplyByLC(MultivariatePolynomial<E> other)
IPolynomialotherother - polynomialpublic MultivariatePolynomial<E> multiply(Monomial<E> monomial)
AMultivariatePolynomialthis by the monomialmultiply in class AMultivariatePolynomial<Monomial<E>,MultivariatePolynomial<E>>monomial - the monomialmonomialpublic MultivariatePolynomial<E> multiply(long factor)
IPolynomialfactorfactor - the factorthis * factorpublic MultivariatePolynomial<E> multiplyByBigInteger(BigInteger factor)
IPolynomialfactorfactor - the factorthis * factorpublic MultivariatePolynomial<E> multiply(MultivariatePolynomial<E> oth)
IPolynomialoth oth - the polynomialthis * oth public MultivariatePolynomial<E> square()
IPolynomialthisthis * thispublic MultivariatePolynomial<E> evaluateAtRandom(int variable, org.apache.commons.math3.random.RandomGenerator rnd)
AMultivariatePolynomialpoly at random pointevaluateAtRandom in class AMultivariatePolynomial<Monomial<E>,MultivariatePolynomial<E>>public MultivariatePolynomial<E> evaluateAtRandomPreservingSkeleton(int variable, org.apache.commons.math3.random.RandomGenerator rnd)
AMultivariatePolynomialpoly at random point chosen in such way that the skeleton of evaluated version is the same as
of the original poly with respect to all except variable variablesevaluateAtRandomPreservingSkeleton in class AMultivariatePolynomial<Monomial<E>,MultivariatePolynomial<E>>public MultivariatePolynomial<E> derivative(int variable, int order)
AMultivariatePolynomialorder with respect to specified variable (new instance created)derivative in class AMultivariatePolynomial<Monomial<E>,MultivariatePolynomial<E>>variable - the variableorder - derivative orderorder with respect to specified variablepublic MultivariatePolynomial<E> seriesCoefficient(int variable, int order)
AMultivariatePolynomialderivative(poly,
variable, order) / order! , where the derivative is formal derivative and calculated with arithmetic performed
in Z ring (to overcome possible zeros in Zp).seriesCoefficient in class AMultivariatePolynomial<Monomial<E>,MultivariatePolynomial<E>>variable - the variableorder - derivative orderderivative(poly, variable, order) / order! , where the derivative is formal derivative and
calculated with arithmetic performed in Z ring (to overcome possible zeros in Zp)public Stream<E> stream()
public <T> MultivariatePolynomial<T> mapTerms(Ring<T> newRing, Function<Monomial<E>,Monomial<T>> mapper)
T - new element typenewRing - the new ringmapper - mappingpublic <T> MultivariatePolynomial<T> mapCoefficients(Ring<T> newRing, Function<E,T> mapper)
T - new element typenewRing - the new ringmapper - mappingpublic MultivariatePolynomialZp64 mapCoefficients(IntegersZp64 newDomain, ToLongFunction<E> mapper)
newDomain - the new ringmapper - mappingpublic <T> MultivariatePolynomial<T> mapCoefficientsAsPolys(Ring<T> ring, Function<MultivariatePolynomial<E>,T> mapper)
mapCoefficientsAsPolys in class AMultivariatePolynomial<Monomial<E>,MultivariatePolynomial<E>>public int compareTo(MultivariatePolynomial<E> oth)
public MultivariatePolynomial<E> clone()
IPolynomialclone in interface IPolynomial<MultivariatePolynomial<E>>clone in class AMultivariatePolynomial<Monomial<E>,MultivariatePolynomial<E>>@Deprecated public MultivariatePolynomial<E> parsePoly(String string)
public String toString(IStringifier<MultivariatePolynomial<E>> stringifier)
Stringifiablepublic String coefficientRingToString(IStringifier<MultivariatePolynomial<E>> stringifier)
IPolynomialCopyright © 2022. All rights reserved.