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.