| Package | Description |
|---|---|
| cc.redberry.rings.poly.univar |
| Modifier and Type | Method and Description |
|---|---|
static <Poly extends IUnivariatePolynomial<Poly>> |
UnivariateDivision.fastDivisionPreConditioning(Poly divider)
Prepares
rev(divider)^(-1) mod x^i for fast division. |
static <Poly extends IUnivariatePolynomial<Poly>> |
UnivariateDivision.fastDivisionPreConditioningWithLCCorrection(Poly divider)
Prepares
rev(divider)^(-1) mod x^i for fast division. |
| Modifier and Type | Method and Description |
|---|---|
static <T extends IUnivariatePolynomial<T>> |
ModularComposition.composition(T poly,
T point,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod)
Returns modular composition
poly(point) mod polyModulus. |
static <T extends IUnivariatePolynomial<T>> |
ModularComposition.compositionBrentKung(T poly,
ArrayList<T> pointPowers,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod,
int tBrentKung)
Returns modular composition
poly(point) mod polyModulus calculated using Brent & Kung algorithm for
modular composition. |
static <T extends IUnivariatePolynomial<T>> |
ModularComposition.compositionBrentKung(T poly,
T point,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod)
Returns modular composition
poly(point) mod polyModulus calculated using Brent & Kung algorithm for
modular composition. |
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 <T extends IUnivariatePolynomial<T>> |
UnivariatePolynomialArithmetic.createMonomialMod(BigInteger exponent,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod)
Creates
x^exponent mod polyModulus. |
static <T extends IUnivariatePolynomial<T>> |
UnivariatePolynomialArithmetic.createMonomialMod(long exponent,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod)
Creates
x^exponent mod polyModulus. |
static <Poly extends IUnivariatePolynomial<Poly>> |
UnivariateDivision.divideAndRemainderFast(Poly dividend,
Poly divider,
UnivariateDivision.InverseModMonomial<Poly> invMod,
boolean copy)
Returns
{quotient, remainder} of dividend and divider |
static <E> UnivariatePolynomial<E>[] |
UnivariateDivision.divideAndRemainderFast(UnivariatePolynomial<E> dividend,
UnivariatePolynomial<E> divider,
UnivariateDivision.InverseModMonomial<UnivariatePolynomial<E>> invMod,
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.
|
static <Poly extends IUnivariatePolynomial<Poly>> |
UnivariateDivision.divideAndRemainderFast0(Poly dividend,
Poly divider,
UnivariateDivision.InverseModMonomial<Poly> invRevMod,
boolean copy)
fast division implementation
|
static <T extends IUnivariatePolynomial<T>> |
UnivariatePolynomialArithmetic.polyAddMod(T m1,
T m2,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod,
boolean copy)
Returns the remainder of the sum
(m1 + m2) and polyModulus using fast algorithm for
pre-conditioned modulus. |
static <T extends IUnivariatePolynomial<T>> |
UnivariatePolynomialArithmetic.polyMod(T dividend,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod,
boolean copy)
Returns the remainder of
dividend and polyModulus using fast algorithm for pre-conditioned
modulus. |
static <T extends IUnivariatePolynomial<T>> |
UnivariatePolynomialArithmetic.polyMultiplyMod(T m1,
T m2,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod,
boolean copy)
Returns the remainder of the product
(m1 * m2) and polyModulus using fast algorithm for
pre-conditioned modulus. |
static <T extends IUnivariatePolynomial<T>> |
UnivariatePolynomialArithmetic.polyNegateMod(T m1,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod,
boolean copy)
Returns the remainder of the negated poly
-m1 and polyModulus using fast algorithm for
pre-conditioned modulus. |
static <T extends IUnivariatePolynomial<T>> |
ModularComposition.polyPowers(T poly,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod,
int nIterations)
Returns
poly^{i} mod polyModulus for i in [0...nIterations] |
static <T extends IUnivariatePolynomial<T>> |
UnivariatePolynomialArithmetic.polyPowMod(T base,
BigInteger exponent,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod,
boolean copy)
Returns
base in a power of non-negative exponent modulo polyModulus |
static <T extends IUnivariatePolynomial<T>> |
UnivariatePolynomialArithmetic.polyPowMod(T base,
long exponent,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod,
boolean copy)
Returns
base in a power of non-negative exponent modulo polyModulus |
static <T extends IUnivariatePolynomial<T>> |
UnivariatePolynomialArithmetic.polySubtractMod(T m1,
T m2,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod,
boolean copy)
Returns the remainder of the difference
(m1 - m2) and polyModulus using fast algorithm for
pre-conditioned modulus. |
static <T extends IUnivariatePolynomial<T>> |
ModularComposition.powModulusMod(T poly,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod,
ArrayList<T> xPowers)
Returns
poly^modulus mod polyModulus using precomputed monomial powers x^{i*modulus} mod
polyModulus for i in [0...degree(poly)] |
static <E> UnivariatePolynomial<E> |
ModularComposition.powModulusMod(UnivariatePolynomial<E> poly,
UnivariatePolynomial<E> polyModulus,
UnivariateDivision.InverseModMonomial<UnivariatePolynomial<E>> invMod,
ArrayList<UnivariatePolynomial<E>> 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 <E> UnivariatePolynomial<E> |
UnivariateDivision.quotientFast(UnivariatePolynomial<E> dividend,
UnivariatePolynomial<E> divider,
UnivariateDivision.InverseModMonomial<UnivariatePolynomial<E>> invMod,
boolean copy)
Fast quotient using Newton's iteration.
|
static UnivariatePolynomialZp64 |
UnivariateDivision.quotientFast(UnivariatePolynomialZp64 dividend,
UnivariatePolynomialZp64 divider,
UnivariateDivision.InverseModMonomial<UnivariatePolynomialZp64> invMod,
boolean copy)
Fast quotient using Newton's iteration.
|
static <Poly extends IUnivariatePolynomial<Poly>> |
UnivariateDivision.remainderFast(Poly dividend,
Poly divider,
UnivariateDivision.InverseModMonomial<Poly> invMod,
boolean copy)
Fast remainder using Newton's iteration with switch to classical remainder for small polynomials.
|
static <E> UnivariatePolynomial<E> |
UnivariateDivision.remainderFast(UnivariatePolynomial<E> dividend,
UnivariatePolynomial<E> divider,
UnivariateDivision.InverseModMonomial<UnivariatePolynomial<E>> invMod,
boolean copy)
Fast remainder using Newton's iteration with switch to classical remainder for small polynomials.
|
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.
|
static <T extends IUnivariatePolynomial<T>> |
ModularComposition.xPowers(T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod)
Returns
x^{i*modulus} mod polyModulus for i in [0...degree], where degree is polyModulus degree. |
Copyright © 2022. All rights reserved.