Skip to content

Commit 6a178ed

Browse files
committed
add tests for nmod_poly
1 parent a01d292 commit 6a178ed

File tree

1 file changed

+68
-3
lines changed

1 file changed

+68
-3
lines changed

test/test.py

Lines changed: 68 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -683,23 +683,35 @@ def test_nmod():
683683
assert G(3,5).repr() == "nmod(3, 5)"
684684

685685
def test_nmod_poly():
686+
N = flint.nmod
686687
P = flint.nmod_poly
687688
Z = flint.fmpz_poly
688689
assert P([],17) == P([0],17)
689690
assert P([1,2,3],17) == P([1,2,3],17)
690691
assert P([1,2,3],17) != P([1,2,3],15)
691692
assert P([1,2,3],17) != P([1,2,4],15)
693+
assert P([1,2,3],17) != 1
694+
assert P([1,2,3],17) != Z([1,2,3])
695+
assert raises(lambda: P([1,2],3) < P([1,2],3), TypeError)
692696
assert P(Z([1,2,3]),17) == P([1,2,3],17)
693-
assert P([1,2,flint.nmod(3,17)],17) == P([1,2,3],17)
697+
assert P([1,2,N(3,17)],17) == P([1,2,3],17)
698+
assert P(P([1,2],17),17) == P([1,2],17)
699+
assert raises(lambda: P(P([1,2],17),13), ValueError)
700+
assert raises(lambda: P([1,2,[]],17), TypeError)
694701
assert raises(lambda: P([1,2,flint.nmod(3,15)],17), ValueError)
702+
assert raises(lambda: P([1,2],0), ValueError)
703+
assert raises(lambda: P({},3), TypeError)
695704
assert P([1,2,3],17).degree() == 2
696705
assert P([1,2,3],17).length() == 3
706+
assert len(P([1,2,3],17)) == 3
707+
assert P([1,2,3],5).coeffs() == [N(1,5),N(2,5),N(3,5)]
697708
assert P([1,2,3],17) + 2 == P([3,2,3],17)
698709
assert 2 + P([1,2,3],17) == P([3,2,3],17)
699710
assert P([1,2,3],17) + P([3,4,5],17) == P([4,6,8],17)
700711
assert P([1,2,3],17) + P([3,4,5],17) == P([4,6,8],17)
701712
assert P([1,2,3],17) - 2 == P([16,2,3],17)
702713
assert 2 - P([1,2,3],17) == -P([16,2,3],17)
714+
assert +P([1,2,3],17) == P([1,2,3],17)
703715
assert P([1,2,3],17) - P([3,4,6],17) == P([15,15,14],17)
704716
assert P([1,2,3],17) * 2 == P([2,4,6],17)
705717
assert 2 * P([1,2,3],17) == P([2,4,6],17)
@@ -708,12 +720,65 @@ def test_nmod_poly():
708720
assert Z([1,2,3]) * P([1,2,3],17) == P([1,4,10,12,9], 17)
709721
assert P([1,2,3,4,5],17) % P([2,3,4],17) == P([12,12],17)
710722
assert P([1,2,3,4,5],17) // P([2,3,4],17) == P([3,16,14],17)
723+
assert raises(lambda: P([1,2],5) // P([],5), ZeroDivisionError)
724+
assert raises(lambda: P([1,2],5) % P([],5), ZeroDivisionError)
725+
assert raises(lambda: divmod(P([1,2],5), P([],5)), ZeroDivisionError)
711726
assert P([1,2,3,4,5],17) ** 2 == P([1,2,3,4,5],17) * P([1,2,3,4,5],17)
712-
assert P([1,2,3],17) * flint.nmod(3,17) == P([3,6,9],17)
727+
assert P([1,2,3],17) * N(3,17) == P([3,6,9],17)
728+
s = P([1,2,3],17)
729+
s2 = P([1,2,3],5)
730+
assert raises(lambda: s + s2, ValueError)
731+
assert raises(lambda: s - s2, ValueError)
732+
assert raises(lambda: s * s2, ValueError)
733+
assert raises(lambda: s // s2, ValueError)
734+
assert raises(lambda: s % s2, ValueError)
735+
assert raises(lambda: s2 + s, ValueError)
736+
assert raises(lambda: s2 - s, ValueError)
737+
assert raises(lambda: s2 * s, ValueError)
738+
assert raises(lambda: s2 // s, ValueError)
739+
assert raises(lambda: s2 % s, ValueError)
740+
assert raises(lambda: s + [], TypeError)
741+
assert raises(lambda: s - [], TypeError)
742+
assert raises(lambda: s * [], TypeError)
743+
assert raises(lambda: s // [], TypeError)
744+
assert raises(lambda: s % [], TypeError)
745+
assert raises(lambda: [] + s, TypeError)
746+
assert raises(lambda: [] - s, TypeError)
747+
assert raises(lambda: [] * s, TypeError)
748+
assert raises(lambda: [] // s, TypeError)
749+
assert raises(lambda: [] % s, TypeError)
750+
assert raises(lambda: pow(P([1,2],3), 3, 4), NotImplementedError)
713751
assert str(P([1,2,3],17)) == "3*x^2 + 2*x + 1"
752+
assert P([1,2,3],17).repr() == "nmod_poly([1, 2, 3], 17)"
714753
p = P([3,4,5],17)
715-
assert p(14) == flint.nmod(2,17)
754+
assert p(14) == N(2,17)
716755
assert p(P([1,2,3],17)) == P([12,11,11,9,11],17)
756+
assert raises(lambda: p({}), TypeError)
757+
p2 = P([3,4,5],17)
758+
assert p2[1] == N(4,17)
759+
assert p2[-1] == N(0,17)
760+
p2[1] = N(2,17)
761+
assert p2 == P([3,2,5],17)
762+
p2[1] = 6
763+
assert p2 == P([3,6,5],17)
764+
def set_bad1():
765+
p2[-1] = 3
766+
def set_bad2():
767+
p2[2] = []
768+
assert raises(set_bad1, ValueError)
769+
assert raises(set_bad2, TypeError)
770+
assert bool(P([], 5)) is False
771+
assert bool(P([1], 5)) is True
772+
assert P([1,2,1],3).gcd(P([1,1],3)) == P([1,1],3)
773+
raises(lambda: P([1,2],3).gcd([]), TypeError)
774+
raises(lambda: P([1,2],3).gcd(P([1,2],5)), ValueError)
775+
p3 = P([1,2,3,4,5,6],7)
776+
f3 = (N(6,7), [(P([6, 1],7), 5)])
777+
assert p3.factor() == f3
778+
# XXX: factor ignores an invalid algorithm string
779+
for alg in [None, 'berlekamp', 'cantor-zassenhaus']:
780+
assert p3.factor(alg) == f3
781+
assert p3.factor(algorithm=alg) == f3
717782

718783
def test_nmod_mat():
719784
M = flint.nmod_mat

0 commit comments

Comments
 (0)