diff --git a/acb_elliptic/e_inc.c b/acb_elliptic/e_inc.c index d01deda1..5935e6ee 100644 --- a/acb_elliptic/e_inc.c +++ b/acb_elliptic/e_inc.c @@ -142,7 +142,7 @@ acb_elliptic_e_inc(acb_t res, const acb_t phi, const acb_t m, int times_pi, slon acb_zero(z); arf_set_mag(arb_midref(acb_realref(z)), arb_radref(d)); mag_zero(arb_radref(d)); - arb_sub(d, d, acb_realref(z), prec); + arb_sub(d, d, acb_realref(z), 2 * prec + 100); /* meant to be exact */ arb_floor(d, d, prec); /* w = 2 E(m) */ diff --git a/acb_elliptic/f.c b/acb_elliptic/f.c index 34afd8d7..bf9b6e24 100644 --- a/acb_elliptic/f.c +++ b/acb_elliptic/f.c @@ -127,7 +127,7 @@ acb_elliptic_f(acb_t res, const acb_t phi, const acb_t m, int times_pi, slong pr acb_zero(z); arf_set_mag(arb_midref(acb_realref(z)), arb_radref(d)); mag_zero(arb_radref(d)); - arb_sub(d, d, acb_realref(z), prec); + arb_sub(d, d, acb_realref(z), 2 * prec + 100); /* meant to be exact */ arb_floor(d, d, prec); /* w = 2 K(m) */ diff --git a/acb_elliptic/pi.c b/acb_elliptic/pi.c index 96144e77..4ecf45dd 100644 --- a/acb_elliptic/pi.c +++ b/acb_elliptic/pi.c @@ -182,7 +182,7 @@ acb_elliptic_pi_inc(acb_t res, const acb_t n, const acb_t phi, const acb_t m, in acb_zero(z); arf_set_mag(arb_midref(acb_realref(z)), arb_radref(d)); mag_zero(arb_radref(d)); - arb_sub(d, d, acb_realref(z), prec); + arb_sub(d, d, acb_realref(z), 2 * prec + 100); /* meant to be exact */ arb_floor(d, d, prec); /* w = 2 Pi(n, m) */