I posted the following on the SO page def iflfactor(eq): """Return the "I'm feeling lucky" factored form of eq.""" e = Mul(*[horner(e) if e.is_Add else e for e in Mul.make_args(factor_terms(expand(eq)))]) r, e = cse(e) s = [ri[0] for ri in r] e = Mul(*[collect(ei.expand(), s) if ei.is_Add else ei for ei in Mul.make_args(e[0])]).subs(r) return e
>>> iflfactor(eq) 2*x*y*z*(x**2 + x*y + y**2 + (z - 3)*(x + y + z) + 3) >>> _.count_ops() 15 -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sympy+unsubscr...@googlegroups.com. To post to this group, send email to sympy@googlegroups.com. Visit this group at http://groups.google.com/group/sympy?hl=en. For more options, visit https://groups.google.com/groups/opt_out.