else if (!x.imag().is_rational())
prec = cln::float_format(cln::the<cln::cl_F>(cln::imagpart(value)));
-
// [Kol] (5.3)
- if (cln::realpart(value) < -0.5) {
+ if ((cln::realpart(value) < -0.5) || (n == 0)) {
cln::cl_N result = cln::expt(cln::cl_I(-1),p) * cln::expt(cln::log(value),n)
* cln::expt(cln::log(1-value),p) / cln::factorial(n) / cln::factorial(p);
if (x2 == 1) {
return Li(x1+1,x3);
}
+ if (x1.is_zero()) {
+ // [Kol] (5.3)
+ return pow(-log(1-x3), x2) / factorial(x2);
+ }
if (x3.info(info_flags::numeric) && (!x3.info(info_flags::crational)) &&
x1.info(info_flags::posint) && x2.info(info_flags::posint)) {
return S_num(ex_to<numeric>(x1).to_int(), ex_to<numeric>(x2).to_int(), ex_to<numeric>(x3));