Ejemplo n.º 1
0
def test_unitary():
    U = UnitaryOperator('U')

    assert isinstance(U, UnitaryOperator)
    assert isinstance(U, Operator)

    assert U.inv() == Dagger(U)
    assert U*Dagger(U) == 1
    assert Dagger(U)*U == 1
    assert U.is_commutative is False
    assert Dagger(U).is_commutative is False
def non_commutative_sympify(expr_string, status, boolean):
    if "^" in expr_string:
        expr_string = expr_string.replace("^", "**")

    if "Ad" in expr_string:
        expr_string = expr_string.replace("Ad", "Dagger")

    fixed_string = ""
    if 'Dagger' in expr_string:
        fixed_string = expr_string.replace("Dagger", "sin")
    else:
        fixed_string = expr_string
    temp_evaluated_expr = parse_expr(fixed_string, evaluate=False)
    if status == '0':
        status1 = False
    elif status == '1':
        status1 = True

    new_locals = {
        sym.name: Symbol(sym.name, commutative=status1)
        for sym in temp_evaluated_expr.atoms(Symbol)
    }

    #new_locals = {}
    #for sym in temp_evaluated_expr.atoms(Symbol):
    #       new_locals.update({sym.name:Operator(sym.name)})

    #{'C': C, 'E': E, 'I': I, 'N': N, 'O': O, 'Q': Q, 'S': S}

    new_locals.update({'U': UnitaryOperator('U')})
    new_locals.update({'c': Symbol('c', commutative=True)})
    new_locals.update({'r': Symbol('r', commutative=True)})
    new_locals.update({'t': Symbol('t', commutative=True)})
    new_locals.update({'W': UnitaryOperator('W')})
    new_locals.update({'V': UnitaryOperator('V')})
    new_locals.update({'u': UnitaryOperator('u')})
    new_locals.update({'w': UnitaryOperator('w')})
    new_locals.update({'v': UnitaryOperator('v')})
    new_locals.update({'H': HermitianOperator('H')})
    new_locals.update({'A': HermitianOperator('A')})
    new_locals.update({'T': HermitianOperator('T')})
    new_locals.update({'C': Operator('C')})
    new_locals.update({'Dagger': Dagger})

    return sympify(expr_string, locals=new_locals, evaluate=boolean)
Ejemplo n.º 3
0
def test_sympy__physics__quantum__operator__UnitaryOperator():
    from sympy.physics.quantum.operator import UnitaryOperator
    assert _test_args(UnitaryOperator('U'))