public final class MultivariatePolynomialZp64 extends AMultivariatePolynomial<MonomialZp64,MultivariatePolynomialZp64>
MachineArithmetic.MAX_SUPPORTED_MODULUS
). For details on polynomial data structure and properties see AMultivariatePolynomial
.AMultivariatePolynomial
,
Serialized FormModifier and Type | Class and Description |
---|---|
static class |
MultivariatePolynomialZp64.HornerFormZp64
A representation of multivariate polynomial specifically optimized for fast evaluation of given variables
|
static class |
MultivariatePolynomialZp64.lPrecomputedPowers
cached powers used to save some time
|
static class |
MultivariatePolynomialZp64.lPrecomputedPowersHolder
holds an array of precomputed powers
|
AMultivariatePolynomial.PolynomialCollector<Term extends AMonomial<Term>,Poly extends AMultivariatePolynomial<Term,Poly>>
Modifier and Type | Field and Description |
---|---|
IntegersZp64 |
ring
The ring.
|
monomialAlgebra, nVariables, ordering
Modifier and Type | Method and Description |
---|---|
MultivariatePolynomialZp64 |
add(long oth)
Adds
oth to this polynomial and returns it |
static MultivariatePolynomialZp64 |
asMultivariate(UnivariatePolynomialZp64 poly,
int nVariables,
int variable,
Comparator<DegreeVector> ordering)
Converts univariate polynomial to multivariate.
|
static MultivariatePolynomialZp64 |
asNormalMultivariate(MultivariatePolynomial<MultivariatePolynomialZp64> poly)
Converts multivariate polynomial over multivariate polynomial ring to a multivariate polynomial over coefficient
ring
|
static MultivariatePolynomialZp64 |
asNormalMultivariate(MultivariatePolynomial<MultivariatePolynomialZp64> poly,
int[] coefficientVariables,
int[] mainVariables)
Converts multivariate polynomial over multivariate polynomial ring to a multivariate polynomial over coefficient
ring
|
static MultivariatePolynomialZp64 |
asNormalMultivariate(MultivariatePolynomial<UnivariatePolynomialZp64> poly,
int variable)
Converts multivariate polynomial over univariate polynomial ring (Zp[variable][other_variables]) to a
multivariate polynomial over coefficient ring (Zp[all_variables])
|
MultivariatePolynomial<MultivariatePolynomialZp64> |
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<MultivariatePolynomialZp64> |
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<UnivariatePolynomialZp64> |
asOverUnivariate(int variable)
Converts this to a multivariate polynomial with coefficients being univariate polynomials over
variable |
MultivariatePolynomial<UnivariatePolynomialZp64> |
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) |
MultivariatePolynomial<BigInteger> |
asPolyZ()
Returns polynomial over Z formed from the coefficients of this
|
MultivariatePolynomial<BigInteger> |
asPolyZSymmetric()
Returns polynomial over Z formed from the coefficients of this represented in symmetric modular form (
-modulus/2 <= cfx <= modulus/2 ). |
UnivariatePolynomialZp64 |
asUnivariate()
Converts this to univariate polynomial or throws exception if conversion is impossible (more than one variable
have non zero exponents)
|
long |
cc()
Returns the constant coefficient of this polynomial.
|
MultivariatePolynomialZp64 |
ccAsPoly()
Returns the constant coefficient as a constant poly
|
MultivariatePolynomialZp64 |
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<MultivariatePolynomialZp64> stringifier)
String representation of the coefficient ring of this
|
long[] |
coefficients()
Returns array of polynomial coefficients
|
int |
compareTo(MultivariatePolynomialZp64 oth) |
long |
content()
Returns the content of this polynomial.
|
MultivariatePolynomialZp64 |
contentAsPoly()
Returns the content of this (gcd of coefficients) as a constant poly
|
UnivariatePolynomialZp64 |
contentUnivariate(int variable)
Gives the content of this considered as R[variable][other_variables]
|
static MultivariatePolynomialZp64 |
create(int nVariables,
IntegersZp64 ring,
Comparator<DegreeVector> ordering,
Iterable<MonomialZp64> terms)
Creates multivariate polynomial from a list of monomial terms
|
static MultivariatePolynomialZp64 |
create(int nVariables,
IntegersZp64 ring,
Comparator<DegreeVector> ordering,
MonomialSet<MonomialZp64> terms)
Creates multivariate polynomial from a set of monomials
|
static MultivariatePolynomialZp64 |
create(int nVariables,
IntegersZp64 ring,
Comparator<DegreeVector> ordering,
MonomialZp64... terms)
Creates multivariate polynomial from a list of monomial terms
|
MultivariatePolynomialZp64[] |
createArray(int length)
overcome Java generics...
|
MultivariatePolynomialZp64[][] |
createArray2d(int length)
overcome Java generics...
|
MultivariatePolynomialZp64[][] |
createArray2d(int length1,
int length2)
overcome Java generics...
|
MultivariatePolynomialZp64 |
createConstant(long val)
Creates constant polynomial with specified value
|
MultivariatePolynomialZp64 |
createConstantFromTerm(MonomialZp64 monomial)
Creates multivariate polynomial over the same ring as this with the single constant element taken from given
monomial
|
MultivariatePolynomialZp64 |
createLinear(int variable,
long cc,
long lc)
Creates linear polynomial of the form
cc + lc * variable |
MultivariatePolynomialZp64 |
createOne()
Returns the new instance of unit polynomial (with the same coefficient ring)
|
MultivariatePolynomialZp64 |
createZero()
Returns the new instance of zero polynomial (with the same coefficient ring)
|
MultivariatePolynomialZp64 |
decrement()
Subtracts 1 from this
|
MultivariatePolynomialZp64 |
derivative(int variable,
int order)
Gives partial derivative of specified
order with respect to specified variable (new instance created) |
MultivariatePolynomialZp64 |
divide(long factor)
Divides this polynomial by a
factor |
MultivariatePolynomialZp64 |
divideByLC(MultivariatePolynomialZp64 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() . |
MultivariatePolynomialZp64 |
divideOrNull(MonomialZp64 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 . |
MultivariatePolynomialZp64 |
eliminate(int[] variables,
long[] values)
Returns a copy of this with
values substituted for variables |
MultivariatePolynomialZp64 |
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 . |
MultivariatePolynomialZp64 |
evaluate(int[] variables,
long[] values)
Returns a copy of this with
values substituted for variables |
MultivariatePolynomialZp64[] |
evaluate(int variable,
long... values)
Evaluates this polynomial at specified points
|
MultivariatePolynomialZp64 |
evaluate(int variable,
long value)
Returns a copy of this with
value substituted for variable |
long |
evaluate(long... values)
Evaluates this polynomial at specified points
|
MultivariatePolynomialZp64 |
evaluateAtRandom(int variable,
org.apache.commons.math3.random.RandomGenerator rnd)
Evaluates
poly at random point |
MultivariatePolynomialZp64 |
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 long |
evaluateDenseRecursiveForm(IUnivariatePolynomial recForm,
long[] values)
Evaluates polynomial given in a dense recursive form at a given points
|
static long |
evaluateSparseRecursiveForm(AMultivariatePolynomial recForm,
long[] values)
Evaluates polynomial given in a sparse recursive form at a given points
|
static MultivariatePolynomialZp64 |
fromDenseRecursiveForm(IUnivariatePolynomial recForm,
Comparator<DegreeVector> ordering)
Converts poly from a recursive univariate representation.
|
static MultivariatePolynomialZp64 |
fromDenseRecursiveForm(IUnivariatePolynomial recForm,
int nVariables,
Comparator<DegreeVector> ordering)
Converts poly from a recursive univariate representation.
|
static MultivariatePolynomialZp64 |
fromSparseRecursiveForm(AMultivariatePolynomial recForm,
Comparator<DegreeVector> ordering)
Converts poly from a sparse recursive univariate representation.
|
static MultivariatePolynomialZp64 |
fromSparseRecursiveForm(AMultivariatePolynomial recForm,
int nVariables,
Comparator<DegreeVector> ordering)
Converts poly from a recursive univariate representation.
|
MultivariatePolynomialZp64.HornerFormZp64 |
getHornerForm(int[] evaluationVariables)
Gives data structure for fast Horner-like sparse evaluation of this multivariate polynomial
|
MultivariatePolynomialZp64 |
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
|
long |
lc()
Returns the leading coefficient of this polynomial that is coefficient of the largest term according to the
ordering.
|
long |
lc(Comparator<DegreeVector> ordering)
Returns the leading coefficient of this polynomial with respect to specified ordering
|
MultivariatePolynomialZp64 |
lcAsPoly()
Returns the leading coefficient as a constant poly
|
MultivariatePolynomialZp64 |
lcAsPoly(Comparator<DegreeVector> ordering)
Returns the leading coefficient with respect to specified ordering as a constant poly
|
<T> MultivariatePolynomial<T> |
mapCoefficients(Ring<T> newRing,
LongFunction<T> mapper)
Maps coefficients of this using specified mapping function
|
<E> MultivariatePolynomial<E> |
mapCoefficientsAsPolys(Ring<E> ring,
Function<MultivariatePolynomialZp64,E> mapper) |
MultivariatePolynomialZp64 |
mapTerms(IntegersZp64 newRing,
Function<MonomialZp64,MonomialZp64> mapper)
Maps terms of this using specified mapping function
|
<T> MultivariatePolynomial<T> |
mapTerms(Ring<T> newRing,
Function<MonomialZp64,Monomial<T>> mapper)
Maps terms of this using specified mapping function
|
MultivariatePolynomialZp64.lPrecomputedPowersHolder |
mkPrecomputedPowers(int[] variables,
long[] values) |
static MultivariatePolynomialZp64.lPrecomputedPowersHolder |
mkPrecomputedPowers(int nVariables,
IntegersZp64 ring,
int[] variables,
long[] values) |
MultivariatePolynomialZp64.lPrecomputedPowersHolder |
mkPrecomputedPowers(int variable,
long value) |
MultivariatePolynomialZp64.lPrecomputedPowersHolder |
mkPrecomputedPowers(long[] values) |
MultivariatePolynomialZp64 |
monic()
Makes this polynomial monic
|
MultivariatePolynomialZp64 |
monic(Comparator<DegreeVector> ordering)
Make this poly monic considering leading term with respect to given ordering
|
MultivariatePolynomialZp64 |
monic(Comparator<DegreeVector> ordering,
long factor)
Sets
this to its monic part (with respect to given ordering) multiplied by the given factor; |
MultivariatePolynomialZp64 |
monic(long factor)
Sets
this to its monic part (with respect to given ordering) multiplied by the given factor; |
MultivariatePolynomialZp64 |
monicWithLC(Comparator<DegreeVector> ordering,
MultivariatePolynomialZp64 other)
Sets
this to its monic part multiplied by the leading coefficient of other with respect to given
ordering |
MultivariatePolynomialZp64 |
monicWithLC(MultivariatePolynomialZp64 other)
Sets
this to its monic part multiplied by the leading coefficient of other ; |
MultivariatePolynomialZp64 |
multiply(long factor)
Multiplies this by
factor |
MultivariatePolynomialZp64 |
multiply(MonomialZp64 monomial)
Multiplies
this by the monomial |
MultivariatePolynomialZp64 |
multiply(MultivariatePolynomialZp64 oth)
Multiplies this by
oth |
MultivariatePolynomialZp64 |
multiplyByBigInteger(BigInteger factor)
Multiplies this by
factor |
MultivariatePolynomialZp64 |
multiplyByLC(MultivariatePolynomialZp64 other)
Multiply this by the leading coefficient of
other |
static MultivariatePolynomialZp64 |
one(int nVariables,
IntegersZp64 ring,
Comparator<DegreeVector> ordering)
Creates unit polynomial.
|
static MultivariatePolynomialZp64 |
parse(String string,
IntegersZp64 ring)
Deprecated.
use #parse(string, ring, ordering, variables)
|
static MultivariatePolynomialZp64 |
parse(String string,
IntegersZp64 ring,
Comparator<DegreeVector> ordering)
Deprecated.
use #parse(string, ring, ordering, variables)
|
static MultivariatePolynomialZp64 |
parse(String string,
IntegersZp64 ring,
Comparator<DegreeVector> ordering,
String... variables)
Parse multivariate polynomial from string.
|
static MultivariatePolynomialZp64 |
parse(String string,
IntegersZp64 ring,
String... variables)
Parse multivariate polynomial from string.
|
MultivariatePolynomialZp64 |
parsePoly(String string)
Deprecated.
|
MultivariatePolynomialZp64 |
primitivePart()
Reduces poly to its primitive part (primitive part will always have positive l.c.)
|
MultivariatePolynomialZp64 |
primitivePart(int variable)
Gives primitive part of this considered as R[variable][other_variables]
|
MultivariatePolynomialZp64 |
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(MultivariatePolynomialZp64 oth)
Returns whether
oth and this have the same coefficient ring |
MultivariatePolynomialZp64 |
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). |
MultivariatePolynomialZp64 |
setCoefficientRingFrom(MultivariatePolynomialZp64 lMonomialTerms)
Set the coefficient ring from specified poly
|
MultivariatePolynomialZp64 |
setLC(long val)
Sets the leading coefficient to the specified value
|
MultivariatePolynomialZp64 |
setRing(IntegersZp64 newDomain)
Switches to another ring specified by
newDomain |
MultivariatePolynomialZp64 |
setRing(long newModulus)
Switches to another ring specified by
newModulus |
<E> MultivariatePolynomial<E> |
setRing(Ring<E> newRing)
Switches to another ring specified by
newRing |
MultivariatePolynomialZp64 |
setRingUnsafe(IntegersZp64 newDomain)
internal API
|
MultivariatePolynomialZp64 |
shift(int[] variables,
long[] shifts)
Substitutes
variable -> variable + shift for each variable from variables array |
MultivariatePolynomialZp64 |
shift(int variable,
long shift)
Returns a copy of this with
variable -> variable + shift |
int |
signumOfLC()
Gives signum of the leading coefficient
|
MultivariatePolynomialZp64 |
square()
Squares
this |
MultivariatePolynomialZp64 |
substitute(int variable,
MultivariatePolynomialZp64 poly)
Returns a copy of this with
poly substituted for variable |
MultivariatePolynomialZp64 |
subtract(long oth)
Subtracts
oth from this polynomial and returns it |
MultivariatePolynomial<BigInteger> |
toBigPoly()
Returns polynomial over Z formed from the coefficients of this
|
IUnivariatePolynomial |
toDenseRecursiveForm()
Gives a recursive univariate representation of this poly.
|
AMultivariatePolynomial |
toSparseRecursiveForm()
Gives a recursive sparse univariate representation of this poly.
|
String |
toString(IStringifier<MultivariatePolynomialZp64> stringifier)
convert this to string with the use of stringifier
|
static MultivariatePolynomialZp64 |
zero(int nVariables,
IntegersZp64 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, 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, univariateVariable
finalize, getClass, notify, notifyAll, wait, wait, wait
add, assertSameCoefficientRingWith, canonical, coefficientRingToString, copy, createArray, createArray, createArray, monicExact, multiply, multiply, setCoefficientRingFromOptional, subtract, toPositiveLC, toString
forEach, spliterator
public final IntegersZp64 ring
public static MultivariatePolynomialZp64 create(int nVariables, IntegersZp64 ring, Comparator<DegreeVector> ordering, MonomialSet<MonomialZp64> terms)
nVariables
- number of variablesring
- the ringordering
- term orderingterms
- the monomialspublic static MultivariatePolynomialZp64 create(int nVariables, IntegersZp64 ring, Comparator<DegreeVector> ordering, Iterable<MonomialZp64> terms)
ring
- the ringordering
- term orderingterms
- the monomial termspublic static MultivariatePolynomialZp64 create(int nVariables, IntegersZp64 ring, Comparator<DegreeVector> ordering, MonomialZp64... terms)
ring
- the ringordering
- term orderingterms
- the monomial termspublic static MultivariatePolynomialZp64 zero(int nVariables, IntegersZp64 ring, Comparator<DegreeVector> ordering)
nVariables
- number of variablesring
- the ringordering
- the orderingpublic static MultivariatePolynomialZp64 one(int nVariables, IntegersZp64 ring, Comparator<DegreeVector> ordering)
nVariables
- number of variablesring
- the ringordering
- the orderingpublic static MultivariatePolynomialZp64 parse(String string, IntegersZp64 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 MultivariatePolynomialZp64 parse(String string, IntegersZp64 ring)
string
- the stringring
- the ringpublic static MultivariatePolynomialZp64 parse(String string, IntegersZp64 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 differ,
since the first one is considered as Z[x], while the second as Z[x1,x2]@Deprecated public static MultivariatePolynomialZp64 parse(String string, IntegersZp64 ring, Comparator<DegreeVector> ordering)
string
- the stringring
- the ringordering
- monomial orderpublic static MultivariatePolynomialZp64 asMultivariate(UnivariatePolynomialZp64 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
- the orderingpublic UnivariatePolynomialZp64 asUnivariate()
AMultivariatePolynomial
asUnivariate
in class AMultivariatePolynomial<MonomialZp64,MultivariatePolynomialZp64>
public MultivariatePolynomial<UnivariatePolynomialZp64> asOverUnivariate(int variable)
AMultivariatePolynomial
variable
asOverUnivariate
in class AMultivariatePolynomial<MonomialZp64,MultivariatePolynomialZp64>
variable
- variablevariable
public MultivariatePolynomial<UnivariatePolynomialZp64> asOverUnivariateEliminate(int variable)
AMultivariatePolynomial
variable
,
the resulting polynomial have (nVariable - 1) multivariate variables (specified variable
is eliminated)asOverUnivariateEliminate
in class AMultivariatePolynomial<MonomialZp64,MultivariatePolynomialZp64>
variable
- the variablevariable
, the
resulting polynomial have (nVariable - 1) multivariate variablespublic MultivariatePolynomial<MultivariatePolynomialZp64> asOverMultivariate(int... variables)
AMultivariatePolynomial
variables
that is polynomial in R[variables][other_variables]asOverMultivariate
in class AMultivariatePolynomial<MonomialZp64,MultivariatePolynomialZp64>
variables
- the variables to separatevariables
that is polynomial in R[variables][other_variables]public MultivariatePolynomial<MultivariatePolynomialZp64> asOverMultivariateEliminate(int[] variables, Comparator<DegreeVector> ordering)
AMultivariatePolynomial
variables
that is polynomial in R[variables][other_variables]asOverMultivariateEliminate
in class AMultivariatePolynomial<MonomialZp64,MultivariatePolynomialZp64>
variables
- the variables to separateordering
- monomial order to use for resultvariables
that is polynomial in R[variables][other_variables]public static MultivariatePolynomialZp64 asNormalMultivariate(MultivariatePolynomial<UnivariatePolynomialZp64> poly, int variable)
poly
- the polynomialvariable
- the variable to insertpublic static MultivariatePolynomialZp64 asNormalMultivariate(MultivariatePolynomial<MultivariatePolynomialZp64> poly)
poly
- the polynomialpublic static MultivariatePolynomialZp64 asNormalMultivariate(MultivariatePolynomial<MultivariatePolynomialZp64> poly, int[] coefficientVariables, int[] mainVariables)
poly
- the polynomialpublic MultivariatePolynomial<BigInteger> asPolyZSymmetric()
-modulus/2 <= cfx <= modulus/2
).-modulus/2 <= cfx <=
modulus/2
).public MultivariatePolynomial<BigInteger> asPolyZ()
public MultivariatePolynomial<BigInteger> toBigPoly()
public MultivariatePolynomialZp64 contentAsPoly()
IPolynomial
public MultivariatePolynomialZp64 lcAsPoly()
IPolynomial
public MultivariatePolynomialZp64 lcAsPoly(Comparator<DegreeVector> ordering)
AMultivariatePolynomial
lcAsPoly
in class AMultivariatePolynomial<MonomialZp64,MultivariatePolynomialZp64>
public MultivariatePolynomialZp64 ccAsPoly()
IPolynomial
public boolean isOverField()
IPolynomial
public boolean isOverFiniteField()
IPolynomial
public boolean isOverZ()
IPolynomial
public BigInteger coefficientRingCardinality()
IPolynomial
public BigInteger coefficientRingCharacteristic()
IPolynomial
public boolean isOverPerfectPower()
IPolynomial
coefficientRingCardinality()
is a perfect powercoefficientRingCardinality()
is a perfect powerpublic BigInteger coefficientRingPerfectPowerBase()
IPolynomial
base
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()
IPolynomial
exponent
so that coefficientRingCardinality() == base^exponent
or null if cardinality is
not finiteexponent
so that coefficientRingCardinality() == base^exponent
or null if cardinality is
not finitepublic MultivariatePolynomialZp64[] createArray(int length)
IPolynomial
public MultivariatePolynomialZp64[][] createArray2d(int length)
IPolynomial
public MultivariatePolynomialZp64[][] createArray2d(int length1, int length2)
IPolynomial
public boolean sameCoefficientRingWith(MultivariatePolynomialZp64 oth)
IPolynomial
oth
and this
have the same coefficient ringoth
- other polynomialpublic MultivariatePolynomialZp64 setCoefficientRingFrom(MultivariatePolynomialZp64 lMonomialTerms)
IPolynomial
lMonomialTerms
- the polynomialpoly
protected void release()
release
in class AMultivariatePolynomial<MonomialZp64,MultivariatePolynomialZp64>
public MultivariatePolynomialZp64 setRing(long newModulus)
newModulus
newModulus
- the new modulusnewModulus
public MultivariatePolynomialZp64 setRing(IntegersZp64 newDomain)
newDomain
newDomain
- the new ringnewDomain
public <E> MultivariatePolynomial<E> setRing(Ring<E> newRing)
newRing
newRing
- the new ringnewRing
public MultivariatePolynomialZp64 setRingUnsafe(IntegersZp64 newDomain)
public MultivariatePolynomialZp64 createConstant(long val)
val
- valuepublic MultivariatePolynomialZp64 createConstantFromTerm(MonomialZp64 monomial)
AMultivariatePolynomial
createConstantFromTerm
in class AMultivariatePolynomial<MonomialZp64,MultivariatePolynomialZp64>
monomial
- the monomialpublic MultivariatePolynomialZp64 createZero()
IPolynomial
public MultivariatePolynomialZp64 createOne()
IPolynomial
public MultivariatePolynomialZp64 createLinear(int variable, long cc, long lc)
cc + lc * variable
variable
- the variablecc
- the constant coefficientlc
- the leading coefficientcc + lc * variable
public boolean isMonic()
IPolynomial
true
if this polynomial is monicthis
is monicpublic int signumOfLC()
IPolynomial
public boolean isOne()
IPolynomial
true
if this is onethis
is onepublic boolean isUnitCC()
IPolynomial
public boolean isConstant()
IPolynomial
true
if this polynomial has only constant termthis
is constantpublic long lc()
public long lc(Comparator<DegreeVector> ordering)
public MultivariatePolynomialZp64 setLC(long val)
val
- new value for the lcpublic long cc()
public long content()
public long[] coefficients()
public MultivariatePolynomialZp64 primitivePart(int variable)
AMultivariatePolynomial
primitivePart
in class AMultivariatePolynomial<MonomialZp64,MultivariatePolynomialZp64>
variable
- the variablepublic UnivariatePolynomialZp64 contentUnivariate(int variable)
AMultivariatePolynomial
contentUnivariate
in class AMultivariatePolynomial<MonomialZp64,MultivariatePolynomialZp64>
variable
- the variablepublic MultivariatePolynomialZp64 primitivePart()
IPolynomial
public MultivariatePolynomialZp64 primitivePartSameSign()
IPolynomial
public MultivariatePolynomialZp64 divideByLC(MultivariatePolynomialZp64 other)
IPolynomial
other
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 MultivariatePolynomialZp64 divide(long factor)
factor
factor
- the factorthis / factor
public MultivariatePolynomialZp64 divideOrNull(MonomialZp64 monomial)
AMultivariatePolynomial
monomial
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<MonomialZp64,MultivariatePolynomialZp64>
monomial
- monomial degreesthis
divided by the factor * monomial
or null
public MultivariatePolynomialZp64 monic()
public MultivariatePolynomialZp64 monic(Comparator<DegreeVector> ordering)
AMultivariatePolynomial
monic
in class AMultivariatePolynomial<MonomialZp64,MultivariatePolynomialZp64>
public MultivariatePolynomialZp64 monic(long factor)
this
to its monic part (with respect to given ordering) multiplied by the given factor;public MultivariatePolynomialZp64 monic(Comparator<DegreeVector> ordering, long factor)
this
to its monic part (with respect to given ordering) multiplied by the given factor;public MultivariatePolynomialZp64 monicWithLC(MultivariatePolynomialZp64 other)
IPolynomial
this
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 MultivariatePolynomialZp64 monicWithLC(Comparator<DegreeVector> ordering, MultivariatePolynomialZp64 other)
AMultivariatePolynomial
this
to its monic part multiplied by the leading coefficient of other
with respect to given
orderingmonicWithLC
in class AMultivariatePolynomial<MonomialZp64,MultivariatePolynomialZp64>
public IUnivariatePolynomial toDenseRecursiveForm()
public static MultivariatePolynomialZp64 fromDenseRecursiveForm(IUnivariatePolynomial recForm, Comparator<DegreeVector> ordering)
recForm
- recursive univariate representationordering
- monomial orderpublic static MultivariatePolynomialZp64 fromDenseRecursiveForm(IUnivariatePolynomial recForm, int nVariables, Comparator<DegreeVector> ordering)
recForm
- recursive univariate representationnVariables
- number of variables in multivariate polynomialordering
- monomial orderpublic static long evaluateDenseRecursiveForm(IUnivariatePolynomial recForm, long[] values)
public AMultivariatePolynomial toSparseRecursiveForm()
public static MultivariatePolynomialZp64 fromSparseRecursiveForm(AMultivariatePolynomial recForm, Comparator<DegreeVector> ordering)
recForm
- recursive univariate representationordering
- monomial orderpublic static MultivariatePolynomialZp64 fromSparseRecursiveForm(AMultivariatePolynomial recForm, int nVariables, Comparator<DegreeVector> ordering)
recForm
- recursive univariate representationnVariables
- number of variables in multivariate polynomialordering
- monomial orderpublic static long evaluateSparseRecursiveForm(AMultivariatePolynomial recForm, long[] values)
public MultivariatePolynomialZp64.HornerFormZp64 getHornerForm(int[] evaluationVariables)
evaluationVariables
- variables which will be substitutedpublic MultivariatePolynomialZp64 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)
)public MultivariatePolynomialZp64 evaluate(int[] variables, long[] 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, long)
)public long evaluate(long... values)
public MultivariatePolynomialZp64[] evaluate(int variable, long... values)
public MultivariatePolynomialZp64 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
)public MultivariatePolynomialZp64 eliminate(int[] variables, long[] 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, long)
)public MultivariatePolynomialZp64.lPrecomputedPowersHolder mkPrecomputedPowers(int variable, long value)
public MultivariatePolynomialZp64.lPrecomputedPowersHolder mkPrecomputedPowers(int[] variables, long[] values)
public static MultivariatePolynomialZp64.lPrecomputedPowersHolder mkPrecomputedPowers(int nVariables, IntegersZp64 ring, int[] variables, long[] values)
public MultivariatePolynomialZp64.lPrecomputedPowersHolder mkPrecomputedPowers(long[] values)
public MultivariatePolynomialZp64 substitute(int variable, MultivariatePolynomialZp64 poly)
poly
substituted for variable
variable
- the variablepoly
- the replacement for the variablevariable -> poly
public MultivariatePolynomialZp64 shift(int variable, long shift)
variable -> variable + shift
variable
- the variableshift
- shift amountvariable -> variable + shift
public MultivariatePolynomialZp64 shift(int[] variables, long[] shifts)
variable -> variable + shift
for each variable from variables
arrayvariables
- the variablesshifts
- the corresponding shiftsvariable -> variable + shift
public MultivariatePolynomialZp64 add(long oth)
oth
to this polynomial and returns itoth
- other polynomialthis + oth
public MultivariatePolynomialZp64 subtract(long oth)
oth
from this polynomial and returns itoth
- other polynomialthis - oth
public MultivariatePolynomialZp64 increment()
IPolynomial
this + 1
public MultivariatePolynomialZp64 decrement()
IPolynomial
this - 1
public MultivariatePolynomialZp64 multiply(long factor)
IPolynomial
factor
factor
- the factorthis * factor
public MultivariatePolynomialZp64 multiplyByLC(MultivariatePolynomialZp64 other)
IPolynomial
other
other
- polynomialpublic MultivariatePolynomialZp64 multiplyByBigInteger(BigInteger factor)
IPolynomial
factor
factor
- the factorthis * factor
public MultivariatePolynomialZp64 multiply(MonomialZp64 monomial)
AMultivariatePolynomial
this
by the monomial
multiply
in class AMultivariatePolynomial<MonomialZp64,MultivariatePolynomialZp64>
monomial
- the monomialmonomial
public MultivariatePolynomialZp64 multiply(MultivariatePolynomialZp64 oth)
IPolynomial
oth
oth
- the polynomialthis * oth
public MultivariatePolynomialZp64 square()
IPolynomial
this
this * this
public MultivariatePolynomialZp64 evaluateAtRandom(int variable, org.apache.commons.math3.random.RandomGenerator rnd)
AMultivariatePolynomial
poly
at random pointevaluateAtRandom
in class AMultivariatePolynomial<MonomialZp64,MultivariatePolynomialZp64>
public MultivariatePolynomialZp64 evaluateAtRandomPreservingSkeleton(int variable, org.apache.commons.math3.random.RandomGenerator rnd)
AMultivariatePolynomial
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
variablesevaluateAtRandomPreservingSkeleton
in class AMultivariatePolynomial<MonomialZp64,MultivariatePolynomialZp64>
public MultivariatePolynomialZp64 derivative(int variable, int order)
AMultivariatePolynomial
order
with respect to specified variable (new instance created)derivative
in class AMultivariatePolynomial<MonomialZp64,MultivariatePolynomialZp64>
variable
- the variableorder
- derivative orderorder
with respect to specified variablepublic MultivariatePolynomialZp64 seriesCoefficient(int variable, int order)
AMultivariatePolynomial
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).seriesCoefficient
in class AMultivariatePolynomial<MonomialZp64,MultivariatePolynomialZp64>
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 <T> MultivariatePolynomial<T> mapTerms(Ring<T> newRing, Function<MonomialZp64,Monomial<T>> mapper)
T
- new element typenewRing
- the new ringmapper
- mappingpublic MultivariatePolynomialZp64 mapTerms(IntegersZp64 newRing, Function<MonomialZp64,MonomialZp64> mapper)
newRing
- the new ringmapper
- mappingpublic <T> MultivariatePolynomial<T> mapCoefficients(Ring<T> newRing, LongFunction<T> mapper)
T
- new element typenewRing
- the new ringmapper
- mappingpublic <E> MultivariatePolynomial<E> mapCoefficientsAsPolys(Ring<E> ring, Function<MultivariatePolynomialZp64,E> mapper)
mapCoefficientsAsPolys
in class AMultivariatePolynomial<MonomialZp64,MultivariatePolynomialZp64>
public int compareTo(MultivariatePolynomialZp64 oth)
public MultivariatePolynomialZp64 clone()
IPolynomial
clone
in interface IPolynomial<MultivariatePolynomialZp64>
clone
in class AMultivariatePolynomial<MonomialZp64,MultivariatePolynomialZp64>
@Deprecated public MultivariatePolynomialZp64 parsePoly(String string)
public String toString(IStringifier<MultivariatePolynomialZp64> stringifier)
Stringifiable
public String coefficientRingToString(IStringifier<MultivariatePolynomialZp64> stringifier)
IPolynomial
Copyright © 2018. All rights reserved.