Hi, Alexei Sheplyakov schrieb:
So, something must be wrong: either the patch or the test. Any ideas?
the test is okay. The patch causes the problems, because it is not complete. The missing patch is attached (the important change is the line with the while statement). I completely forgot about that change, mainly because the IMAP here works not well from home causing emails to be lost (emails in which I sent the patches to Jianqiang Zhao ...). Now the question is: new release? Then not only the patch but also additional checks should be added. If nothing else is pending I would do a new release soon. Regards, Jens diff --git a/ginac/inifcns_nstdsums.cpp b/ginac/inifcns_nstdsums.cpp index 138f5e3..56ba0e7 100644 --- a/ginac/inifcns_nstdsums.cpp +++ b/ginac/inifcns_nstdsums.cpp @@ -489,7 +489,6 @@ cln::cl_N multipleLi_do_sum(const std::vector<int>& s, const std::vector<cln::cl q++; t[j-1] = t[j-1] + cln::expt(x[j-1], q) / cln::expt(cln::cl_I(q),s[j-1]) * one; for (int k=j-2; k>=0; k--) { - flag_accidental_zero = cln::zerop(t[k+1]); t[k] = t[k] + t[k+1] * cln::expt(x[k], q+j-1-k) / cln::expt(cln::cl_I(q+j-1-k), s[k]); } q++; @@ -498,7 +497,7 @@ cln::cl_N multipleLi_do_sum(const std::vector<int>& s, const std::vector<cln::cl flag_accidental_zero = cln::zerop(t[k+1]); t[k] = t[k] + t[k+1] * cln::expt(x[k], q+j-1-k) / cln::expt(cln::cl_I(q+j-1-k), s[k]); } - } while ( (t[0] != t0buf) || flag_accidental_zero ); + } while ( (t[0] != t0buf) || cln::zerop(t[0]) || flag_accidental_zero ); return t[0]; }