Skip to content

Commit bed7d20

Browse files
committed
add tests for nmod_mat
1 parent 2940934 commit bed7d20

File tree

2 files changed

+77
-1
lines changed

2 files changed

+77
-1
lines changed

bin/coverage.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export PYTHON_FLINT_COVERAGE=true
3434
python setup.py build_ext --inplace
3535

3636
pytest --cov flint test/test.py
37-
coverage run --append test/dtest.py
37+
#coverage run --append test/dtest.py
3838

3939
#coverage report -m
4040
coverage html

test/test.py

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1029,6 +1029,7 @@ def test_nmod_mat():
10291029
assert (a * flint.fmpz(3)).entries() == [G(x,17) for x in [3,6,9,12,15,18]]
10301030
assert (flint.fmpz(3) * a).entries() == [G(x,17) for x in [3,6,9,12,15,18]]
10311031
assert M(2,2,[1,1,2,2],17).rank() == 1
1032+
assert M(Z(2,2,[1,2,3,4]),17) == M(2,2,[1,2,3,4],17)
10321033
A = M(5,3,Z.randbits(5,3,5).entries(),17)
10331034
B = M(3,7,Z.randtest(3,7,5).entries(),17)
10341035
C = M(7,2,Z.randtest(7,2,5).entries(),17)
@@ -1039,13 +1040,88 @@ def test_nmod_mat():
10391040
assert repr(M(2,2,[1,2,3,4],17)) == 'nmod_mat(2, 2, [1, 2, 3, 4], 17)'
10401041
ctx.pretty = True
10411042
assert str(M(2,2,[1,2,3,4],17)) == '[1, 2]\n[3, 4]'
1043+
assert repr(M(2,2,[1,2,3,4],17)) == '[1, 2]\n[3, 4]'
10421044
assert M(1,2,[3,4],17) / 3 == M(1,2,[3,4],17) * (~G(3,17))
10431045
assert M(2,2,[1,2,3,4], 17).inv().det() == ~(M(2,2,[1,2,3,4], 17).det())
10441046
assert M(2,2,[1,2,3,4], 17).inv().inv() == M(2,2,[1,2,3,4], 17)
10451047
assert M(2,2,[0,1,2,3],17) * M(2, 2, [2,3,4,5], 17) == M(2,2,[4,5,16,4],17)
10461048
assert raises(lambda: M([1], 5), TypeError)
10471049
assert raises(lambda: M([[1],[2,3]], 5), ValueError)
1050+
assert raises(lambda: M([[1],[2]], 0), ValueError)
1051+
assert raises(lambda: M(None), TypeError)
1052+
assert raises(lambda: M(None,17), TypeError)
1053+
assert M(2,3,17) == M(2,3,[0,0,0,0,0,0],17)
1054+
assert raises(lambda: M(2,3,[0,0,0,0,0],17), ValueError)
1055+
assert raises(lambda: M(2,3,[0,1],[1,2],17), ValueError)
10481056
assert M([[1,2,3],[4,5,6]], 5) == M(2,3,[1,2,3,4,5,6], 5)
1057+
assert raises(lambda: M([[0]],13) < M([[1]],13), TypeError)
1058+
assert (M([[1]],17) == M([[1]],13)) is False
1059+
assert (M([[1]],17) != M([[1]],13)) is True
1060+
assert (M([[1]],17) == None) is False
1061+
assert (M([[1]],17) != None) is True
1062+
M2 = M.randtest(3,4,5)
1063+
assert all(0 <= int(x) < 5 for x in M2.entries())
1064+
assert (M2.nrows(), M2.ncols()) == (3, 4)
1065+
M3 = M(2,2,[1,2,3,4],17)
1066+
assert M3[0,1] == G(2,17)
1067+
M3_copy = M(M3)
1068+
M3[0,1] = -1
1069+
assert M3[0,1] == G(-1,17)
1070+
def set_bad(i,j):
1071+
M3[i,j] = 2
1072+
# XXX: negative indices should be allowed
1073+
assert raises(lambda: M3[-1,0], ValueError)
1074+
assert raises(lambda: M3[0,-1], ValueError)
1075+
assert raises(lambda: set_bad(-1,0), ValueError)
1076+
assert raises(lambda: set_bad(0,-1), ValueError)
1077+
# XXX: Should be IndexError
1078+
assert raises(lambda: M3[2,0], ValueError)
1079+
assert raises(lambda: M3[0,2], ValueError)
1080+
assert raises(lambda: set_bad(2,0), ValueError)
1081+
assert raises(lambda: set_bad(0,2), ValueError)
1082+
def set_bad2():
1083+
M3[0,0] = 1.5
1084+
assert raises(set_bad2, ValueError)
1085+
assert raises(lambda: M3 + [], TypeError)
1086+
assert raises(lambda: M3 - [], TypeError)
1087+
assert raises(lambda: M3 * [], TypeError)
1088+
assert raises(lambda: M3 / [], TypeError)
1089+
assert raises(lambda: [] + M3, TypeError)
1090+
assert raises(lambda: [] - M3, TypeError)
1091+
assert raises(lambda: [] * M3, TypeError)
1092+
assert raises(lambda: [] / M3, TypeError)
1093+
assert raises(lambda: M([[1]],3) + M([[1]],5), ValueError)
1094+
assert raises(lambda: M([[1]],3) - M([[1]],5), ValueError)
1095+
assert raises(lambda: M([[1]],3) * M([[1]],5), ValueError)
1096+
assert Z([[1]]) + M([[1]],3) == M([[2]],3)
1097+
assert M([[1]],3) + Z([[1]]) == M([[2]],3)
1098+
assert Z([[1]]) - M([[1]],3) == M([[0]],3)
1099+
assert M([[1]],3) - Z([[1]]) == M([[0]],3)
1100+
assert Z([[1]]) * M([[1]],3) == M([[1]],3)
1101+
assert M([[1]],3) * Z([[1]]) == M([[1]],3)
1102+
assert raises(lambda: M([[1]],3) - M([[1,2]],3), ValueError)
1103+
assert raises(lambda: M([[1,2]],3) * M([[1,2]],3), ValueError)
1104+
M4 = M([[1,2],[3,4]],17)
1105+
assert M4.inv() == M([[15,1],[10,8]],17)
1106+
assert raises(lambda: M([[1,2]],17).inv(), ValueError)
1107+
assert raises(lambda: M([[1,2],[2,4]],17).inv(), ZeroDivisionError)
1108+
assert M([[1,2,3],[4,5,6]],17).transpose() == M([[1,4],[2,5],[3,6]],17)
1109+
M5 = M([[1,2],[3,4]],17)
1110+
X = M([[1],[2]],17)
1111+
b = M5*X
1112+
assert M5.solve(b) == X
1113+
assert raises(lambda: M5.solve([]), TypeError)
1114+
assert raises(lambda: b.solve(M5), ValueError)
1115+
assert raises(lambda: M([[1,2],[2,4]],17).solve(b), ZeroDivisionError)
1116+
M6 = M([[1,2,3],[4,5,6]],17)
1117+
M6_rref = M([[1,0,16],[0,1,2]],17)
1118+
M6_copy = M(M6)
1119+
assert M6.rref() == (M6_rref, 2)
1120+
assert M6 == M6_copy
1121+
assert M6.rref(inplace=True) == (M6_rref, 2)
1122+
assert M6 == M6_rref
1123+
M6 = M6_copy
1124+
assert M6.nullspace() == (M([[1,15,1],[0,0,0],[0,0,0]],17).transpose(), 1)
10491125

10501126
def test_arb():
10511127
A = flint.arb

0 commit comments

Comments
 (0)