According to http://docs.sympy.org/latest/modules/core.html f.rewrite(exp), f.rewrite(sin, exp), and f.rewrite([sin,], exp) are all valid. I found that I can replace just the sin term with the following expression:
>>> f.replace(sin, lambda arg: sin(arg).rewrite(sin, exp)) -I*(exp(I*x) - exp(-I*x))/2 + cos(y)/gamma(z) This seems to create the functionality I was expecting. But I'm still not sure if I don't understand what the docs are saying about rewrite or if there's a bug. On Tuesday, November 1, 2016 at 1:18:00 PM UTC-5, Aaron Meurer wrote: > I never knew about this pattern argument to rewrite. My guess is that > there's a bug in there. According to the docstring, you're supposed to > call it as f.rewrite([sin,], exp), but for me that does the same > thing. > > I would suggest using f.replace if you want targeted rewriting. > > Aaron Meurer > > On Tue, Nov 1, 2016 at 2:06 PM, Nathan Thern <[email protected] > <javascript:>> wrote: > > I'm new to sympy and pouring through the documentation. I don't > understand > > the "pattern" part of the argument to rewrite. The following portion of > a > > session illustrates my question: > > > >>>> f=sin(x)+cos(y)/gamma(z) > >>>> f.rewrite(exp) > > -I*(exp(I*x) - exp(-I*x))/2 + (exp(I*y)/2 + exp(-I*y)/2)/gamma(z) > >>>> f.rewrite(sin,exp) > > -I*(exp(I*x) - exp(-I*x))/2 + (exp(I*y)/2 + exp(-I*y)/2)/gamma(z) > > > > Why does rewrite(sin,exp) also rewrite the cos(...) part of the > expression > > when it has been explicitly given "sin" as the pattern to rewrite? > > > > NT > > > > > > -- > > You received this message because you are subscribed to the Google > Groups > > "sympy" group. > > To unsubscribe from this group and stop receiving emails from it, send > an > > email to [email protected] <javascript:>. > > To post to this group, send email to [email protected] > <javascript:>. > > Visit this group at https://groups.google.com/group/sympy. > > To view this discussion on the web visit > > > https://groups.google.com/d/msgid/sympy/f7874739-0d2b-4259-9b3d-76ae958daf8a%40googlegroups.com. > > > > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/sympy. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/c8fdec88-74d0-4dc6-8736-cb5b5dfbcaeb%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
