FLINT3.7.0-dev

arb_hypgeom_rising_ui_forward, arb_hypgeom_rising_ui_bs, arb_hypgeom_rising_ui_rs, arb_hypgeom_rising_ui_rec, arb_hypgeom_rising_ui, arb_hypgeom_rising

Synopsis#include <flint/arb_hypgeom.h>
void arb_hypgeom_rising_ui_forward(arb_t res, const arb_t x, ulong n, slong prec)source
void arb_hypgeom_rising_ui_bs(arb_t res, const arb_t x, ulong n, slong prec)source
void arb_hypgeom_rising_ui_rs(arb_t res, const arb_t x, ulong n, ulong m, slong prec)source
void arb_hypgeom_rising_ui_rec(arb_t res, const arb_t x, ulong n, slong prec)source
void arb_hypgeom_rising_ui(arb_t res, const arb_t x, ulong n, slong prec)source
void arb_hypgeom_rising(arb_t res, const arb_t x, const arb_t n, slong prec)source

Sets res to the rising factorial (x)_n = x (x+1) \cdots (x+n-1), with (x)_0 = 1; arb_hypgeom_rising allows any real n and computes \Gamma(x+n)/\Gamma(x).

The variants differ in the algorithm; see Rising factorials.

  • arb_hypgeom_rising_ui_forward multiplies the factors one by one at a working precision of prec plus \log_2 n bits, incrementing the factor in place.
  • arb_hypgeom_rising_ui_bs multiplies the factors in a balanced binary tree, which is efficient when x has few bits compared to prec (see Binary splitting and product trees).
  • arb_hypgeom_rising_ui_rs uses rectangular splitting: it groups the factors in blocks of m, expands each block (x+k)(x+k+1)\cdots(x+k+m-1) as a polynomial in x with integer coefficients (one or two words each when they fit, see _arb_hypgeom_rising_coeffs_1) and evaluates it as a dot product with the precomputed powers x, \ldots, x^m. Most multiplications of two full-precision numbers become multiplications by small integers [Smi2001; Joh2014b]. The tuning parameter m can be given as 0 to choose it automatically (for large n, m = \min(\sqrt n, 8 + 0.2 \max(0, \mathit{prec} - 4096)^{0.4}, 60)).
  • arb_hypgeom_rising_ui_rec chooses between the three by n, prec and the bit length of x: the forward recurrence for small n (up to 20 below 512 bits, up to \min(80, 6000/\mathit{prec}) otherwise), binary splitting for n \ge 20 if x has fewer than \mathit{prec}/8 bits, and rectangular splitting otherwise. It never calls the gamma function, which is why the gamma function itself uses it for argument reduction.
  • arb_hypgeom_rising_ui uses arb_hypgeom_rising_ui_rec if n < \max(\mathit{prec}, 100), and computes \Gamma(x+n) \cdot (1/\Gamma(x)) otherwise. arb_hypgeom_rising does the same for an exact nonnegative integer n in that range and uses the gamma function otherwise.

These are the functions behind arb_rising_ui and arb_rising of arb.

References#

Cite this page

The FLINT team, “arb_hypgeom_rising_ui_forward, arb_hypgeom_rising_ui_bs, arb_hypgeom_rising_ui_rs, arb_hypgeom_rising_ui_rec, arb_hypgeom_rising_ui, arb_hypgeom_rising (arb_hypgeom.h),” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/arb_hypgeom/arb_hypgeom_rising_ui_forward.html (generated 2026-10-20).