[GiNaC-devel] Bug fixes for polylogs

Alexei Sheplyakov alexei.sheplyakov at gmail.com
Sat Jan 18 16:07:42 CET 2014


Hi, Stefan,

Thanks for an explanation.

I've got a few objections regarding the patch. I think handling the
complex numbers with
the imaginary part being floating-point zero should be done in
zeta2_evalf() rather than
to Li_eval(). The point is that (multiple) zeta values can appear not
only as a result of
polylogs evaluation.

Also this kind of syntax

+ for (lst::const_iterator itx = x.begin(); itx != x.end(); ++itx)
newx.append( *itx != _ex_1 ? 1 : -1 );

often gives rise to obscure bugs (C++ gives you enough rope to hang yourself),
please avoid that. Use the following instead:

for (lst::const_iterator itx = x.begin(); itx != x.end(); ++itx) {
   newx.append(*itx != _ex_1 ? 1 : -1);
}

Also could you please make a few test cases so the bug won't be re-introduced in
the future (by changes in other parts of GiNaC, or CLN, or whatever)?

Thanks a lot,
       Alexei


More information about the GiNaC-devel mailing list