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)⋯(x+n−1)(x)_n = x (x+1) \cdots (x+n-1), with (x)0=1(x)_0 = 1; arb_hypgeom_rising allows any real nn and computes Γ(x+n)/Γ(x)\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⁡2n\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 xx 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 mm, expands each block (x+k)(x+k+1)⋯(x+k+m−1)(x+k)(x+k+1)\cdots(x+k+m-1) as a polynomial in xx 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,…,xmx, \ldots, x^m. Most multiplications of two full-precision numbers become multiplications by small integers [Smi2001; Joh2014b]. The tuning parameter mm can be given as 0 to choose it automatically (for large nn, m=min⁡(n,8+0.2max⁡(0,prec−4096)0.4,60)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 nn, prec and the bit length of xx: the forward recurrence for small nn (up to 20 below 512 bits, up to min⁡(80,6000/prec)\min(80, 6000/\mathit{prec}) otherwise), binary splitting for n≥20n \ge 20 if xx has fewer than prec/8\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⁡(prec,100)n < \max(\mathit{prec}, 100), and computes Γ(x+n)⋅(1/Γ(x))\Gamma(x+n) \cdot (1/\Gamma(x)) otherwise. arb_hypgeom_rising does the same for an exact nonnegative integer nn 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-11-02).