On Thursday, September 6, 2012 6:26:38 PM UTC-7, smichr wrote:
On Fri, Sep 7, 2012 at 1:40 AM, Larry Wigton lbw...@aol.com 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 sympy@googlegroups.com.
To unsubscribe from this group, send email to
sympy+unsubscr...@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/sympy?hl=en.