def _eval_expand_complex(self, deep=True, **hints): if deep: abs = C.abs(self.args[0].expand(deep, **hints)) arg = C.arg(self.args[0].expand(deep, **hints)) else: abs = C.abs(self.args[0]) arg = C.arg(self.args[0]) if hints['log']: # Expand the log hints['complex'] = False return log(abs).expand(deep, **hints) + S.ImaginaryUnit * arg else: return log(abs) + S.ImaginaryUnit * arg
def _eval_expand_complex(self, deep=True, **hints): if deep: abs = C.abs(self.args[0].expand(deep, **hints)) arg = C.arg(self.args[0].expand(deep, **hints)) else: abs = C.abs(self.args[0]) arg = C.arg(self.args[0]) if hints['log']: # Expand the log hints['complex'] = False return log(abs).expand(deep, **hints) + S.ImaginaryUnit * arg else: return log(abs) + S.ImaginaryUnit * arg
def canonize(cls, y, x): sign_y = C.sign(y) if y.is_zero: if x.is_positive: return S.Zero elif x.is_zero: return S.NaN elif x.is_negative: return S.Pi elif x.is_zero: if sign_y.is_Number: return sign_y * S.Pi/2 else: abs_yx = C.abs(y/x) if sign_y.is_Number and abs_yx.is_number: phi = C.atan(abs_yx) if x.is_positive: return sign_y * phi else: return sign_y * (S.Pi - phi)
def eval(cls, y, x): sign_y = C.sign(y) if y.is_zero: if x.is_positive: return S.Zero elif x.is_zero: return S.NaN elif x.is_negative: return S.Pi elif x.is_zero: if sign_y.is_Number: return sign_y * S.Pi / 2 else: abs_yx = C.abs(y / x) if sign_y.is_Number and abs_yx.is_number: phi = C.atan(abs_yx) if x.is_positive: return sign_y * phi else: return sign_y * (S.Pi - phi)
def _eval_expand_complex(self, *args): abs = C.abs(self.args[0]) arg = C.arg(self.args[0]) return log(abs) + S.ImaginaryUnit * arg
def _eval_expand_complex(self, *args): abs = C.abs(self.args[0]) arg = C.arg(self.args[0]) return log(abs) + S.ImaginaryUnit * arg