コード例 #1
0
ファイル: test_matmul.py プロジェクト: cbm755/diofant
def test_adjoint():
    assert adjoint(A*B) == Adjoint(B)*Adjoint(A)
    assert adjoint(2*A*B) == 2*Adjoint(B)*Adjoint(A)
    assert adjoint(2*I*C) == -2*I*Adjoint(C)

    M = Matrix(2, 2, [1, 2 + I, 3, 4]).as_immutable()
    MA = Matrix(2, 2, [1, 3, 2 - I, 4])
    assert adjoint(M) == MA
    assert adjoint(2*M) == 2*MA
    assert adjoint(MatMul(2, M)) == MatMul(2, MA).doit()
コード例 #2
0
ファイル: test_matmul.py プロジェクト: cbm755/diofant
def test_transpose():
    assert transpose(A*B) == Transpose(B)*Transpose(A)
    assert transpose(2*A*B) == 2*Transpose(B)*Transpose(A)
    assert transpose(2*I*C) == 2*I*Transpose(C)

    M = Matrix(2, 2, [1, 2 + I, 3, 4]).as_immutable()
    MT = Matrix(2, 2, [1, 3, 2 + I, 4])
    assert transpose(M) == MT
    assert transpose(2*M) == 2*MT
    assert transpose(MatMul(2, M)) == MatMul(2, MT).doit()
コード例 #3
0
def bc_matmul(expr):
    factor, matrices = expr.as_coeff_matrices()

    i = 0
    while (i + 1 < len(matrices)):
        A, B = matrices[i:i + 2]
        if isinstance(A, BlockMatrix) and isinstance(B, BlockMatrix):
            matrices[i] = A._blockmul(B)
            matrices.pop(i + 1)
        elif isinstance(A, BlockMatrix):
            matrices[i] = A._blockmul(BlockMatrix([[B]]))
            matrices.pop(i + 1)
        elif isinstance(B, BlockMatrix):
            matrices[i] = BlockMatrix([[A]])._blockmul(B)
            matrices.pop(i + 1)
        else:
            i += 1
    return MatMul(factor, *matrices).doit()
コード例 #4
0
ファイル: test_matmul.py プロジェクト: cbm755/diofant
def test_doit_drills_down():
    X = ImmutableMatrix([[1, 2], [3, 4]])
    Y = ImmutableMatrix([[2, 3], [4, 5]])
    assert MatMul(X, MatPow(Y, 2)).doit() == X*Y**2
    assert MatMul(C, Transpose(D*C)).doit().args == (C, C.T, D.T)
コード例 #5
0
ファイル: test_matmul.py プロジェクト: cbm755/diofant
def test_doit():
    assert MatMul(C, 2, D).args == (C, 2, D)
    assert MatMul(C, 2, D).doit().args == (2, C, D)
    assert MatMul(C, Transpose(D*C)).args == (C, Transpose(D*C))
    assert MatMul(C, Transpose(D*C)).doit(deep=True).args == (C, C.T, D.T)
コード例 #6
0
ファイル: test_matmul.py プロジェクト: cbm755/diofant
def test_unpack():
    assert unpack(MatMul(A, evaluate=False)) == A
    x = MatMul(A, B)
    assert unpack(x) == x
コード例 #7
0
ファイル: test_matmul.py プロジェクト: cbm755/diofant
def test_any_zeros():
    assert any_zeros(MatMul(A, ZeroMatrix(m, k), evaluate=False)) == \
        ZeroMatrix(n, k)
コード例 #8
0
ファイル: test_matmul.py プロジェクト: cbm755/diofant
def test_xxinv():
    assert xxinv(MatMul(D, Inverse(D), D, evaluate=False)) == \
        MatMul(Identity(n), D, evaluate=False)
コード例 #9
0
ファイル: test_matmul.py プロジェクト: cbm755/diofant
def test_remove_ids():
    assert remove_ids(MatMul(A, Identity(m), B, evaluate=False)) == \
        MatMul(A, B, evaluate=False)
    assert null_safe(remove_ids)(MatMul(Identity(n), evaluate=False)) == \
        MatMul(Identity(n), evaluate=False)
コード例 #10
0
ファイル: test_matmul.py プロジェクト: cbm755/diofant
def test_factor_in_front():
    assert factor_in_front(MatMul(A, 2, B, evaluate=False)) ==\
        MatMul(2, A, B, evaluate=False)
コード例 #11
0
ファイル: test_matmul.py プロジェクト: cbm755/diofant
def test_matmul_new():
    pytest.raises(ShapeError, lambda: MatMul(A, C))
    MatMul(A, C, check=False)  # not raises
コード例 #12
0
ファイル: test_matmul.py プロジェクト: cbm755/diofant
def test_collapse_MatrixBase():
    A = Matrix([[1, 1], [1, 1]])
    B = Matrix([[1, 2], [3, 4]])
    assert MatMul(A, B).doit() == ImmutableMatrix([[4, 6], [4, 6]])
コード例 #13
0
ファイル: test_matmul.py プロジェクト: cbm755/diofant
def test_matmul_sympify():
    assert isinstance(MatMul(eye(1), eye(1)).args[0], Basic)
コード例 #14
0
ファイル: test_matmul.py プロジェクト: cbm755/diofant
def test_matmul_scalar_Matrix_doit():
    # Issue sympy/sympy#9053
    X = Matrix([[1, 2], [3, 4]])
    assert MatMul(2, X).doit() == 2*X
コード例 #15
0
ファイル: test_matmul.py プロジェクト: cbm755/diofant
def test_doit_deep_false_still_canonical():
    assert (MatMul(C, Transpose(D*C), 2).doit(deep=False).args ==
            (2, C, Transpose(D*C)))