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)
def test_sympy__physics__quantum__operator__UnitaryOperator(): from sympy.physics.quantum.operator import UnitaryOperator assert _test_args(UnitaryOperator('U'))