Hello, On Sat, Aug 08, 2009 at 07:28:49PM +0200, Luigi Capozza wrote:
I have the following issue with the canonicalization of expressions. If I run many times the same program without changing anything, I get the output for the same expression ordered in different ways.
This behavior is documented in the manual (section 5.7.2, titled as 'Expanding and collecting'): "Again, since the canonical form in GiNaC is not easy to guess you should be prepared to see different orderings of terms in such sums!".
With more complicated expressions also the run time can vary from execution to execution up to a factor of 2 or more.
What exactly is a `run time'? CPU time? Wall clock time? Something else?
Is this normal or am I doing something wrong? I saw that the hash value is calculated in a fairly sophisticated manner but is it eventually possible to set it by hand?
No, this is an implementation detail, and users are not supposed to fiddle with it (the only exception is implementing calchash() method in user defined classes). @developers: I guess we should add this question to the FAQ, shouldn't we? Best regards, Alexei