Hi!
while using the Indexed class from sympy.tensor I have run into the
following problem:
cse(...) fails for expressions having "Indexed" instances. They are not
handled correctly in opt_cse() in cse_main.py
A possible work-around is to substitute the Indexed instances with dummies,
perform the CSE elimination and then
resubstitute the dummies for the indexed symbols. But this is not pretty
and I think that cse(...) should handle this
on its own.
Example:
from sympy import *
len_y = 5
y = IndexedBase('y', shape=(len_y,))
x = IndexedBase('x', shape=(len_y,))
Dy = IndexedBase('Dy', shape=(len_y-1,))
i = Idx('i', len_y-1)
expr1 = (y[i+1]-y[i])/(x[i+1]-x[i])
expr2 = 1/(x[i+1]-x[i])
print(cse([expr1, expr2]))
this will cause an infinite recursive call stack to _find_opts raising:
RuntimeError: maximum recursion depth exceeded in __instancecheck__
Does anybody know what the best approach here would be? Add something to
the Indexed class or modify
opt_cse?
Best regards
/Björn
--
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sympy.
For more options, visit https://groups.google.com/groups/opt_out.