It might be possible to work around this with the optimizations flag,
but I'd say cse should just be updated to treat derivatives as
separate symbols.

Aaron Meurer

On Wed, Jul 30, 2025 at 1:33 AM Jason Moore <moorepa...@gmail.com> wrote:
>
> Hi,
>
> I tried:
>
> In [18]: import sympy as sm
>
> In [19]: a, b, c = sm.symbols('a, b, c')
>
> In [20]: f = sm.Function('f')(a)
>
> In [21]: expr = f + f.diff() - f.diff()/(f + f.diff()) - a*b + (a*b)**2
>
> In [22]: sm.cse(expr)
> Out[22]:
> ([(x0, f(a)), (x1, Derivative(x0, a)), (x2, x0 + x1)],
>  [a**2*b**2 - a*b - x1/x2 + x2])
>
> In [23]: sm.cse(expr, ignore=[f.diff()])
> Out[23]:
> ([(x0, f(a)), (x1, Derivative(x0, a)), (x2, x0 + x1)],
>  [a**2*b**2 - a*b - x1/x2 + x2])
>
> The outcome I desire is:
>
> ([(x0, f(a)), (x1, Derivative(f(a), a)), (x2, x0 + x1)],
>  [a**2*b**2 - a*b - x1/x2 + x2])
>
> or:
>
> ([(x1, Derivative(f(a), a)), (x2, f(a) + x1)],
>  [a**2*b**2 - a*b - x1/x2 + x2])
>
> that is, that the functions or derivatives are treated like symbols.
>
> The ignore flag is cse does not seem to do that.
>
> Is there a way to use the pre/post processors in cse to do this?
>
> Jason
> moorepants.info
> +01 530-601-9791
>
> --
> 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 view this discussion visit 
> https://groups.google.com/d/msgid/sympy/CAP7f1AjbULou2oaD3Ras8zUb78%3DM3vtorc%3DshSaG-EzMeOogFQ%40mail.gmail.com.

-- 
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 view this discussion visit 
https://groups.google.com/d/msgid/sympy/CAKgW%3D6%2BDyX7XLg-v0cNCC_ONJgShski-Xbu5jP3BWQVzfb6cDg%40mail.gmail.com.

Reply via email to