I updated the log in my github.  It just removes an explicit call
to .expand() and instead just calls ._eval_expand_multinomial.  It
should make things a little faster.

~Luke


On Sep 2, 4:00 pm, Ondrej Certik <ond...@certik.cz> wrote:
> The tests pass for me too. Could you explain a bit in the log what the
> advantage of your patch is against the previous way? the current log
> is:
>
> "
>     Modified _eval_expand_multinomial to call _eval_expand_multinomial
> instead of .expand()
> "
>
> but no tests were changed, sp does it implement some new fuctionality,
> or makes it faster, or something else?
>
> Ondrej
>
> On Wed, Sep 2, 2009 at 2:58 PM, Luke<hazelnu...@gmail.com> wrote:
>
> > It has been a while since I looked at this, but I went ahead and
> > implemented what Ronan suggested.  The branch is on my git hub:
> >http://github.com/hazelnusse/sympy/tree/expand_neg_int_powers
>
> > It passes all tests on my machine.
>
> > Let me know what you think.
>
> > ~Luke
>
> > On Aug 9, 7:24 pm, "Aaron S. Meurer" <asmeu...@gmail.com> wrote:
> >> On Aug 9, 2009, at 8:07 PM, Ronan Lamy wrote:
>
> >> > Le dimanche 09 août 2009 à 16:34 -0700, Luke a écrit :
>
> >> >>> * This line suggests that it would be helpful to create an 'inverse'
> >> >>> property - less work is needed to create this inverse than for a
> >> >>> generic
> >> >>> Pow instance.
>
> >> >> Could you elaborate on what you mean here?  Do you mean an inverse
> >> >> property to Pow instances which have a integer exponent?  Perhaps
> >> >> 'reciprocal' instead of 'inverse'?
> >> > Yes, I guess 'reciprocal' is better. I mean a class property defined
> >> > for
> >> > all instances that would look like:
> >> > @property
> >> > def reciprocal(self):
> >> >    if self.exp == -1:
> >> >        return self.base
> >> >    else:
> >> >        return Basic.__new__(self.__class__, self.base, -self.exp)
>
> >> >>> *I don't see the point of the third test: it's only testing that (x
> >> >>> +y)**2*(x+y)**-4 == (x+y)**-2 which isn't related to expand.
>
> >> >> Yes, you are right, it isn't testing expand but I guess it probably
> >> >> doesn't hurt to keep it in either.
> >> > No, it doesn't hurt much, but each unneeded test makes running the
> >> > full
> >> > test suite a tiny bit more painful.
>
> >> Maybe we should replace it with something that doesn't have
> >> automatically combining exponents, such as:
>
> >> (x + y)**(2 + x)*(x + y)**(-x - 4)
>
> >> Then it at least checks to see if multinomial is being called after
> >> power_exp.  Actually this isn't guarantied, because expand hints are
> >> applied in arbitrary order.  See the expand docstring.  So I am not
> >> sure if this will even work, and if so if it will on every machine
> >> (with different hash values and thus different orders in the hints
> >> dict).  I forget how the expand functions are structured if
> >> expand_power_exp will call expand_multinomial afterwords or not (with
> >> the deep option set to True).
>
> >> Otherwise I agree.  It is highly unlikely that we are ever going to
> >> change the fundamental automatic simplification of (x + y)**2*(x +
> >> y)**(-4) to (x + y)**(-2), which is the same sort of thing as x*x ==
> >> x**2.  And if it is broken, there are plenty of other tests that will
> >> break instead (such as the specifically structured
> >> test_Mul_doesnt_expand_exp() and others in test_arit.py.
>
> >> Aaron Meurer
>
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sympy-patches" group.
To post to this group, send email to sympy-patches@googlegroups.com
To unsubscribe from this group, send email to 
sympy-patches+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sympy-patches?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to