24 May
2010
24 May
'10
8:51 p.m.
Hello, On Mon, May 24, 2010 at 02:17:41AM -0400, jros wrote:
In this example
e1=a+b e2=a+b+c
I suppose that no sharing is implied like e2=e1+c, that would be computationally expensive. But, if instead
e2=e1+c
then e1 is referenced by e2?? (I suppose yes).
No. GiNaC tries to keep trees (which what GiNaC::add essentially is) as flat as possible (see expairseq::construct_from_epvector). This save *a lot* of memory and makes collecting similar terms more efficient. So +( +(a, b), c) gets transformed into +(a, b, c), and nothing is shared between e1 and e2. Best regards, Alexei