def __new__(cls, arg, **old_assumptions): # Return the dagger of a sympy Matrix immediately. if isinstance(arg, (Matrix, numpy_ndarray, scipy_sparse_matrix)): return matrix_dagger(arg) arg = sympify(arg) r = cls.eval(arg) if isinstance(r, Expr): return r obj = Expr.__new__(cls, arg) if isinstance(obj, QExpr): obj.hilbert_space = arg.hilbert_space return obj
def __new__(cls, arg, **old_assumptions): # Return the dagger of a sympy Matrix immediately. if isinstance(arg, (Matrix, numpy_ndarray, scipy_sparse_matrix)): return matrix_dagger(arg) arg = sympify(arg) r = cls.eval(arg) if isinstance(r, Expr): return r #make unevaluated dagger commutative or non-commutative depending on arg if arg.is_commutative: obj = Expr.__new__(cls, arg, **{'commutative':True}) else: obj = Expr.__new__(cls, arg, **{'commutative':False}) if isinstance(obj, QExpr): obj.hilbert_space = arg.hilbert_space return obj