Hi, On 08/13/2012 01:19 AM, Timo Kluck wrote:
You may know the CAS Sage [1] which uses GiNaC. It wraps ginac expressions in Python, and it adds some extra methods of its own.
One of those methods is variables(), which returns a list of symbols appearing in the expression. It does so by recursively walking down the expression tree. At one point, that was a bottle neck in my algorithm, and I realized that it would be very easy to cache those variables at construction time from the subexpressions.
I think the natural place to implement such a thing would be in GiNaC itself, so that everyone (not only sage users) may benefit. Is this planned and/or would you accept such a patch?
Wouldn't it be better to go one step further and cache those variables when the variables() function is first used? This avoids quite a lot of overhead in space and time! And then, variables() wouldn't have to be a member function, right? Cheers -richy. -- Richard B. Kreckel <http://www.ginac.de/~kreckel/>