fix (hopefully) spurious test failures for gamma_fmpq

This commit is contained in:
fredrik 2021-09-28 12:07:45 +02:00
parent 928a2ec61a
commit 450435a84a

View file

@ -529,22 +529,22 @@ arb_hypgeom_gamma_fmpq_outward(arb_t y, const fmpq_t x, slong prec)
if (q == 1 || q == 2 || q == 3 || q == 4 || q == 6) if (q == 1 || q == 2 || q == 3 || q == 4 || q == 6)
{ {
arb_hypgeom_gamma_small_frac(t, p, q, prec); arb_hypgeom_gamma_small_frac(t, p, q, prec + 4 * (m != 0));
} }
else else
{ {
arb_hypgeom_gamma_fmpq_hyp(t, a, prec); arb_hypgeom_gamma_fmpq_hyp(t, a, prec + 4 * (m != 0));
} }
/* argument reduction */ /* argument reduction */
if (m >= 0) if (m >= 0)
{ {
arb_rising_fmpq_ui(u, a, m, prec); arb_rising_fmpq_ui(u, a, m, prec + 4);
arb_mul(y, t, u, prec); arb_mul(y, t, u, prec);
} }
else else
{ {
arb_rising_fmpq_ui(u, x, -m, prec); arb_rising_fmpq_ui(u, x, -m, prec + 4);
arb_div(y, t, u, prec); arb_div(y, t, u, prec);
} }
@ -602,7 +602,7 @@ arb_hypgeom_gamma_fmpq_taylor(arb_t y, const fmpq_t x, slong prec)
} }
arb_set_fmpq(t, a, prec + 4); arb_set_fmpq(t, a, prec + 4);
success = arb_hypgeom_gamma_taylor(t, t, 0, prec); success = arb_hypgeom_gamma_taylor(t, t, 0, prec + 4);
if (success) if (success)
{ {
@ -611,12 +611,12 @@ arb_hypgeom_gamma_fmpq_taylor(arb_t y, const fmpq_t x, slong prec)
if (m >= 0) if (m >= 0)
{ {
arb_rising_fmpq_ui(u, a, m, prec); arb_rising_fmpq_ui(u, a, m, prec + 4);
arb_mul(y, t, u, prec); arb_mul(y, t, u, prec);
} }
else else
{ {
arb_rising_fmpq_ui(u, x, -m, prec); arb_rising_fmpq_ui(u, x, -m, prec + 4);
arb_div(y, t, u, prec); arb_div(y, t, u, prec);
} }
@ -684,7 +684,7 @@ arb_hypgeom_gamma_fmpq(arb_t y, const fmpq_t x, slong prec)
wp = (slong) fmpz_bits(fmpq_numref(x)) - (slong) fmpz_bits(fmpq_denref(x)); wp = (slong) fmpz_bits(fmpq_numref(x)) - (slong) fmpz_bits(fmpq_denref(x));
wp = FLINT_MAX(wp, 0); wp = FLINT_MAX(wp, 0);
wp = FLINT_MIN(wp, 4 * prec); wp = FLINT_MIN(wp, 4 * prec);
wp += prec; wp += prec + 4;
arb_set_fmpq(y, x, wp); arb_set_fmpq(y, x, wp);