public final class UnivariatePolynomialArithmetic extends Object
| Modifier and Type | Method and Description |
|---|---|
static <T extends IUnivariatePolynomial<T>> |
createMonomialMod(BigInteger exponent,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod)
Creates
x^exponent mod polyModulus. |
static <T extends IUnivariatePolynomial<T>> |
createMonomialMod(long exponent,
T polyModulus,
UnivariateDivision.InverseModMonomial<T> invMod)
Creates
x^exponent mod polyModulus. |
static <T extends IUnivariatePolynomial<T>> |
polyAddMod(T m1,
T m2,
T polyModulus,
boolean copy)
Returns the remainder of the sum
(m1 + m2) and polyModulus. |
static <T extends IUnivariatePolynomial<T>> |
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>> |
polyMod(T dividend,
T polyModulus,
boolean copy)
Returns the remainder of
dividend and polyModulus. |
static <T extends IUnivariatePolynomial<T>> |
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>> |
polyMultiplyMod(T m1,
T m2,
T polyModulus,
boolean copy)
Returns the remainder of the product
(m1 * m2) and polyModulus. |
static <T extends IUnivariatePolynomial<T>> |
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>> |
polyNegateMod(T m1,
T polyModulus,
boolean copy)
Returns the remainder of the negated poly
-m1 and polyModulus. |
static <T extends IUnivariatePolynomial<T>> |
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>> |
polyPow(T base,
long exponent,
boolean copy)
Returns
base in a power of non-negative exponent |
static <T extends IUnivariatePolynomial<T>> |
polyPowMod(T base,
BigInteger exponent,
T polyModulus,
boolean copy)
Returns
base in a power of non-negative exponent modulo polyModulus |
static <T extends IUnivariatePolynomial<T>> |
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>> |
polyPowMod(T base,
long exponent,
T polyModulus,
boolean copy)
Returns
base in a power of non-negative exponent modulo polyModulus |
static <T extends IUnivariatePolynomial<T>> |
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>> |
polySubtractMod(T m1,
T m2,
T polyModulus,
boolean copy)
Returns the remainder of the difference
(m1 - m2) and polyModulus. |
static <T extends IUnivariatePolynomial<T>> |
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. |
public static <T extends IUnivariatePolynomial<T>> T polyMod(T dividend, T polyModulus, boolean copy)
dividend and polyModulus.dividend - the polynomialpolyModulus - the moduluscopy - whether to clone dividend; if not, the result will be placed directly to dividend and the original dividend data will be lostdividend % polyModuluspublic static <T extends IUnivariatePolynomial<T>> T polyMod(T dividend, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)
dividend and polyModulus using fast algorithm for pre-conditioned
modulus.dividend - the polynomialpolyModulus - the modulusinvMod - pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial))copy - whether to clone dividend; if not, the result will be placed directly to dividend and the original dividend data will be lostdividend % polyModulusUnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)public static <T extends IUnivariatePolynomial<T>> T polyMultiplyMod(T m1, T m2, T polyModulus, boolean copy)
(m1 * m2) and polyModulus.m1 - the first multiplierm2 - the second multiplierpolyModulus - the moduluscopy - whether to clone m1; if not, the result will be placed directly to the data structure
of the first multiplier m1 and the original data of m1 will be lost(m1 * m2) % polyModuluspublic static <T extends IUnivariatePolynomial<T>> T polyMultiplyMod(T m1, T m2, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)
(m1 * m2) and polyModulus using fast algorithm for
pre-conditioned modulus.m1 - the first multiplierm2 - the second multiplierpolyModulus - the modulusinvMod - pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial))copy - whether to clone m1; if not, the result will be placed directly to the data structure
of the first multiplier m1 and the original data of m1 will be lost(m1 * m2) % polyModulusUnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)public static <T extends IUnivariatePolynomial<T>> T polyAddMod(T m1, T m2, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)
(m1 + m2) and polyModulus using fast algorithm for
pre-conditioned modulus.m1 - the first multiplierm2 - the second multiplierpolyModulus - the modulusinvMod - pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial))copy - whether to clone m1; if not, the result will be placed directly to the data structure
of the first multiplier m1 and the original data of m1 will be lost(m1 + m2) % polyModulusUnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)public static <T extends IUnivariatePolynomial<T>> T polyAddMod(T m1, T m2, T polyModulus, boolean copy)
(m1 + m2) and polyModulus.m1 - the first multiplierm2 - the second multiplierpolyModulus - the moduluscopy - whether to clone m1; if not, the result will be placed directly to the data structure
of the first multiplier m1 and the original data of m1 will be lost(m1 + m2) % polyModuluspublic static <T extends IUnivariatePolynomial<T>> T polySubtractMod(T m1, T m2, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)
(m1 - m2) and polyModulus using fast algorithm for
pre-conditioned modulus.m1 - the first multiplierm2 - the second multiplierpolyModulus - the modulusinvMod - pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial))copy - whether to clone m1; if not, the result will be placed directly to the data structure
of the first multiplier m1 and the original data of m1 will be lost(m1 - m2) % polyModulusUnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)public static <T extends IUnivariatePolynomial<T>> T polySubtractMod(T m1, T m2, T polyModulus, boolean copy)
(m1 - m2) and polyModulus.m1 - the first multiplierm2 - the second multiplierpolyModulus - the moduluscopy - whether to clone m1; if not, the result will be placed directly to the data structure
of the first multiplier m1 and the original data of m1 will be lost(m1 - m2) % polyModuluspublic static <T extends IUnivariatePolynomial<T>> T polyNegateMod(T m1, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)
-m1 and polyModulus using fast algorithm for
pre-conditioned modulus.m1 - the polynomialpolyModulus - the modulusinvMod - pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial))copy - whether to clone m1; if not, the result will be placed directly to the data structure
of m1 and the original data of m1 will be lost(-m1) % polyModulusUnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)public static <T extends IUnivariatePolynomial<T>> T polyNegateMod(T m1, T polyModulus, boolean copy)
-m1 and polyModulus.m1 - the polynomialpolyModulus - the moduluscopy - whether to clone m1; if not, the result will be placed directly to the data structure
of m1 and the original data of m1 will be lost(-m1) % polyModuluspublic static <T extends IUnivariatePolynomial<T>> T polyPow(T base, long exponent, boolean copy)
base in a power of non-negative exponentbase - the baseexponent - the non-negative exponentcopy - whether to clone base; if not the data of base will be lostbase in a power of epublic static <T extends IUnivariatePolynomial<T>> T polyPowMod(T base, long exponent, T polyModulus, boolean copy)
base in a power of non-negative exponent modulo polyModulusbase - the baseexponent - the non-negative exponentpolyModulus - the moduluscopy - whether to clone base; if not the data of base will be lostbase in a power of e modulo polyModuluspublic static <T extends IUnivariatePolynomial<T>> T polyPowMod(T base, long exponent, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)
base in a power of non-negative exponent modulo polyModulusbase - the baseexponent - the non-negative exponentpolyModulus - the modulusinvMod - pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial))copy - whether to clone base; if not the data of base will be lostbase in a power of e modulo polyModulusUnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)public static <T extends IUnivariatePolynomial<T>> T polyPowMod(T base, BigInteger exponent, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)
base in a power of non-negative exponent modulo polyModulusbase - the baseexponent - the non-negative exponentpolyModulus - the modulusinvMod - pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial))copy - whether to clone base; if not the data of base will be lostbase in a power of e modulo polyModulusUnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)public static <T extends IUnivariatePolynomial<T>> T polyPowMod(T base, BigInteger exponent, T polyModulus, boolean copy)
base in a power of non-negative exponent modulo polyModulusbase - the baseexponent - the non-negative exponentpolyModulus - the moduluscopy - whether to clone base; if not the data of base will be lostbase in a power of e modulo polyModulusUnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)public static <T extends IUnivariatePolynomial<T>> T createMonomialMod(long exponent, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod)
x^exponent mod polyModulus.exponent - the monomial exponentpolyModulus - the modulusinvMod - pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial))x^exponent mod polyModuluspublic static <T extends IUnivariatePolynomial<T>> T createMonomialMod(BigInteger exponent, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod)
x^exponent mod polyModulus.exponent - the monomial exponentpolyModulus - the modulusinvMod - pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial))x^exponent mod polyModulusCopyright © 2022. All rights reserved.