Dear Richard,
On Tue, 15 Oct 2019 09:23:21 +0200, "Richard B. Kreckel" <kreckel@in.terlu.de> said: RK> Well, after celebrating this patch, we should discuss it RK> breaking check/exam_paranoia.cpp:217.
RK> That particular check has nothing to do with the exp() function, RK> so we could re-write it in terms of Li2() or some other function RK> and be done with it. RK> But François Maltey objected about exp(x)/exp(x) not eval'ing to RK> 1 any more: RK> https://www.ginac.de/pipermail/ginac-devel/2009-October/001680.html RK> And, somehow, that should be addressed, I guess. It seems that both mentioned issues are connected. I am attaching a revised patch which applies the law of exponents, but keeps exp(x)^(-1) as exp(x)^(-1). With this patch check/exam_paranoia.cpp (as well as all other checks) went well (at least on my computer.) RK> I propose RK> writing generic functions outside the automatic eval system RK> along these lines https://www.ginac.de/FAQ.html#treetraverse RK> searching for common arguments of exp() which may be RK> combined. Would you like to venture? I will keep thinking on implementation of the rule e^t * e^s = e^(t+s). At the moment, I am in a favour to make it a part of a more general mechanism which will allow a user to apply some specific transformations for particular functions on demand (beyond wildcard substitutions). So it will not be done with the automatic evaluation and will not slow down the traditional performance. May be it is worth to add some more properties like add_func(), mul_func(), ncmul_func() to complement the existing power_func()... Best wishes, Vladimir -- Vladimir V. Kisil http://www.maths.leeds.ac.uk/~kisilv/ Book: Geometry of Mobius Transformations http://goo.gl/EaG2Vu Software: Geometry of cycles http://moebinv.sourceforge.net/ Jupyter (Colab): https://github.com/vvkisil/MoebInv-notebooks Jupyter (CodeOcean): https://codeocean.com/capsule/7952650/tree