From 503115b9e9039e83cf95ed475477b67bff207f5a Mon Sep 17 00:00:00 2001 From: Jens Vollinga Date: Tue, 12 Oct 2004 17:14:38 +0000 Subject: [PATCH] * Li(2,x) now evaluates for +-I. * Fixed bug in Li(n,x) (if Li(2,x) was calculated with high precision the enlargement of the look-up table caused a segmentation fault). --- ginac/inifcns_nstdsums.cpp | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/ginac/inifcns_nstdsums.cpp b/ginac/inifcns_nstdsums.cpp index 94d0fb0c..73792b94 100644 --- a/ginac/inifcns_nstdsums.cpp +++ b/ginac/inifcns_nstdsums.cpp @@ -192,7 +192,7 @@ void double_Xn() for (int i=1; i<=xninitsizestep/2; ++i) { Xn[0].push_back(bernoulli((i+pos0)*2).to_cl_N()); } - if (Xn.size() > 0) { + if (Xn.size() > 1) { int xend = xninitsize + xninitsizestep; cln::cl_N result; // X_1 @@ -397,7 +397,16 @@ numeric Li_num(int n, const numeric& x) // [Kol] (2.22) return -(1-cln::expt(cln::cl_I(2),1-n)) * cln::zeta(n); } - + if (abs(x.real()) < 0.4 && abs(abs(x)-1) < 0.01) { + cln::cl_N x_ = ex_to(x).to_cl_N(); + cln::cl_N result = -cln::expt(cln::log(x_), n-1) * cln::log(1-x_) / cln::factorial(n-1); + for (int j=0; j(m).to_int(), ex_to(x)); } -- 2.49.0