Package | Description |
---|---|
cc.redberry.rings | |
cc.redberry.rings.poly | |
cc.redberry.rings.poly.multivar | |
cc.redberry.rings.poly.univar |
Modifier and Type | Method and Description |
---|---|
static FiniteField<UnivariatePolynomialZp64> |
Rings.GF(long prime,
int exponent)
Galois field with the cardinality
prime ^ exponent (with prime < 2^63). |
static UnivariateRing<UnivariatePolynomialZp64> |
Rings.UnivariateRingZp64(IntegersZp64 modulus)
Ring of univariate polynomials over Zp integers (Zp[x])
|
static UnivariateRing<UnivariatePolynomialZp64> |
Rings.UnivariateRingZp64(long modulus)
Ring of univariate polynomials over Zp integers (Zp[x])
|
Modifier and Type | Field and Description |
---|---|
static FiniteField<UnivariatePolynomialZp64> |
FiniteField.GF17p5
GF(17^5)
|
static FiniteField<UnivariatePolynomialZp64> |
FiniteField.GF27
GF(3^3)
|
Modifier and Type | Method and Description |
---|---|
UnivariatePolynomialZp64 |
MultivariatePolynomialZp64.asUnivariate() |
UnivariatePolynomialZp64 |
MultivariatePolynomialZp64.contentUnivariate(int variable) |
Modifier and Type | Method and Description |
---|---|
MultivariatePolynomial<UnivariatePolynomialZp64> |
MultivariatePolynomialZp64.asOverUnivariate(int variable) |
MultivariatePolynomial<UnivariatePolynomialZp64> |
MultivariatePolynomialZp64.asOverUnivariateEliminate(int variable) |
Modifier and Type | Method and Description |
---|---|
static MultivariatePolynomialZp64 |
MultivariatePolynomialZp64.asMultivariate(UnivariatePolynomialZp64 poly,
int nVariables,
int variable,
Comparator<DegreeVector> ordering)
Converts univariate polynomial to multivariate.
|
Modifier and Type | Method and Description |
---|---|
static MultivariatePolynomialZp64 |
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])
|
Modifier and Type | Method and Description |
---|---|
UnivariatePolynomialZp64 |
HenselLifting.lLinearLift.aCoFactorMod() |
UnivariatePolynomialZp64 |
HenselLifting.lLinearLift.aFactorMod() |
static UnivariatePolynomialZp64 |
UnivariatePolynomial.asOverZp64(UnivariatePolynomial<BigInteger> poly)
Converts Zp[x] poly over BigIntegers to machine-sized polynomial in Zp
|
UnivariatePolynomialZp64 |
HenselLifting.lLinearLift.bCoFactorMod() |
UnivariatePolynomialZp64 |
HenselLifting.lLinearLift.bFactorMod() |
UnivariatePolynomialZp64 |
UnivariatePolynomialZp64.clone() |
static UnivariatePolynomialZp64 |
ModularComposition.compositionHorner(UnivariatePolynomialZp64 poly,
UnivariatePolynomialZp64 point,
UnivariatePolynomialZp64 polyModulus,
UnivariateDivision.InverseModMonomial<UnivariatePolynomialZp64> invMod)
Returns modular composition
poly(point) mod polyModulus calculated with plain Horner scheme. |
static UnivariatePolynomialZp64 |
UnivariatePolynomialZp64.constant(IntegersZp64 ring,
long value)
Creates constant polynomial with specified value
|
static UnivariatePolynomialZp64 |
UnivariatePolynomialZp64.constant(long modulus,
long value)
Creates constant polynomial with specified value
|
static UnivariatePolynomialZp64 |
UnivariatePolynomialZp64.create(IntegersZp64 ring,
long[] data)
Creates poly with specified coefficients represented as signed integers reducing them modulo
modulus |
static UnivariatePolynomialZp64 |
UnivariatePolynomialZp64.create(long modulus,
long[] data)
Creates poly with specified coefficients represented as signed integers reducing them modulo
modulus |
UnivariatePolynomialZp64[] |
UnivariatePolynomialZp64.createArray(int length) |
UnivariatePolynomialZp64[] |
UnivariatePolynomialZp64.createArray(UnivariatePolynomialZp64 a,
UnivariatePolynomialZp64 b) |
UnivariatePolynomialZp64[][] |
UnivariatePolynomialZp64.createArray2d(int length) |
UnivariatePolynomialZp64[][] |
UnivariatePolynomialZp64.createArray2d(int length1,
int length2) |
UnivariatePolynomialZp64 |
UnivariatePolynomialZp64.createFromArray(long[] newData) |
UnivariatePolynomialZp64 |
UnivariatePolynomialZp64.createMonomial(long coefficient,
int newDegree) |
static UnivariatePolynomialZp64 |
UnivariatePolynomialZp64.createUnsafe(IntegersZp64 ring,
long[] data)
data is not reduced modulo modulus
|
static UnivariatePolynomialZp64 |
UnivariatePolynomialZp64.createUnsafe(long modulus,
long[] data)
data is not reduced modulo modulus
|
UnivariatePolynomialZp64 |
UnivariatePolynomialZp64.derivative() |
UnivariatePolynomialZp64 |
UnivariatePolynomialZp64.divide(long val)
Divide by specified value
|
static UnivariatePolynomialZp64[] |
UnivariateDivision.divideAndRemainder(UnivariatePolynomialZp64 dividend,
UnivariatePolynomialZp64 divider,
boolean copy)
Returns quotient and remainder.
|
static UnivariatePolynomialZp64[] |
UnivariateDivision.divideAndRemainderClassic(UnivariatePolynomialZp64 dividend,
UnivariatePolynomialZp64 divider,
boolean copy)
Classical algorithm for division with remainder.
|
static UnivariatePolynomialZp64[] |
UnivariateDivision.divideAndRemainderFast(UnivariatePolynomialZp64 dividend,
UnivariatePolynomialZp64 divider,
boolean copy)
Fast algorithm for division with remainder using Newton's iteration.
|
static UnivariatePolynomialZp64[] |
UnivariateDivision.divideAndRemainderFast(UnivariatePolynomialZp64 dividend,
UnivariatePolynomialZp64 divider,
UnivariateDivision.InverseModMonomial<UnivariatePolynomialZp64> invMod,
boolean copy)
Fast algorithm for division with remainder using Newton's iteration.
|
UnivariatePolynomialZp64 |
UnivariatePolynomialZp64.divideByLC(UnivariatePolynomialZp64 other) |
UnivariatePolynomialZp64 |
UnivariateInterpolation.InterpolationZp64.getInterpolatingPolynomial()
Returns resulting interpolating polynomial
|
UnivariatePolynomialZp64 |
UnivariatePolynomialZp64.getRange(int from,
int to) |
static UnivariatePolynomialZp64 |
UnivariateInterpolation.interpolateLagrange(long modulus,
long[] points,
long[] values)
Constructs an interpolating polynomial which values at
points[i] are exactly values[i] . |
static UnivariatePolynomialZp64 |
UnivariateInterpolation.interpolateNewton(IntegersZp64 ring,
long[] points,
long[] values)
Constructs an interpolating polynomial which values at
points[i] are exactly values[i] . |
static UnivariatePolynomialZp64 |
UnivariateInterpolation.interpolateNewton(long modulus,
long[] points,
long[] values)
Constructs an interpolating polynomial which values at
points[i] are exactly values[i] . |
static UnivariatePolynomialZp64 |
UnivariatePolynomialZp64.linear(long cc,
long lc,
long modulus)
Creates linear polynomial of form
cc + x * lc |
UnivariatePolynomialZp64 |
UnivariatePolynomial.mapCoefficients(IntegersZp64 ring,
ToLongFunction<E> mapper)
Applies transformation function to this and returns the result.
|
UnivariatePolynomialZp64 |
UnivariatePolynomialZ64.modulus(IntegersZp64 ring)
Reduces (copied) polynomial modulo
modulus and returns the result. |
UnivariatePolynomialZp64 |
UnivariatePolynomialZ64.modulus(IntegersZp64 ring,
boolean copy)
Reduces this polynomial modulo
modulus and returns the result. |
UnivariatePolynomialZp64 |
UnivariatePolynomialZ64.modulus(long modulus)
Reduces (copied) polynomial modulo
modulus and returns the result. |
UnivariatePolynomialZp64 |
UnivariatePolynomialZ64.modulus(long modulus,
boolean copy)
Reduces this polynomial modulo
modulus and returns the result. |
UnivariatePolynomialZp64 |
UnivariatePolynomialZp64.monic() |
UnivariatePolynomialZp64 |
UnivariatePolynomialZp64.monic(long factor)
Sets
this to its monic part multiplied by the factor (that is monic(modulus).multiply(factor) ). |
static UnivariatePolynomialZp64 |
UnivariatePolynomialZp64.monomial(long modulus,
long coefficient,
int exponent)
Creates monomial
coefficient * x^exponent |
UnivariatePolynomialZp64 |
UnivariatePolynomialZp64.multiply(UnivariatePolynomialZp64 oth) |
UnivariatePolynomialZp64 |
UnivariatePolynomialZp64.multiplyByBigInteger(BigInteger factor) |
static UnivariatePolynomialZp64 |
UnivariatePolynomialZp64.one(IntegersZp64 ring)
Creates unit polynomial
|
static UnivariatePolynomialZp64 |
UnivariatePolynomialZp64.one(long modulus)
Creates unit polynomial
|
static UnivariatePolynomialZp64 |
UnivariatePolynomialZp64.parse(String string,
IntegersZp64 modulus)
Parse string into polynomial
|
static UnivariatePolynomialZp64 |
UnivariatePolynomialZp64.parse(String string,
long modulus)
Parse string into polynomial
|
UnivariatePolynomialZp64 |
UnivariatePolynomialZp64.parsePoly(String string) |
UnivariatePolynomialZp64 |
HenselLifting.lQuadraticLift.polyMod() |
UnivariatePolynomialZp64 |
HenselLifting.lLinearLift.polyMod() |
static UnivariatePolynomialZp64 |
ModularComposition.powModulusMod(UnivariatePolynomialZp64 poly,
UnivariatePolynomialZp64 polyModulus,
UnivariateDivision.InverseModMonomial<UnivariatePolynomialZp64> invMod,
ArrayList<UnivariatePolynomialZp64> xPowers)
Returns
poly^modulus mod polyModulus using precomputed monomial powers x^{i*modulus} mod
polyModulus for i in [0...degree(poly)] |
static UnivariatePolynomialZp64 |
UnivariateDivision.quotient(UnivariatePolynomialZp64 dividend,
UnivariatePolynomialZp64 divider,
boolean copy)
Returns quotient of dividing
dividend by divider . |
static UnivariatePolynomialZp64 |
UnivariateDivision.quotientFast(UnivariatePolynomialZp64 dividend,
UnivariatePolynomialZp64 divider,
UnivariateDivision.InverseModMonomial<UnivariatePolynomialZp64> invMod,
boolean copy)
Fast quotient using Newton's iteration.
|
static UnivariatePolynomialZp64 |
IrreduciblePolynomials.randomIrreduciblePolynomial(long modulus,
int degree,
org.apache.commons.math3.random.RandomGenerator rnd)
Generated random irreducible Zp polynomial of degree
degree |
static UnivariatePolynomialZp64 |
RandomUnivariatePolynomials.randomMonicPoly(int degree,
long modulus,
org.apache.commons.math3.random.RandomGenerator rnd)
Creates random polynomial of specified
degree . |
static UnivariatePolynomialZp64 |
UnivariateDivision.remainder(UnivariatePolynomialZp64 dividend,
UnivariatePolynomialZp64 divider,
boolean copy)
Returns remainder of dividing
dividend by divider . |
static UnivariatePolynomialZp64 |
UnivariateDivision.remainderFast(UnivariatePolynomialZp64 dividend,
UnivariatePolynomialZp64 divider,
UnivariateDivision.InverseModMonomial<UnivariatePolynomialZp64> invMod,
boolean copy)
Fast remainder using Newton's iteration with switch to classical remainder for small polynomials.
|
UnivariatePolynomialZp64 |
UnivariatePolynomialZp64.setCoefficientRingFrom(UnivariatePolynomialZp64 univariatePolynomialZp64) |
UnivariatePolynomialZp64 |
UnivariatePolynomialZp64.setModulus(IntegersZp64 newDomain)
Creates new Zp[x] polynomial by coping the coefficients of this and reducing them modulo new modulus.
|
UnivariatePolynomialZp64 |
UnivariatePolynomialZp64.setModulus(long newModulus)
Creates new Zp[x] polynomial by coping the coefficients of this and reducing them modulo new modulus.
|
UnivariatePolynomialZp64 |
UnivariatePolynomialZp64.setModulusUnsafe(long newModulus)
does not copy the data and does not reduce the data with new modulus
|
UnivariatePolynomialZp64 |
UnivariatePolynomialZp64.square() |
static UnivariatePolynomialZp64 |
UnivariatePolynomialZp64.zero(IntegersZp64 ring)
Creates zero polynomial
|
static UnivariatePolynomialZp64 |
UnivariatePolynomialZp64.zero(long modulus)
Creates zero polynomial
|
Modifier and Type | Method and Description |
---|---|
static PolynomialFactorDecomposition<UnivariatePolynomialZp64> |
DistinctDegreeFactorization.DistinctDegreeFactorization(UnivariatePolynomialZp64 poly)
Performs distinct-degree factorization for square-free polynomial
poly . |
static PolynomialFactorDecomposition<UnivariatePolynomialZp64> |
DistinctDegreeFactorization.DistinctDegreeFactorizationPlain(UnivariatePolynomialZp64 poly)
Performs distinct-degree factorization for square-free polynomial
poly using plain incremental exponents
algorithm. |
static PolynomialFactorDecomposition<UnivariatePolynomialZp64> |
DistinctDegreeFactorization.DistinctDegreeFactorizationPrecomputedExponents(UnivariatePolynomialZp64 poly)
Performs distinct-degree factorization for square-free polynomial
poly using plain incremental exponents
algorithm with precomputed exponents. |
static List<UnivariatePolynomialZp64> |
HenselLifting.liftFactorization(long modulus,
long finalModulus,
int nIterations,
UnivariatePolynomialZ64 poly,
List<UnivariatePolynomialZp64> modularFactors,
boolean quadratic)
Lifts modular factorization
nIterations times using whether linear or quadratic lifting. |
static List<UnivariatePolynomialZp64> |
HenselLifting.liftFactorization(long modulus,
long desiredBound,
UnivariatePolynomialZ64 poly,
List<UnivariatePolynomialZp64> modularFactors,
boolean quadratic)
Lifts modular factorization until
modulus will overcome desiredBound . |
Modifier and Type | Method and Description |
---|---|
static UnivariatePolynomialZp64 |
ModularComposition.compositionHorner(UnivariatePolynomialZp64 poly,
UnivariatePolynomialZp64 point,
UnivariatePolynomialZp64 polyModulus,
UnivariateDivision.InverseModMonomial<UnivariatePolynomialZp64> invMod)
Returns modular composition
poly(point) mod polyModulus calculated with plain Horner scheme. |
static UnivariatePolynomialZp64[] |
UnivariateDivision.divideAndRemainderFast(UnivariatePolynomialZp64 dividend,
UnivariatePolynomialZp64 divider,
UnivariateDivision.InverseModMonomial<UnivariatePolynomialZp64> invMod,
boolean copy)
Fast algorithm for division with remainder using Newton's iteration.
|
static List<UnivariatePolynomial<BigInteger>> |
HenselLifting.liftFactorization(BigInteger modulus,
BigInteger desiredBound,
UnivariatePolynomial<BigInteger> poly,
List<UnivariatePolynomialZp64> modularFactors)
Lifts modular factorization until
modulus will overcome desiredBound . |
static List<UnivariatePolynomial<BigInteger>> |
HenselLifting.liftFactorization(BigInteger modulus,
BigInteger desiredBound,
UnivariatePolynomial<BigInteger> poly,
List<UnivariatePolynomialZp64> modularFactors,
boolean quadratic)
Lifts modular factorization until
modulus will overcome desiredBound . |
static List<UnivariatePolynomialZp64> |
HenselLifting.liftFactorization(long modulus,
long finalModulus,
int nIterations,
UnivariatePolynomialZ64 poly,
List<UnivariatePolynomialZp64> modularFactors,
boolean quadratic)
Lifts modular factorization
nIterations times using whether linear or quadratic lifting. |
static List<UnivariatePolynomialZp64> |
HenselLifting.liftFactorization(long modulus,
long desiredBound,
UnivariatePolynomialZ64 poly,
List<UnivariatePolynomialZp64> modularFactors,
boolean quadratic)
Lifts modular factorization until
modulus will overcome desiredBound . |
static UnivariatePolynomialZp64 |
ModularComposition.powModulusMod(UnivariatePolynomialZp64 poly,
UnivariatePolynomialZp64 polyModulus,
UnivariateDivision.InverseModMonomial<UnivariatePolynomialZp64> invMod,
ArrayList<UnivariatePolynomialZp64> xPowers)
Returns
poly^modulus mod polyModulus using precomputed monomial powers x^{i*modulus} mod
polyModulus for i in [0...degree(poly)] |
static UnivariatePolynomialZp64 |
ModularComposition.powModulusMod(UnivariatePolynomialZp64 poly,
UnivariatePolynomialZp64 polyModulus,
UnivariateDivision.InverseModMonomial<UnivariatePolynomialZp64> invMod,
ArrayList<UnivariatePolynomialZp64> xPowers)
Returns
poly^modulus mod polyModulus using precomputed monomial powers x^{i*modulus} mod
polyModulus for i in [0...degree(poly)] |
static UnivariatePolynomialZp64 |
UnivariateDivision.quotientFast(UnivariatePolynomialZp64 dividend,
UnivariatePolynomialZp64 divider,
UnivariateDivision.InverseModMonomial<UnivariatePolynomialZp64> invMod,
boolean copy)
Fast quotient using Newton's iteration.
|
static UnivariatePolynomialZp64 |
UnivariateDivision.remainderFast(UnivariatePolynomialZp64 dividend,
UnivariatePolynomialZp64 divider,
UnivariateDivision.InverseModMonomial<UnivariatePolynomialZp64> invMod,
boolean copy)
Fast remainder using Newton's iteration with switch to classical remainder for small polynomials.
|
Constructor and Description |
---|
lQuadraticLift(long modulus,
UnivariatePolynomialZ64 base,
UnivariatePolynomialZp64 aFactor,
UnivariatePolynomialZp64 bFactor,
UnivariatePolynomialZp64 aCoFactor,
UnivariatePolynomialZp64 bCoFactor) |
Copyright © 2018. All rights reserved.