Dear Chris, you've given me exactly what I needed! Many thanks -Gerry On 01/06/07, Chris.Dams@mi.infn.it <Chris.Dams@mi.infn.it> wrote:
Dear Gerry,
I've not managed to make the expand() & collect() functions do this, it seems to not want to perform something like:
e^t*e^(1-t)=e^1
Yes, this is not included in the automatic simplifications, so you will have to do it yourself. In cases like this I usually use a function that I call simplify and that is defined as
ex simplify(const ex&x,const exmap &m) { if (is_a<mul>(x)) { ex y=x; ex xprev; do { xprev = y; y = y.subs(m, subs_options::subs_algebraic).expand(); } while(xprev != y); return y; } if (is_a<add>(x)) { exvector ev; for(size_t i=0;i<x.nops();++i) ev.push_back(simplify(x.op(i), m));
return add(ev); } return x; }
This can be used by doing exmap m; m[power(e,wild(0))*power(e,wild(1))] = power(e, wild(0)+wild(1)); f = simplify(f, m)
Good luck, Chris
_______________________________________________ GiNaC-list mailing list GiNaC-list@ginac.de https://www.cebix.net/mailman/listinfo/ginac-list