I see that related to that you asked a question. Since currently I can not post to newsgroups I comment here.
1) Expression -2*ln(2*x) + ln(x^2) corresponds to multivalued function in the complex plane having coutably many analytic branches. As mutivalued analytic function it is equal to -log(4), that is each branch is constant and gives one of possible values of -log(4). So in fact -log(4)*x is a "perfect" answer, valid everywhere and faithfully representing multivalued structure of the input. 2) Of course, antiderivative is defined at best where integrand is defined. However, if you more or less artifically restrict domain of definition of a function a CAS has no way to know this. And I think that returning expression which gives valid answer where integrand is defined, but without domain restricion is fine. That is answering quiestion like "where is this function real" is quite different than integration and not part of indefinite integration. 3) The example above is quite easy and regular. In general branching structure of a function may be quite complicated. One can imagine CAS which would give try to give list all possible results and conditions which result to select. It is probaly possible for large class of functions, but it is not clear to me if this is useful. I expect that user has concrete choice of branches in mind and want result for this specific choice. 4) There are folks who insist that symbolic results should agree with numeric ones. My opinion is that burden here should be on numeric software. Namely naively plugging in formulas into numeric software can give results which are mathematically incorrect, but more careful numeric approach can produce correct value. As an example, expression 'log(Gamma(x))' defines multivalued complex function with logarithmic singularities at 0 and negative integers. If you cut complex plane along negative half axis, you remove all singularities. Additionaly if you take real branch along posive half axis, you get nice single valued functions on cut complex plane. But computing it as 'log(Gamma(x))' does not work, it is easy to see that one gets spurious jumps. FriCAS (and many other systems) have 'logGamma' function which is doing right thing. In fact FriCAS code is using 'log' of 'Gamma(x)' is area that naively would give spurious jumps. But FriCAS computes correction leading to correct choice of branch of logarithm. -- Waldek Hebisch -- You received this message because you are subscribed to the Google Groups "FriCAS - computer algebra system" group. To unsubscribe from this group and stop receiving emails from it, send an email to fricas-devel+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/fricas-devel/20230510185940.qzkv7lkhn3i3ewrk%40fricas.math.uni.wroc.pl.