def _eval_expand_complex(self, *args): if self[0].is_real: return self re, im = self[0].as_real_imag() denom = sin(re)**2 + Basic.sinh(im)**2 return (sin(re)*cos(re) - \ S.ImaginaryUnit*Basic.sinh(im)*Basic.cosh(im))/denom
def _eval_apply(self, arg): arg = Basic.sympify(arg) if isinstance(arg, Basic.Number): if isinstance(arg, Basic.NaN): return S.NaN elif isinstance(arg, Basic.Zero): return S.One elif arg.is_negative: return self(-arg) else: i_coeff = arg.as_coefficient(S.ImaginaryUnit) if i_coeff is not None: return Basic.cosh(i_coeff) else: pi_coeff = arg.as_coefficient(S.Pi) if pi_coeff is not None: if isinstance(pi_coeff, Basic.Rational): cst_table = { 1 : S.One, 2 : S.Zero, 3 : S.Half, 4 : S.Half*Basic.sqrt(2), 6 : S.Half*Basic.sqrt(3), } try: result = cst_table[pi_coeff.q] if (2*pi_coeff.p // pi_coeff.q) % 4 in (1, 2): return -result else: return result except KeyError: pass coeff, terms = arg.as_coeff_terms() if coeff.is_negative: return self(-arg)
def _eval_expand_complex(self, *args): if self[0].is_real: return self re, im = self[0].as_real_imag() return cos(re)*Basic.cosh(im) - \ S.ImaginaryUnit*sin(re)*Basic.sinh(im)