Hello, On Tue, 16 Dec 2003, Jens Vollinga wrote:
The digestion of your contribution took a while, because the complex conjugation of some functions (harmonic and multiple polylog) is a bit more involved, and I wanted to think of a solution to this before integrating the patch.
In doing so I recognized the following: sin(x).conjugate() gives sin(x) ?! or simpler x.conjugate() gives x ?! if x is symbol.
This issue is discussed in http://www.ginac.de/lists/ginac-list/msg01354.html and follow-ups. An alternative to assuming all symbols to be real would be to have a global map (perhaps attached to the class symbol) that maps symbols to their complex conjugates.
This seems to be a fundamental problem in my view. A possible solution would be not to use a virtual function '.conjugate()', but instead to use a Ginac-function 'ex conjugate(const ex&)', that only evaluates for numerics and gamma matrices. This would also ease my headaches with those polylogs ...
I must say I am totally new to polylogs. Looking at their definition, I notice that they have a convergence radius of 1. Also the documentation says that they can only be evaluated numerically for arguments x_i with |x_i|<1. I only see problems for complex conjugation at branch cuts for |x|>1 (and only at the real axis I would guess). This is the same problem that was discussed in the aforementioned thread for the log. Therefore I still think that complex conjugating arguments would be best for these functions, or do you know of other problems with cc-ing these functions? Good day, Chris