def test_col_swap(): A = DenseMatrix(2, 2, [1, 2, 3, 4]) B = DenseMatrix(2, 2, [2, 1, 4, 3]) A.col_swap(0, 1) assert A == B
def test_row_swap(): A = DenseMatrix(2, 2, [1, 2, 3, 4]) B = DenseMatrix(2, 2, [3, 4, 1, 2]) A.row_swap(0, 1) assert A == B
def test_is_square(): m = DenseMatrix([[1],[1]]) m2 = DenseMatrix([[2, 2], [2, 2]]) assert not m.is_square assert m2.is_square
def test_reshape(): A = DenseMatrix(2, 2, [1, 2, 3, 4]) B = DenseMatrix(4, 1, [1, 2, 3, 4]) C = A.reshape(4, 1) assert C == B assert C != A
def test_col_insert(): M = zeros(3) V = ones(3, 1) assert M.col_insert(1, V) == DenseMatrix([[0, 1, 0, 0], [0, 1, 0, 0], [0, 1, 0, 0]])
def test_rowadd(): M = ones(3) assert M.rowadd(2, 1, 1) == DenseMatrix([[1, 1, 1], [1, 1, 1], [2, 2, 2]])
def test_LU(): A = DenseMatrix(3, 3, [1, 3, 5, 2, 5, 6, 8, 3, 1]) L, U = A.LU() assert L == DenseMatrix(3, 3, [1, 0, 0, 2, 1, 0, 8, 21, 1]) assert U == DenseMatrix(3, 3, [1, 3, 5, 0, -1, -4, 0, 0, 45])
def test_col_join(): assert eye(3).col_join(DenseMatrix([[7, 7, 7]])) == \ DenseMatrix([[1, 0, 0], [0, 1, 0], [0, 0, 1], [7, 7, 7]])
def test_set_item(): A = DenseMatrix(3, 3, [1, 2, 3, 4, 5, 6, 7, 8, 9]) A[2] = 7 A[2, 2] = 8 A[-2] = 3 A[-2, -1] = 1 assert A == DenseMatrix(3, 3, [1, 2, 7, 4, 5, 1, 7, 3, 8]) A[0, :] = [10, 11, 12] assert A == DenseMatrix(3, 3, [10, 11, 12, 4, 5, 1, 7, 3, 8]) A[:, 1] = [13, 14, 15] assert A == DenseMatrix(3, 3, [10, 13, 12, 4, 14, 1, 7, 15, 8]) A[0::2, :] = [[1, 2, 3], [4, 5, 6]] assert A == DenseMatrix(3, 3, [1, 2, 3, 4, 14, 1, 4, 5, 6]) B = DenseMatrix(A) B[[0, 2], 0] = -1 assert B == DenseMatrix(3, 3, [-1, 2, 3, 4, 14, 1, -1, 5, 6]) B = DenseMatrix(A) B[[0, 2], 0] = [-1, -2] assert B == DenseMatrix(3, 3, [-1, 2, 3, 4, 14, 1, -2, 5, 6]) B = DenseMatrix(A) B[[0, 2], 0] = [[-1], [-2]] assert B == DenseMatrix(3, 3, [-1, 2, 3, 4, 14, 1, -2, 5, 6]) B = DenseMatrix(A) B[[0, 2], [0]] = [-1, -2] assert B == DenseMatrix(3, 3, [-1, 2, 3, 4, 14, 1, -2, 5, 6]) B = DenseMatrix(A) B[[0, 2], [0]] = [[-1], [-2]] assert B == DenseMatrix(3, 3, [-1, 2, 3, 4, 14, 1, -2, 5, 6]) B = DenseMatrix(A) B[0, [0, 2]] = [-1, -2] assert B == DenseMatrix(3, 3, [-1, 2, -2, 4, 14, 1, 4, 5, 6]) B = DenseMatrix(A) B[0, [0, 2]] = -1 assert B == DenseMatrix(3, 3, [-1, 2, -1, 4, 14, 1, 4, 5, 6]) B = DenseMatrix(A) B[:, [0, 2]] = -1 assert B == DenseMatrix(3, 3, [-1, 2, -1, -1, 14, -1, -1, 5, -1]) B = DenseMatrix(A) B[[0, 1], [0, 2]] = -1 assert B == DenseMatrix(3, 3, [-1, 2, -1, -1, 14, -1, 4, 5, 6])
def test_neg(): A = DenseMatrix(2, 3, [1, 2, 3, 4, 5, 6]) B = DenseMatrix(2, 3, [-1, -2, -3, -4, -5, -6]) assert -A == B
def test_atoms(): a = Symbol("a") b = Symbol("b") X = DenseMatrix([[a, 2], [b, 4]]) assert X.atoms(Symbol) == set([a, b])
def test_cross(): M = DenseMatrix(1, 3, [1, 2, 3]) V = DenseMatrix(1, 3, [3, 4, 5]) assert M.cross(V) == DenseMatrix(1, 3, [-2, 4, -2]) raises(ShapeError, lambda: DenseMatrix(1, 2, [1, 1]).cross(DenseMatrix(1, 2, [1, 1])))
def test_dot(): A = DenseMatrix(2, 3, [1, 2, 3, 4, 5, 6]) B = DenseMatrix(2, 1, [7, 8]) assert A.dot(B) == DenseMatrix(1, 3, [39, 54, 69]) assert ones(1, 3).dot(ones(3, 1)) == 3
def test_tolist(): A = DenseMatrix([2, 3]) assert A.shape == (2, 1) assert A.tolist() == [[2], [3]]
def test_str_repr(): d = DenseMatrix(3, 2, [1, 2, 3, 4, 5, 6]) assert str(d) == '[1, 2]\n[3, 4]\n[5, 6]\n' assert str(d) == repr(d)
def test_row_join(): assert eye(3).row_join(DenseMatrix([7, 7, 7])) == \ DenseMatrix([[1, 0, 0, 7], [0, 1, 0, 7], [0, 0, 1, 7]])
def test_DenseMatrix_symbols(): x, y, z = symbols("x y z") D = DenseMatrix(4, 4, [1, 0, 1, 0, 0, z, y, 0, z, 1, x, 1, 1, 1, 0, 0]) assert D.get(1, 2) == y
def test_row_insert(): M = zeros(3) V = ones(1, 3) assert M.row_insert(1, V) == DenseMatrix([[0, 0, 0], [1, 1, 1], [0, 0, 0], [0, 0, 0]])
def test_size(): A = DenseMatrix(2, 2, [1, 2, 3, 4]) assert A.size == 4
def test_rowmul(): M = ones(3) assert M.rowmul(2, 2) == DenseMatrix([[1, 1, 1], [1, 1, 1], [2, 2, 2]])
def test_shape(): A = DenseMatrix(2, 2, [1, 2, 3, 4]) assert A.shape == (2, 2)
def test_row_col(): m = DenseMatrix(3, 3, [1, 2, 3, 4, 5, 6, 7, 8, 9]) assert m.row(0) == DenseMatrix(1, 3, [1, 2, 3]) assert m.col(0) == DenseMatrix(3, 1, [1, 4, 7])
def test_get_item(): A = DenseMatrix(3, 3, [1, 2, 3, 4, 5, 6, 7, 8, 9]) assert A[5] == 6 assert A[-1] == 9 assert A[2, 2] == 9 assert A[-2, 2] == 6 assert A[1:2, 0] == DenseMatrix(1, 1, [4]) assert A[1:3, 0] == DenseMatrix(2, 1, [4, 7]) assert A[1:3, 0] == DenseMatrix(2, 1, [4, 7]) assert A[1:3, 1:] == DenseMatrix(2, 2, [5, 6, 8, 9]) assert A[1:3, :1] == DenseMatrix(2, 1, [4, 7]) assert A[0, 0:] == DenseMatrix(1, 3, [1, 2, 3]) assert A[2, :] == DenseMatrix(1, 3, [7, 8, 9]) assert A[:2, -2:] == DenseMatrix(2, 2, [2, 3, 5, 6]) assert A[1:, :3] == DenseMatrix(2, 3, [4, 5, 6, 7, 8, 9]) assert A[1:] == [2, 3, 4, 5, 6, 7, 8, 9] assert A[-2:] == [8, 9] assert A[[0, 2], 0] == DenseMatrix(2, 1, [1, 7]) assert A[[0, 2], [0]] == DenseMatrix(2, 1, [1, 7]) assert A[0, [0, 2]] == DenseMatrix(1, 2, [1, 3]) assert A[[0], [0, 2]] == DenseMatrix(1, 2, [1, 3]) raises(IndexError, lambda: A[-10]) raises(IndexError, lambda: A[9]) raises(IndexError, lambda: A[1:3, 3]) raises(IndexError, lambda: A[1:3, -4])