On Tue, Jul 26, 2011 at 3:26 PM, Aaron Meurer <[email protected]> wrote:
> On Tue, Jul 26, 2011 at 9:02 AM, Chris Smith <[email protected]> wrote:
>>> Actually, I see now that this is the wrong approach.  subs should be
>>> able to do multiple substitutions at once at the core level.  The
>>> reason is efficiency. Consider the following
>>
>> Just to be clear, by "multiple substitutions at once" do you mean
>> doing multiple substitutions before rebuilding the expression? So `(x
>> + y + z).subs([(x, 1), (y, 2)])` would iterate through all
>> replacements with the `[x, y, z]` args before rebuilding the Add? BTW,
>> to keep this static one would either have to remove the subexpressions
>> after a successful replacement or use dummies as intermediates.
>
> If you do it right, there should be no need for Dummys, because you
> should only hit each part of the expression exactly once, and never
> recurse through something that was newly put there by subs.  This is
> how xreplace works (see the code).  Actually, it's important that you
> do hit each part only once, first, because it's more efficient that
> way, and second, because if you don't you risk substituting something
> twice.
>
Yes, that is what I meant by "remove the subexpressions after a
successful replacement" -- they have t be removed from consideration
after a successful hit.

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sympy?hl=en.

Reply via email to