Dear Jens, On Fri, Apr 04, 2008 at 11:13:23AM +0200, Jens Vollinga wrote:
the test is okay.
I wonder why this test is not included in GiNaC 1.4 (but included in 1.3).
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.
git cherry-pick 182ae422f1f417ca975ba5ed9273b76c5c65c434 should add that test.
If nothing else is pending I would do a new release soon.
Fine with me.
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]; }
The patch does not apply to {master,ginac_1-4} :( Best regards, Alexei -- All science is either physics or stamp collecting.