On Thursday, September 6, 2012 6:26:38 PM UTC-7, smichr wrote:
>
> On Fri, Sep 7, 2012 at 1:40 AM, Larry Wigton <[email protected] <javascript:>>
> wrote:
> > Python code using cse from sympy:
> >
> > from sympy import *
> > x=Symbol('x')
> > y=Symbol('y')
> > eq1 = 5*x**3*y**2 + y**3
> > eq2 = 4*x**2*y**3 + y**2
> > eq = [eq1,eq2]
> > print eq
> > (red,rep) = cse(eq)
> > print red
> > print rep
> > eq = [eq2,eq1]
> > print eq
> > (red,rep) = cse(eq)
> > print red
> > print rep
> >
> > ***********************************************
> >
> > Output from the code:
> >
> > [5*x**3*y**2 + y**3, 4*x**2*y**3 + y**2]
> > [(x0, y**3), (x1, x0**(2/3))]
> > [5*x**3*x1 + x0, 4*x**2*x0 + x1]
> >
> > [4*x**2*y**3 + y**2, 5*x**3*y**2 + y**3]
> > [(x0, y**2), (x1, x0**(3/2))]
> > [4*x**2*x1 + x0, 5*x**3*x0 + x1]
> >
> > **********************************************
>
> Current master gives
>
> [5*x**3*y**2 + y**3, 4*x**2*y**3 + y**2]
> [(x0, y**2)]
> [x0*(5*x**3 + y), x0*(4*x**2*y + 1)]
> [4*x**2*y**3 + y**2, 5*x**3*y**2 + y**3]
> [(x0, y**2)]
> [x0*(4*x**2*y + 1), x0*(5*x**3 + y)]
>
> googling sympy bleeding edge if you would like to get the most
> up-to-date (and soon to be released) 0.7.2 version.
>
Thank you for telling me about the Bleeding edge version of sympy.
Unfortunately it does not work for case which worked before.
Test case for bleeding edge version of sympy:
**************************************************
pg00 = Symbol('pg00')
pg01 = Symbol('pg01')
eq1 = sympify(pg01**2/pg00**2)
eq2 = sympify(1.0 - 2*pg01/pg00)
eq3 = sympify(pg01*(1.0 - pg01/pg00))
eq = [eq1,eq2,eq3]
print eq
(red,rep) = cse(eq)
print red
print rep
********************************************************
Output from code:
[pg01**2/pg00**2, 1.0 - 2*pg01/pg00, pg01*(1.0 - pg01/pg00)]
Traceback (most recent call last):
File "mytest3.py", line 12, in <module>
(red,rep) = cse(eq)
File "/acct/lbw9902/gitstuff/sympy/sympy/simplify/cse_main.py", line 313,
in cse
reduced_exprs[j] = update(expr)
File "/acct/lbw9902/gitstuff/sympy/sympy/simplify/cse_main.py", line 309,
in <lambda>
update = lambda x: x.subs(subtree, sym)
File "/acct/lbw9902/gitstuff/sympy/sympy/core/basic.py", line 852, in subs
rv = rv._subs(old, new)
File "/acct/lbw9902/gitstuff/sympy/sympy/core/cache.py", line 88, in
wrapper
func_cache_it_cache[k] = r = func(*args, **kw_args)
File "/acct/lbw9902/gitstuff/sympy/sympy/core/basic.py", line 951, in
_subs
rv = fallback(self, old, new)
File "/acct/lbw9902/gitstuff/sympy/sympy/core/basic.py", line 938, in
fallback
arg = arg._subs(old, new, **hints)
File "/acct/lbw9902/gitstuff/sympy/sympy/core/cache.py", line 88, in
wrapper
func_cache_it_cache[k] = r = func(*args, **kw_args)
File "/acct/lbw9902/gitstuff/sympy/sympy/core/basic.py", line 949, in
_subs
rv = self._eval_subs(old, new)
File "/acct/lbw9902/gitstuff/sympy/sympy/core/mul.py", line 1276, in
_eval_subs
rat.append(ndiv(c_e, old_e))
File "/acct/lbw9902/gitstuff/sympy/sympy/core/mul.py", line 1186, in ndiv
if not b.q % a.q or not a.q % b.q:
AttributeError: 'Infinity' object has no attribute 'q'
**************************************************************
Output from sympy 7.1
[pg01**2/pg00**2, 1.0 - 2*pg01/pg00, pg01*(1.0 - pg01/pg00)]
[(x0, 1/pg00), (x1, pg01*x0)]
[x1**2, -2*x1 + 1.0, pg01*(-x1 + 1.0)]
***********************************************************
So it looks like bleeding edge version of sympy still needs some work.
Larry Wigton
--
You received this message because you are subscribed to the Google Groups
"sympy" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/sympy/-/HAC2fglIj6YJ.
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.