public final class UnivariatePolynomial<E> extends Object implements IUnivariatePolynomial<UnivariatePolynomial<E>>, Iterable<E>
| Modifier and Type | Class and Description |
|---|---|
static class |
UnivariatePolynomial.PolynomialCollector<E>
Collector which collects stream of element to a UnivariatePolynomial
|
| Modifier and Type | Method and Description |
|---|---|
UnivariatePolynomial<E> |
add(E val)
Add constant to this.
|
UnivariatePolynomial<E> |
add(UnivariatePolynomial<E> oth)
Adds
oth to this. |
UnivariatePolynomial<E> |
addMonomial(E coefficient,
int exponent)
Adds
coefficient*x^exponent to this |
UnivariatePolynomial<E> |
addMul(UnivariatePolynomial<E> oth,
E factor)
Adds
oth * factor to this |
MultivariatePolynomial<E> |
asMultivariate()
Convert to multivariate polynomial
|
MultivariatePolynomial<E> |
asMultivariate(Comparator<DegreeVector> ordering)
Convert to multivariate polynomial
|
static UnivariatePolynomialZ64 |
asOverZ64(UnivariatePolynomial<BigInteger> poly)
Converts poly over BigIntegers to machine-sized polynomial in Z
|
static UnivariatePolynomialZp64 |
asOverZp64(UnivariatePolynomial<BigInteger> poly)
Converts Zp[x] poly over BigIntegers to machine-sized polynomial in Zp
|
static UnivariatePolynomialZp64 |
asOverZp64(UnivariatePolynomial<BigInteger> poly,
IntegersZp64 ring)
Converts Zp[x] poly over BigIntegers to machine-sized polynomial in Zp
|
static UnivariatePolynomialZp64 |
asOverZp64Q(UnivariatePolynomial<Rational<BigInteger>> poly,
IntegersZp64 ring)
Converts Zp[x] poly over rationals to machine-sized polynomial in Zp
|
static UnivariatePolynomial<BigInteger> |
asPolyZSymmetric(UnivariatePolynomial<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). |
E |
cc()
Returns the constant coefficient
|
UnivariatePolynomial<E> |
ccAsPoly()
Returns the constant coefficient as a constant poly
|
UnivariatePolynomial<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<UnivariatePolynomial<E>> stringifier)
String representation of the coefficient ring of this
|
int |
compareTo(UnivariatePolynomial<E> o) |
MultivariatePolynomial<E> |
composition(AMultivariatePolynomial value)
Calculates the composition of this(oth)
|
UnivariatePolynomial<E> |
composition(UnivariatePolynomial<E> value)
Calculates the composition of this(oth) (new instance, so the content of this is not changed))
|
static <E> UnivariatePolynomial<E> |
constant(Ring<E> ring,
E constant)
Creates constant polynomial over specified ring
|
E |
content()
Returns the content of the poly
|
UnivariatePolynomial<E> |
contentAsPoly()
Returns the content of this (gcd of coefficients) as a constant poly
|
static UnivariatePolynomial<BigInteger> |
create(long... data)
Creates new univariate Z[x] polynomial
|
static UnivariatePolynomial<BigInteger> |
create(Ring<BigInteger> ring,
long... data)
Creates univariate polynomial over specified ring (with integer elements) with the specified coefficients
|
static <E> UnivariatePolynomial<E> |
create(Ring<E> ring,
E... data)
Creates new univariate polynomial over specified ring with the specified coefficients.
|
UnivariatePolynomial<E>[] |
createArray(int length)
overcome Java generics...
|
UnivariatePolynomial<E>[] |
createArray(UnivariatePolynomial<E> a,
UnivariatePolynomial<E> b)
overcome Java generics...
|
UnivariatePolynomial<E>[][] |
createArray2d(int length)
overcome Java generics...
|
UnivariatePolynomial<E>[][] |
createArray2d(int length1,
int length2)
overcome Java generics...
|
UnivariatePolynomial<E> |
createConstant(E val)
Creates constant polynomial with specified value (over the same ring)
|
UnivariatePolynomial<E> |
createFromArray(E[] data)
Creates new poly with the specified coefficients (over the same ring)
|
UnivariatePolynomial<E> |
createLinear(E cc,
E lc)
Creates linear polynomial of form
cc + x * lc (over the same ring) |
UnivariatePolynomial<E> |
createMonomial(E coefficient,
int degree)
Creates monomial
coefficient * x^degree (over the same ring) |
UnivariatePolynomial<E> |
createMonomial(int degree)
Creates new monomial
x^degree (with the same coefficient ring) |
UnivariatePolynomial<E> |
createOne()
Returns the new instance of unit polynomial (with the same coefficient ring)
|
static <E> UnivariatePolynomial<E> |
createUnsafe(Ring<E> ring,
E[] data)
skips
ring.setToValueOf(data) |
UnivariatePolynomial<E> |
createZero()
Returns the new instance of zero polynomial (with the same coefficient ring)
|
UnivariatePolynomial<E> |
decrement()
Subtracts 1 from this
|
int |
degree()
Returns the degree of this polynomial
|
UnivariatePolynomial<E> |
derivative()
Returns the formal derivative of this poly (new instance, so the content of this is not changed)
|
UnivariatePolynomial<E> |
divideByLC(UnivariatePolynomial<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(). |
UnivariatePolynomial<E> |
divideExact(E factor)
Divides this polynomial by a
factor or throws exception if exact division is not possible |
UnivariatePolynomial<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. |
void |
ensureInternalCapacity(int desiredCapacity)
ensures that internal storage has enough size to store
desiredCapacity elements |
boolean |
equals(Object obj) |
E |
evaluate(E point)
Evaluates this poly at a given
point (via Horner method). |
E |
evaluate(long point)
Evaluates this poly at a given
point (via Horner method). |
int |
firstNonZeroCoefficientPosition()
Returns position of the first non-zero coefficient, that is common monomial exponent (e.g.
|
E |
get(int i)
Returns i-th coefficient of this poly
|
UnivariatePolynomial<E> |
getAsPoly(int i)
Returns i-th coefficient of this as a constant polynomial
|
E[] |
getDataReferenceUnsafe()
internal API
|
UnivariatePolynomial<E> |
getRange(int from,
int to)
Creates polynomial formed from the coefficients of this starting from
from (inclusive) to to
(exclusive) |
int |
hashCode() |
UnivariatePolynomial<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 |
isMonomial()
Returns
true if this polynomial has only one monomial term |
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
|
boolean |
isZero()
Returns
true if this is zero |
boolean |
isZeroAt(int i)
Returns whether i-th coefficient of this is zero
|
Iterator<E> |
iterator() |
E |
lc()
Returns the leading coefficient
|
UnivariatePolynomial<E> |
lcAsPoly()
Returns the leading coefficient as a constant poly
|
UnivariatePolynomialZp64 |
mapCoefficients(IntegersZp64 ring,
ToLongFunction<E> mapper)
Applies transformation function to this and returns the result.
|
<T> UnivariatePolynomial<T> |
mapCoefficients(Ring<T> ring,
Function<E,T> mapper)
Applies transformation function to this and returns the result.
|
E |
maxAbsCoefficient()
Returns max abs coefficient of the poly
|
static BigInteger |
mignotteBound(UnivariatePolynomial<BigInteger> poly)
Returns Mignotte's bound (sqrt(n+1) * 2^n max |this|) of the poly
|
UnivariatePolynomial<E> |
monic()
Sets
this to its monic part (that is this divided by its leading coefficient), or returns null (causing loss of internal data) if some of the elements can't be exactly divided by the lc(). |
UnivariatePolynomial<E> |
monic(E factor)
Sets
this to its monic part multiplied by the factor. |
UnivariatePolynomial<E> |
monicWithLC(UnivariatePolynomial<E> other)
Sets
this to its monic part multiplied by the leading coefficient of other; |
UnivariatePolynomial<E> |
multiply(E factor)
Multiplies
this by the factor |
UnivariatePolynomial<E> |
multiply(long factor)
Multiplies this by
factor |
UnivariatePolynomial<E> |
multiply(UnivariatePolynomial<E> oth)
Multiplies this by
oth |
UnivariatePolynomial<E> |
multiplyByBigInteger(BigInteger factor)
Multiplies this by
factor |
UnivariatePolynomial<E> |
multiplyByLC(UnivariatePolynomial<E> other)
Multiply this by the leading coefficient of
other |
UnivariatePolynomial<E> |
negate()
Negates this and returns
|
static BigInteger |
norm1(UnivariatePolynomial<BigInteger> poly)
Returns L1 norm of the polynomial, i.e.
|
static BigInteger |
norm2(UnivariatePolynomial<BigInteger> poly)
Returns L2 norm of the polynomial, i.e.
|
static double |
norm2Double(UnivariatePolynomial<BigInteger> poly)
Returns L2 norm of the poly, i.e.
|
E |
normMax() |
static <E> UnivariatePolynomial<E> |
one(Ring<E> ring)
Creates unit polynomial over specified ring
|
static <E> UnivariatePolynomial<E> |
parse(String string,
Ring<E> ring)
Deprecated.
|
static <E> UnivariatePolynomial<E> |
parse(String string,
Ring<E> ring,
String var)
Parse string into polynomial
|
UnivariatePolynomial<E> |
parsePoly(String string) |
UnivariatePolynomial<E> |
primitivePart()
Reduces poly to its primitive part (primitive part will always have positive l.c.)
|
UnivariatePolynomial<E> |
primitivePartSameSign()
Reduces poly to its primitive part, so that primitive part will have the same signum as the initial poly
|
UnivariatePolynomial<E> |
reverse()
Reverses the coefficients of this
|
boolean |
sameCoefficientRingWith(UnivariatePolynomial<E> oth)
Returns whether
oth and this have the same coefficient ring |
UnivariatePolynomial<E> |
scale(E scaling)
Replaces x -> scale * x and returns a copy
|
UnivariatePolynomial<E> |
set(int i,
E el)
Sets i-th coefficient of this poly with specified value
|
UnivariatePolynomial<E> |
set(UnivariatePolynomial<E> oth)
Sets the content of this to
oth |
UnivariatePolynomial<E> |
setAndDestroy(UnivariatePolynomial<E> oth)
Sets the content of this with
oth and destroys oth |
UnivariatePolynomial<E> |
setCoefficientRingFrom(UnivariatePolynomial<E> poly)
Set the coefficient ring from specified poly
|
UnivariatePolynomial<E> |
setFrom(int indexInThis,
UnivariatePolynomial<E> poly,
int indexInPoly)
Sets i-th element of this by j-th element of other poly
|
UnivariatePolynomial<E> |
setLC(E lc)
Sets the leading coefficient of this poly
|
UnivariatePolynomial<E> |
setRing(Ring<E> newRing)
Returns a copy of this with elements reduced to a new coefficient ring
|
UnivariatePolynomial<E> |
setRingUnsafe(Ring<E> newRing)
internal API
|
UnivariatePolynomial<E> |
setZero(int i)
Fills i-th element with zero
|
UnivariatePolynomial<E> |
shift(E value)
Shifts variable x -> x + value and returns the result (new instance)
|
UnivariatePolynomial<E> |
shiftLeft(int offset)
Returns the quotient
this / x^offset, it is polynomial with coefficient list formed by shifting
coefficients of this to the left by offset. |
UnivariatePolynomial<E> |
shiftRight(int offset)
Multiplies
this by the x^offset. |
int |
signumOfLC()
Gives signum of the leading coefficient
|
Spliterator<E> |
spliterator() |
UnivariatePolynomial<E> |
square()
Squares
this |
Stream<E> |
stream()
Returns a sequential
Stream with coefficients of this as its source. |
Stream<UnivariatePolynomial<E>> |
streamAsPolys()
Stream polynomial coefficients as constant polynomials
|
UnivariatePolynomial<E> |
subtract(E val)
Subtract constant from this.
|
UnivariatePolynomial<E> |
subtract(UnivariatePolynomial<E> oth)
Subtracts
oth from this. |
UnivariatePolynomial<E> |
subtract(UnivariatePolynomial<E> oth,
E factor,
int exponent)
Subtracts
factor * x^exponent * oth from this |
String |
toString() |
String |
toString(IStringifier<UnivariatePolynomial<E>> stringifier)
convert this to string with the use of stringifier
|
UnivariatePolynomial<E> |
toZero()
Sets this to zero
|
UnivariatePolynomial<E> |
truncate(int newDegree)
Returns the remainder
this rem x^(newDegree + 1), it is polynomial formed by coefficients of this from
zero to newDegree (both inclusive) |
static <E> UnivariatePolynomial<E> |
zero(Ring<E> ring)
Creates zero polynomial over specified ring
|
finalize, getClass, notify, notifyAll, wait, wait, waitcomposition, exponents, isLinearExactly, isLinearOrConstant, isZeroCC, mapCoefficientsAsPolys, nNonZeroTerms, sizeadd, assertSameCoefficientRingWith, canonical, coefficientRingToString, copy, createArray, createArray, createConstant, monicExact, multiply, multiply, setCoefficientRingFromOptional, subtract, toPositiveLC, toStringpublic static <E> UnivariatePolynomial<E> parse(String string, Ring<E> ring, String var)
string - string expressionring - the ringvar - variable string@Deprecated public static <E> UnivariatePolynomial<E> parse(String string, Ring<E> ring)
parse(String, Ring, String)public static <E> UnivariatePolynomial<E> create(Ring<E> ring, E... data)
data will not be copied.ring - the ringdata - the coefficientspublic static <E> UnivariatePolynomial<E> createUnsafe(Ring<E> ring, E[] data)
ring.setToValueOf(data)public static UnivariatePolynomial<BigInteger> create(Ring<BigInteger> ring, long... data)
ring - the ringdata - the coefficientspublic static UnivariatePolynomial<BigInteger> create(long... data)
data - the datapublic static <E> UnivariatePolynomial<E> constant(Ring<E> ring, E constant)
ring - the ringconstant - the valuepublic static <E> UnivariatePolynomial<E> zero(Ring<E> ring)
ring - the ringpublic static <E> UnivariatePolynomial<E> one(Ring<E> ring)
ring - the ringpublic static UnivariatePolynomialZ64 asOverZ64(UnivariatePolynomial<BigInteger> poly)
poly - the polynomial over BigIntegersArithmeticException - if some of coefficients is out of long rangepublic static UnivariatePolynomialZp64 asOverZp64(UnivariatePolynomial<BigInteger> poly)
poly - the Z/p polynomial over BigIntegersIllegalArgumentException - if poly.ring is not IntegersZpArithmeticException - if some of poly elements is out of long rangepublic static UnivariatePolynomialZp64 asOverZp64(UnivariatePolynomial<BigInteger> poly, IntegersZp64 ring)
poly - the polynomial over BigIntegersring - Zp64 ringIllegalArgumentException - if poly.ring is not IntegersZpArithmeticException - if some of poly elements is out of long rangepublic static UnivariatePolynomialZp64 asOverZp64Q(UnivariatePolynomial<Rational<BigInteger>> poly, IntegersZp64 ring)
poly - the polynomial over rationalsring - Zp64 ringIllegalArgumentException - if poly.ring is not IntegersZpArithmeticException - if some of poly elements is out of long rangepublic static UnivariatePolynomial<BigInteger> asPolyZSymmetric(UnivariatePolynomial<BigInteger> poly)
-modulus/2 <= cfx <= modulus/2).poly - Zp polynomial-modulus/2 <=
cfx <= modulus/2).IllegalArgumentException - is poly.ring is not a IntegersZppublic int degree()
IPolynomialdegree in interface IPolynomial<UnivariatePolynomial<E>>public E get(int i)
public UnivariatePolynomial<E> set(int i, E el)
public UnivariatePolynomial<E> setLC(E lc)
public int firstNonZeroCoefficientPosition()
IUnivariatePolynomialfirstNonZeroCoefficientPosition in interface IUnivariatePolynomial<UnivariatePolynomial<E>>public UnivariatePolynomial<E> setRing(Ring<E> newRing)
newRing - the new ringpublic UnivariatePolynomial<E> setRingUnsafe(Ring<E> newRing)
public E lc()
public UnivariatePolynomial<E> lcAsPoly()
IPolynomiallcAsPoly in interface IPolynomial<UnivariatePolynomial<E>>public UnivariatePolynomial<E> ccAsPoly()
IPolynomialccAsPoly in interface IPolynomial<UnivariatePolynomial<E>>public UnivariatePolynomial<E> getAsPoly(int i)
IUnivariatePolynomialgetAsPoly in interface IUnivariatePolynomial<UnivariatePolynomial<E>>i - index in thispublic E cc()
public void ensureInternalCapacity(int desiredCapacity)
IUnivariatePolynomialdesiredCapacity elementsensureInternalCapacity in interface IUnivariatePolynomial<UnivariatePolynomial<E>>public UnivariatePolynomial<E> getRange(int from, int to)
IUnivariatePolynomialfrom (inclusive) to to
(exclusive)getRange in interface IUnivariatePolynomial<UnivariatePolynomial<E>>from - the initial index of the range to be copied, inclusiveto - the final index of the range to be copied, exclusive.public UnivariatePolynomial<E>[] createArray(int length)
IPolynomialcreateArray in interface IPolynomial<UnivariatePolynomial<E>>public UnivariatePolynomial<E>[] createArray(UnivariatePolynomial<E> a, UnivariatePolynomial<E> b)
IPolynomialcreateArray in interface IPolynomial<UnivariatePolynomial<E>>public UnivariatePolynomial<E>[][] createArray2d(int length)
IPolynomialcreateArray2d in interface IPolynomial<UnivariatePolynomial<E>>public UnivariatePolynomial<E>[][] createArray2d(int length1, int length2)
IPolynomialcreateArray2d in interface IPolynomial<UnivariatePolynomial<E>>public boolean sameCoefficientRingWith(UnivariatePolynomial<E> oth)
IPolynomialoth and this have the same coefficient ringsameCoefficientRingWith in interface IPolynomial<UnivariatePolynomial<E>>oth - other polynomialpublic UnivariatePolynomial<E> setCoefficientRingFrom(UnivariatePolynomial<E> poly)
IPolynomialsetCoefficientRingFrom in interface IPolynomial<UnivariatePolynomial<E>>poly - the polynomialpolypublic UnivariatePolynomial<E> createFromArray(E[] data)
data - the datapublic UnivariatePolynomial<E> createMonomial(int degree)
IUnivariatePolynomialx^degree (with the same coefficient ring)createMonomial in interface IUnivariatePolynomial<UnivariatePolynomial<E>>degree - monomial degreecoefficient * x^degreepublic UnivariatePolynomial<E> createLinear(E cc, E lc)
cc + x * lc (over the same ring)cc - the constant coefficientlc - the leading coefficientcc + x * lcpublic UnivariatePolynomial<E> createMonomial(E coefficient, int degree)
coefficient * x^degree (over the same ring)coefficient - monomial coefficientdegree - monomial degreecoefficient * x^degreepublic UnivariatePolynomial<E> createConstant(E val)
val - the valuepublic UnivariatePolynomial<E> createZero()
IPolynomialcreateZero in interface IPolynomial<UnivariatePolynomial<E>>public UnivariatePolynomial<E> createOne()
IPolynomialcreateOne in interface IPolynomial<UnivariatePolynomial<E>>public boolean isZeroAt(int i)
IUnivariatePolynomialisZeroAt in interface IUnivariatePolynomial<UnivariatePolynomial<E>>i - the positionpublic final UnivariatePolynomial<E> setZero(int i)
IUnivariatePolynomialsetZero in interface IUnivariatePolynomial<UnivariatePolynomial<E>>i - positionpublic UnivariatePolynomial<E> setFrom(int indexInThis, UnivariatePolynomial<E> poly, int indexInPoly)
IUnivariatePolynomialsetFrom in interface IUnivariatePolynomial<UnivariatePolynomial<E>>indexInThis - index in selfpoly - other polynomialindexInPoly - index in other polynomialpublic boolean isZero()
IPolynomialtrue if this is zeroisZero in interface IPolynomial<UnivariatePolynomial<E>>this is zeropublic boolean isOne()
IPolynomialtrue if this is oneisOne in interface IPolynomial<UnivariatePolynomial<E>>this is onepublic boolean isMonic()
IPolynomialtrue if this polynomial is monicisMonic in interface IPolynomial<UnivariatePolynomial<E>>this is monicpublic boolean isUnitCC()
IPolynomialisUnitCC in interface IPolynomial<UnivariatePolynomial<E>>public boolean isConstant()
IPolynomialtrue if this polynomial has only constant termisConstant in interface IPolynomial<UnivariatePolynomial<E>>this is constantpublic boolean isMonomial()
IPolynomialtrue if this polynomial has only one monomial termisMonomial in interface IPolynomial<UnivariatePolynomial<E>>this has only one monomial termpublic int signumOfLC()
IPolynomialsignumOfLC in interface IPolynomial<UnivariatePolynomial<E>>public boolean isOverField()
IPolynomialisOverField in interface IPolynomial<UnivariatePolynomial<E>>public boolean isOverFiniteField()
IPolynomialisOverFiniteField in interface IPolynomial<UnivariatePolynomial<E>>public boolean isOverZ()
IPolynomialisOverZ in interface IPolynomial<UnivariatePolynomial<E>>public BigInteger coefficientRingCardinality()
IPolynomialcoefficientRingCardinality in interface IPolynomial<UnivariatePolynomial<E>>public BigInteger coefficientRingCharacteristic()
IPolynomialcoefficientRingCharacteristic in interface IPolynomial<UnivariatePolynomial<E>>public boolean isOverPerfectPower()
IPolynomialcoefficientRingCardinality() is a perfect powerisOverPerfectPower in interface IPolynomial<UnivariatePolynomial<E>>coefficientRingCardinality() is a perfect powerpublic BigInteger coefficientRingPerfectPowerBase()
IPolynomialbase so that coefficientRingCardinality() == base^exponent or null if cardinality is not
finitecoefficientRingPerfectPowerBase in interface IPolynomial<UnivariatePolynomial<E>>base 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 finitecoefficientRingPerfectPowerExponent in interface IPolynomial<UnivariatePolynomial<E>>exponent so that coefficientRingCardinality() == base^exponent or null if cardinality is
not finitepublic static BigInteger mignotteBound(UnivariatePolynomial<BigInteger> poly)
public static BigInteger norm1(UnivariatePolynomial<BigInteger> poly)
public static BigInteger norm2(UnivariatePolynomial<BigInteger> poly)
public static double norm2Double(UnivariatePolynomial<BigInteger> poly)
public E maxAbsCoefficient()
public E normMax()
public UnivariatePolynomial<E> toZero()
IPolynomialtoZero in interface IPolynomial<UnivariatePolynomial<E>>public UnivariatePolynomial<E> set(UnivariatePolynomial<E> oth)
IPolynomialothset in interface IPolynomial<UnivariatePolynomial<E>>oth - the polynomialpublic final UnivariatePolynomial<E> setAndDestroy(UnivariatePolynomial<E> oth)
IUnivariatePolynomialoth and destroys othsetAndDestroy in interface IUnivariatePolynomial<UnivariatePolynomial<E>>oth - the polynomial (will be destroyed)public UnivariatePolynomial<E> shiftLeft(int offset)
IUnivariatePolynomialthis / x^offset, it is polynomial with coefficient list formed by shifting
coefficients of this to the left by offset.shiftLeft in interface IUnivariatePolynomial<UnivariatePolynomial<E>>offset - shift amountthis / x^offsetpublic UnivariatePolynomial<E> shiftRight(int offset)
IUnivariatePolynomialthis by the x^offset.shiftRight in interface IUnivariatePolynomial<UnivariatePolynomial<E>>offset - monomial exponentthis * x^offsetpublic UnivariatePolynomial<E> truncate(int newDegree)
IUnivariatePolynomialthis rem x^(newDegree + 1), it is polynomial formed by coefficients of this from
zero to newDegree (both inclusive)truncate in interface IUnivariatePolynomial<UnivariatePolynomial<E>>newDegree - new degreethis rem x^(newDegree + 1)public UnivariatePolynomial<E> reverse()
IUnivariatePolynomialreverse in interface IUnivariatePolynomial<UnivariatePolynomial<E>>public E content()
public UnivariatePolynomial<E> contentAsPoly()
IPolynomialcontentAsPoly in interface IPolynomial<UnivariatePolynomial<E>>public UnivariatePolynomial<E> primitivePart()
IPolynomialprimitivePart in interface IPolynomial<UnivariatePolynomial<E>>public UnivariatePolynomial<E> primitivePartSameSign()
IPolynomialprimitivePartSameSign in interface IPolynomial<UnivariatePolynomial<E>>public E evaluate(long point)
point (via Horner method).point - pointpointpublic E evaluate(E point)
point (via Horner method).point - pointpointpublic UnivariatePolynomial<E> composition(UnivariatePolynomial<E> value)
IUnivariatePolynomialcomposition in interface IUnivariatePolynomial<UnivariatePolynomial<E>>value - polynomialthis(oth)public MultivariatePolynomial<E> composition(AMultivariatePolynomial value)
IUnivariatePolynomialcomposition in interface IUnivariatePolynomial<UnivariatePolynomial<E>>value - polynomialthis(oth)public UnivariatePolynomial<E> scale(E scaling)
public UnivariatePolynomial<E> shift(E value)
value - shift amountpublic UnivariatePolynomial<E> add(E val)
val - some numberpublic UnivariatePolynomial<E> subtract(E val)
val - some numberpublic UnivariatePolynomial<E> decrement()
IPolynomialdecrement in interface IPolynomial<UnivariatePolynomial<E>>this - 1public UnivariatePolynomial<E> increment()
IPolynomialincrement in interface IPolynomial<UnivariatePolynomial<E>>this + 1public UnivariatePolynomial<E> add(UnivariatePolynomial<E> oth)
IPolynomialoth to this.add in interface IPolynomial<UnivariatePolynomial<E>>oth - the polynomialthis + othpublic UnivariatePolynomial<E> addMonomial(E coefficient, int exponent)
coefficient*x^exponent to thiscoefficient - monomial coefficientexponent - monomial exponentthis + coefficient*x^exponentpublic UnivariatePolynomial<E> addMul(UnivariatePolynomial<E> oth, E factor)
oth * factor to thisoth - the polynomialfactor - the factorthis + oth * factor modulo moduluspublic UnivariatePolynomial<E> subtract(UnivariatePolynomial<E> oth)
IPolynomialoth from this.subtract in interface IPolynomial<UnivariatePolynomial<E>>oth - the polynomialthis - othpublic UnivariatePolynomial<E> subtract(UnivariatePolynomial<E> oth, E factor, int exponent)
factor * x^exponent * oth from thisoth - the polynomialfactor - the factorexponent - the exponentthis - factor * x^exponent * othpublic UnivariatePolynomial<E> negate()
IPolynomialnegate in interface IPolynomial<UnivariatePolynomial<E>>public UnivariatePolynomial<E> multiply(E factor)
this by the factorfactor - the factorfactorpublic UnivariatePolynomial<E> multiplyByLC(UnivariatePolynomial<E> other)
IPolynomialothermultiplyByLC in interface IPolynomial<UnivariatePolynomial<E>>other - polynomialpublic UnivariatePolynomial<E> multiply(long factor)
IPolynomialfactormultiply in interface IPolynomial<UnivariatePolynomial<E>>factor - the factorthis * factorpublic UnivariatePolynomial<E> divideByLC(UnivariatePolynomial<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.divideByLC in interface IPolynomial<UnivariatePolynomial<E>>other - the polynomialthis divided by the other.lc() or null if exact division is not possiblepublic UnivariatePolynomial<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 UnivariatePolynomial<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 UnivariatePolynomial<E> monic()
IPolynomialthis to its monic part (that is this divided by its leading coefficient), or returns null (causing loss of internal data) if some of the elements can't be exactly divided by the lc(). NOTE:
if null is returned, the content of this is destroyed.monic in interface IPolynomial<UnivariatePolynomial<E>>this or nullpublic UnivariatePolynomial<E> monic(E factor)
this to its monic part multiplied by the factor.factor - the factorthispublic UnivariatePolynomial<E> monicWithLC(UnivariatePolynomial<E> other)
IPolynomialthis to its monic part multiplied by the leading coefficient of other;monicWithLC in interface IPolynomial<UnivariatePolynomial<E>>other - other polynomialother or null if exact division by the
reduced leading coefficient is not possiblepublic UnivariatePolynomial<E> multiplyByBigInteger(BigInteger factor)
IPolynomialfactormultiplyByBigInteger in interface IPolynomial<UnivariatePolynomial<E>>factor - the factorthis * factorpublic UnivariatePolynomial<E> multiply(UnivariatePolynomial<E> oth)
IPolynomialoth multiply in interface IPolynomial<UnivariatePolynomial<E>>oth - the polynomialthis * oth public UnivariatePolynomial<E> square()
IPolynomialthissquare in interface IPolynomial<UnivariatePolynomial<E>>this * thispublic UnivariatePolynomial<E> derivative()
IUnivariatePolynomialderivative in interface IUnivariatePolynomial<UnivariatePolynomial<E>>public UnivariatePolynomial<E> clone()
IPolynomialclone in interface IPolynomial<UnivariatePolynomial<E>>clone in interface IUnivariatePolynomial<UnivariatePolynomial<E>>clone in class Objectpublic UnivariatePolynomial<E> parsePoly(String string)
parsePoly in interface IPolynomial<UnivariatePolynomial<E>>public Stream<E> stream()
Stream with coefficients of this as its source.Stream over the coefficients in this polynomialpublic Stream<UnivariatePolynomial<E>> streamAsPolys()
IUnivariatePolynomialstreamAsPolys in interface IUnivariatePolynomial<UnivariatePolynomial<E>>public Spliterator<E> spliterator()
spliterator in interface Iterable<E>public <T> UnivariatePolynomial<T> mapCoefficients(Ring<T> ring, Function<E,T> mapper)
stream().map(mapper).collect(new PolynomialCollector<>(ring)).T - result elements typering - ring of the new polynomialmapper - function that maps coefficients of this to coefficients of the resultmapperpublic UnivariatePolynomialZp64 mapCoefficients(IntegersZp64 ring, ToLongFunction<E> mapper)
stream().map(mapper).collect(new PolynomialCollector<>(ring)).ring - ring of the new polynomialmapper - function that maps coefficients of this to coefficients of the resultmapperpublic E[] getDataReferenceUnsafe()
public MultivariatePolynomial<E> asMultivariate()
IUnivariatePolynomialasMultivariate in interface IUnivariatePolynomial<UnivariatePolynomial<E>>public MultivariatePolynomial<E> asMultivariate(Comparator<DegreeVector> ordering)
IUnivariatePolynomialasMultivariate in interface IUnivariatePolynomial<UnivariatePolynomial<E>>public int compareTo(UnivariatePolynomial<E> o)
compareTo in interface Comparable<UnivariatePolynomial<E>>public String coefficientRingToString(IStringifier<UnivariatePolynomial<E>> stringifier)
IPolynomialcoefficientRingToString in interface IPolynomial<UnivariatePolynomial<E>>public String toString(IStringifier<UnivariatePolynomial<E>> stringifier)
StringifiabletoString in interface Stringifiable<UnivariatePolynomial<E>>Copyright © 2022. All rights reserved.