Package cc.redberry.rings.poly.univar
Class UnivariatePolynomialArithmetic
- java.lang.Object
-
- cc.redberry.rings.poly.univar.UnivariatePolynomialArithmetic
-
public final class UnivariatePolynomialArithmetic extends Object
Helper methods for univariate polynomial arithmetic.- Since:
- 1.0
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static <T extends IUnivariatePolynomial<T>>
TcreateMonomialMod(long exponent, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod)Createsx^exponent mod polyModulus.static <T extends IUnivariatePolynomial<T>>
TcreateMonomialMod(BigInteger exponent, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod)Createsx^exponent mod polyModulus.static <T extends IUnivariatePolynomial<T>>
TpolyAddMod(T m1, T m2, T polyModulus, boolean copy)Returns the remainder of the sum(m1 + m2)andpolyModulus.static <T extends IUnivariatePolynomial<T>>
TpolyAddMod(T m1, T m2, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)Returns the remainder of the sum(m1 + m2)andpolyModulususing fast algorithm for pre-conditioned modulus.static <T extends IUnivariatePolynomial<T>>
TpolyMod(T dividend, T polyModulus, boolean copy)Returns the remainder ofdividendandpolyModulus.static <T extends IUnivariatePolynomial<T>>
TpolyMod(T dividend, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)Returns the remainder ofdividendandpolyModulususing fast algorithm for pre-conditioned modulus.static <T extends IUnivariatePolynomial<T>>
TpolyMultiplyMod(T m1, T m2, T polyModulus, boolean copy)Returns the remainder of the product(m1 * m2)andpolyModulus.static <T extends IUnivariatePolynomial<T>>
TpolyMultiplyMod(T m1, T m2, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)Returns the remainder of the product(m1 * m2)andpolyModulususing fast algorithm for pre-conditioned modulus.static <T extends IUnivariatePolynomial<T>>
TpolyNegateMod(T m1, T polyModulus, boolean copy)Returns the remainder of the negated poly-m1andpolyModulus.static <T extends IUnivariatePolynomial<T>>
TpolyNegateMod(T m1, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)Returns the remainder of the negated poly-m1andpolyModulususing fast algorithm for pre-conditioned modulus.static <T extends IUnivariatePolynomial<T>>
TpolyPow(T base, long exponent, boolean copy)Returnsbasein a power of non-negativeexponentstatic <T extends IUnivariatePolynomial<T>>
TpolyPowMod(T base, long exponent, T polyModulus, boolean copy)Returnsbasein a power of non-negativeexponentmodulopolyModulusstatic <T extends IUnivariatePolynomial<T>>
TpolyPowMod(T base, long exponent, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)Returnsbasein a power of non-negativeexponentmodulopolyModulusstatic <T extends IUnivariatePolynomial<T>>
TpolyPowMod(T base, BigInteger exponent, T polyModulus, boolean copy)Returnsbasein a power of non-negativeexponentmodulopolyModulusstatic <T extends IUnivariatePolynomial<T>>
TpolyPowMod(T base, BigInteger exponent, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)Returnsbasein a power of non-negativeexponentmodulopolyModulusstatic <T extends IUnivariatePolynomial<T>>
TpolySubtractMod(T m1, T m2, T polyModulus, boolean copy)Returns the remainder of the difference(m1 - m2)andpolyModulus.static <T extends IUnivariatePolynomial<T>>
TpolySubtractMod(T m1, T m2, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)Returns the remainder of the difference(m1 - m2)andpolyModulususing fast algorithm for pre-conditioned modulus.
-
-
-
Method Detail
-
polyMod
public static <T extends IUnivariatePolynomial<T>> T polyMod(T dividend, T polyModulus, boolean copy)
Returns the remainder ofdividendandpolyModulus.- Parameters:
dividend- the polynomialpolyModulus- the moduluscopy- whether to clonedividend; if not, the result will be placed directly todividendand the originaldividenddata will be lost- Returns:
dividend % polyModulus
-
polyMod
public static <T extends IUnivariatePolynomial<T>> T polyMod(T dividend, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)
Returns the remainder ofdividendandpolyModulususing fast algorithm for pre-conditioned modulus.- Parameters:
dividend- the polynomialpolyModulus- the modulusinvMod- pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial))copy- whether to clonedividend; if not, the result will be placed directly todividendand the originaldividenddata will be lost- Returns:
dividend % polyModulus- See Also:
UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
-
polyMultiplyMod
public static <T extends IUnivariatePolynomial<T>> T polyMultiplyMod(T m1, T m2, T polyModulus, boolean copy)
Returns the remainder of the product(m1 * m2)andpolyModulus.- Parameters:
m1- the first multiplierm2- the second multiplierpolyModulus- the moduluscopy- whether to clonem1; if not, the result will be placed directly to the data structure of the first multiplierm1and the original data ofm1will be lost- Returns:
(m1 * m2) % polyModulus
-
polyMultiplyMod
public static <T extends IUnivariatePolynomial<T>> T polyMultiplyMod(T m1, T m2, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)
Returns the remainder of the product(m1 * m2)andpolyModulususing fast algorithm for pre-conditioned modulus.- Parameters:
m1- the first multiplierm2- the second multiplierpolyModulus- the modulusinvMod- pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial))copy- whether to clonem1; if not, the result will be placed directly to the data structure of the first multiplierm1and the original data ofm1will be lost- Returns:
(m1 * m2) % polyModulus- See Also:
UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
-
polyAddMod
public static <T extends IUnivariatePolynomial<T>> T polyAddMod(T m1, T m2, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)
Returns the remainder of the sum(m1 + m2)andpolyModulususing fast algorithm for pre-conditioned modulus.- Parameters:
m1- the first multiplierm2- the second multiplierpolyModulus- the modulusinvMod- pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial))copy- whether to clonem1; if not, the result will be placed directly to the data structure of the first multiplierm1and the original data ofm1will be lost- Returns:
(m1 + m2) % polyModulus- See Also:
UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
-
polyAddMod
public static <T extends IUnivariatePolynomial<T>> T polyAddMod(T m1, T m2, T polyModulus, boolean copy)
Returns the remainder of the sum(m1 + m2)andpolyModulus.- Parameters:
m1- the first multiplierm2- the second multiplierpolyModulus- the moduluscopy- whether to clonem1; if not, the result will be placed directly to the data structure of the first multiplierm1and the original data ofm1will be lost- Returns:
(m1 + m2) % polyModulus
-
polySubtractMod
public static <T extends IUnivariatePolynomial<T>> T polySubtractMod(T m1, T m2, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)
Returns the remainder of the difference(m1 - m2)andpolyModulususing fast algorithm for pre-conditioned modulus.- Parameters:
m1- the first multiplierm2- the second multiplierpolyModulus- the modulusinvMod- pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial))copy- whether to clonem1; if not, the result will be placed directly to the data structure of the first multiplierm1and the original data ofm1will be lost- Returns:
(m1 - m2) % polyModulus- See Also:
UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
-
polySubtractMod
public static <T extends IUnivariatePolynomial<T>> T polySubtractMod(T m1, T m2, T polyModulus, boolean copy)
Returns the remainder of the difference(m1 - m2)andpolyModulus.- Parameters:
m1- the first multiplierm2- the second multiplierpolyModulus- the moduluscopy- whether to clonem1; if not, the result will be placed directly to the data structure of the first multiplierm1and the original data ofm1will be lost- Returns:
(m1 - m2) % polyModulus
-
polyNegateMod
public static <T extends IUnivariatePolynomial<T>> T polyNegateMod(T m1, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)
Returns the remainder of the negated poly-m1andpolyModulususing fast algorithm for pre-conditioned modulus.- Parameters:
m1- the polynomialpolyModulus- the modulusinvMod- pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial))copy- whether to clonem1; if not, the result will be placed directly to the data structure ofm1and the original data ofm1will be lost- Returns:
(-m1) % polyModulus- See Also:
UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
-
polyNegateMod
public static <T extends IUnivariatePolynomial<T>> T polyNegateMod(T m1, T polyModulus, boolean copy)
Returns the remainder of the negated poly-m1andpolyModulus.- Parameters:
m1- the polynomialpolyModulus- the moduluscopy- whether to clonem1; if not, the result will be placed directly to the data structure ofm1and the original data ofm1will be lost- Returns:
(-m1) % polyModulus
-
polyPow
public static <T extends IUnivariatePolynomial<T>> T polyPow(T base, long exponent, boolean copy)
Returnsbasein a power of non-negativeexponent- Parameters:
base- the baseexponent- the non-negative exponentcopy- whether to clonebase; if not the data ofbasewill be lost- Returns:
basein a power ofe
-
polyPowMod
public static <T extends IUnivariatePolynomial<T>> T polyPowMod(T base, long exponent, T polyModulus, boolean copy)
Returnsbasein a power of non-negativeexponentmodulopolyModulus- Parameters:
base- the baseexponent- the non-negative exponentpolyModulus- the moduluscopy- whether to clonebase; if not the data ofbasewill be lost- Returns:
basein a power ofemodulopolyModulus
-
polyPowMod
public static <T extends IUnivariatePolynomial<T>> T polyPowMod(T base, long exponent, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)
Returnsbasein a power of non-negativeexponentmodulopolyModulus- Parameters:
base- the baseexponent- the non-negative exponentpolyModulus- the modulusinvMod- pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial))copy- whether to clonebase; if not the data ofbasewill be lost- Returns:
basein a power ofemodulopolyModulus- See Also:
UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
-
polyPowMod
public static <T extends IUnivariatePolynomial<T>> T polyPowMod(T base, BigInteger exponent, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod, boolean copy)
Returnsbasein a power of non-negativeexponentmodulopolyModulus- Parameters:
base- the baseexponent- the non-negative exponentpolyModulus- the modulusinvMod- pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial))copy- whether to clonebase; if not the data ofbasewill be lost- Returns:
basein a power ofemodulopolyModulus- See Also:
UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
-
polyPowMod
public static <T extends IUnivariatePolynomial<T>> T polyPowMod(T base, BigInteger exponent, T polyModulus, boolean copy)
Returnsbasein a power of non-negativeexponentmodulopolyModulus- Parameters:
base- the baseexponent- the non-negative exponentpolyModulus- the moduluscopy- whether to clonebase; if not the data ofbasewill be lost- Returns:
basein a power ofemodulopolyModulus- See Also:
UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial)
-
createMonomialMod
public static <T extends IUnivariatePolynomial<T>> T createMonomialMod(long exponent, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod)
Createsx^exponent mod polyModulus.- Parameters:
exponent- the monomial exponentpolyModulus- the modulusinvMod- pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial))- Returns:
x^exponent mod polyModulus
-
createMonomialMod
public static <T extends IUnivariatePolynomial<T>> T createMonomialMod(BigInteger exponent, T polyModulus, UnivariateDivision.InverseModMonomial<T> invMod)
Createsx^exponent mod polyModulus.- Parameters:
exponent- the monomial exponentpolyModulus- the modulusinvMod- pre-conditioned modulus (UnivariateDivision.fastDivisionPreConditioning(IUnivariatePolynomial))- Returns:
x^exponent mod polyModulus
-
-