diff options
Diffstat (limited to 'macros/luatex/latex/luacas/tex/test/polynomials/polynomialmod.lua')
-rw-r--r-- | macros/luatex/latex/luacas/tex/test/polynomials/polynomialmod.lua | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/macros/luatex/latex/luacas/tex/test/polynomials/polynomialmod.lua b/macros/luatex/latex/luacas/tex/test/polynomials/polynomialmod.lua new file mode 100644 index 0000000000..1906ad2d72 --- /dev/null +++ b/macros/luatex/latex/luacas/tex/test/polynomials/polynomialmod.lua @@ -0,0 +1,76 @@ +local a = PolynomialRing({IntegerModN(Integer(1), Integer(11)), + IntegerModN(Integer(6), Integer(11)), + IntegerModN(Integer(1), Integer(11)), + IntegerModN(Integer(9), Integer(11)), + IntegerModN(Integer(1), Integer(11))}, "y") + +local b = PolynomialRing({IntegerModN(Integer(7), Integer(11)), + IntegerModN(Integer(7), Integer(11)), + IntegerModN(Integer(6), Integer(11)), + IntegerModN(Integer(2), Integer(11)), + IntegerModN(Integer(1), Integer(11))}, "y") + +local q = PolynomialRing({IntegerModN(Integer(2), Integer(13)), + IntegerModN(Integer(6), Integer(13)), + IntegerModN(Integer(4), Integer(13))}, "z") + +local p = PolynomialRing({IntegerModN(Integer(4), Integer(13)), + IntegerModN(Integer(11), Integer(13)), + IntegerModN(Integer(1), Integer(13)), + IntegerModN(Integer(12), Integer(13)), + IntegerModN(Integer(1), Integer(13))}, "x") + +local r = PolynomialRing({IntegerModN(Integer(1), Integer(3)), + IntegerModN(Integer(0), Integer(3)), + IntegerModN(Integer(0), Integer(3)), + IntegerModN(Integer(2), Integer(3)), + IntegerModN(Integer(0), Integer(3)), + IntegerModN(Integer(0), Integer(3)), + IntegerModN(Integer(1), Integer(3))}, "x") + +local s = PolynomialRing({IntegerModN(Integer(1), Integer(5)), + IntegerModN(Integer(1), Integer(5)), + IntegerModN(Integer(1), Integer(5)), + IntegerModN(Integer(1), Integer(5)), + IntegerModN(Integer(1), Integer(5))}, "x") + +local t = PolynomialRing({IntegerModN(Integer(1), Integer(7))}, "x"):multiplyDegree(7) - PolynomialRing({IntegerModN(Integer(1), Integer(7))}, "x"):multiplyDegree(1) + +local u = PolynomialRing({IntegerModN(Integer(1), Integer(13)), + IntegerModN(Integer(5), Integer(13)), + IntegerModN(Integer(6), Integer(13)), + IntegerModN(Integer(5), Integer(13)), + IntegerModN(Integer(1), Integer(13))}, "x") + +local v = PolynomialRing({IntegerModN(Integer(24), Integer(7)), + IntegerModN(Integer(50), Integer(7)), + IntegerModN(Integer(59), Integer(7)), + IntegerModN(Integer(60), Integer(7)), + IntegerModN(Integer(36), Integer(7)), + IntegerModN(Integer(10), Integer(7)), + IntegerModN(Integer(1), Integer(7))}, "z") + +starttest("modular polynomial operations") +testeq(q*q, "3z^4+9z^3+0z^2+11z^1+4z^0") +testeq(PolynomialRing.gcd(a, b), "1y^0") +local Q, R, S = PolynomialRing.extendedgcd(a, b) +testeq(Q, "1y^0") +testeq(R, "4y^3+5y^2+1y^1+3y^0") +testeq(S, "7y^3+0y^2+7y^1+6y^0") +endtest() + +starttest("modular square free factoring") +testeq(p:squarefreefactorization(), Integer(1) * BinaryOperation.POWEXP({(PolynomialRing({Integer(2), Integer(6), Integer(1)}, SymbolExpression("x"))), Integer(2)})) +testeq(r:squarefreefactorization(), Integer(1) * BinaryOperation.POWEXP({(PolynomialRing({Integer(1), Integer(0), Integer(0), Integer(1)}, SymbolExpression("x"))), Integer(2)})) +testeq(q:squarefreefactorization(), Integer(4) * BinaryOperation.POWEXP({(PolynomialRing({Integer(7), Integer(8), Integer(1)}, SymbolExpression("z"))), Integer(1)})) +testeq(s:squarefreefactorization(), Integer(1) * BinaryOperation.POWEXP({(PolynomialRing({Integer(4), Integer(1)}, SymbolExpression("x"))), Integer(4)})) +endtest() + +starttest("modular polynomial factoring") +testeq(q:factor(), BinaryOperation.MULEXP({Integer(4), BinaryOperation.POWEXP({PolynomialRing({Integer(7), Integer(1)}, SymbolExpression("z")), Integer(1)}), BinaryOperation.POWEXP({PolynomialRing({Integer(1), Integer(1)}, SymbolExpression("z")), Integer(1)})}), q) +testeq(p:factor(), Integer(1) * BinaryOperation.POWEXP({PolynomialRing({Integer(2), Integer(6), Integer(1)}, SymbolExpression("x")), Integer(2)}), p) +testeq(r:factor(), Integer(1) * BinaryOperation.POWEXP({(PolynomialRing({Integer(1), Integer(0), Integer(0), Integer(1)}, SymbolExpression("x"))), Integer(2)}), r) +testeq(t:factor(), BinaryOperation.MULEXP({Integer(1), BinaryOperation.POWEXP({PolynomialRing({Integer(0), Integer(1)}, SymbolExpression("x")), Integer(1)}), BinaryOperation.POWEXP({PolynomialRing({Integer(6), Integer(1)}, SymbolExpression("x")), Integer(1)}), BinaryOperation.POWEXP({PolynomialRing({Integer(5), Integer(1)}, SymbolExpression("x")), Integer(1)}), BinaryOperation.POWEXP({PolynomialRing({Integer(4), Integer(1)}, SymbolExpression("x")), Integer(1)}), BinaryOperation.POWEXP({PolynomialRing({Integer(3), Integer(1)}, SymbolExpression("x")), Integer(1)}), BinaryOperation.POWEXP({PolynomialRing({Integer(2), Integer(1)}, SymbolExpression("x")), Integer(1)}), BinaryOperation.POWEXP({PolynomialRing({Integer(1), Integer(1)}, SymbolExpression("x")), Integer(1)})}), t) +testeq(u:factor(), BinaryOperation.MULEXP({Integer(1), BinaryOperation.POWEXP({PolynomialRing({Integer(11), Integer(1)}, SymbolExpression("x")), Integer(1)}), BinaryOperation.POWEXP({PolynomialRing({Integer(10), Integer(1)}, SymbolExpression("x")), Integer(1)}), BinaryOperation.POWEXP({PolynomialRing({Integer(6), Integer(1)}, SymbolExpression("x")), Integer(1)}), BinaryOperation.POWEXP({PolynomialRing({Integer(4), Integer(1)}, SymbolExpression("x")), Integer(1)})}), u) +testeq(v:factor(), BinaryOperation.MULEXP({Integer(1), BinaryOperation.POWEXP({PolynomialRing({Integer(1), Integer(1)}, SymbolExpression("z")), Integer(1)}), BinaryOperation.POWEXP({PolynomialRing({Integer(2), Integer(1)}, SymbolExpression("z")), Integer(1)}), BinaryOperation.POWEXP({PolynomialRing({Integer(1), Integer(0), Integer(1)}, SymbolExpression("z")), Integer(1)}), BinaryOperation.POWEXP({PolynomialRing({Integer(4), Integer(1)}, SymbolExpression("z")), Integer(1)}), BinaryOperation.POWEXP({PolynomialRing({Integer(3), Integer(1)}, SymbolExpression("z")), Integer(1)})}), v) +endtest()
\ No newline at end of file |