FLINT3.7.0-dev
Algorithm

Hypergeometric functions

Cost
N terms of a series at p bits — O(N) full multiplications forward, O(N^{1/2}) full and O(N) scalar multiplications by rectangular splitting, O(M(p) log² p) by binary splitting for arguments with O(1) bits, and O(M(p) log² p) for any argument with the bit-burst algorithm (holonomic functions).

A hypergeometric series is a series ∑kT(k)\sum_k T(k) whose term ratio T(k+1)/T(k)T(k+1)/T(k) is a rational function of kk. In standard form,

pFq(a1,…,ap;b1,…,bq;z)=∑k=0∞(a1)k⋯(ap)k(b1)k⋯(bq)kzkk!.{}_pF_q(a_1,\ldots,a_p;b_1,\ldots,b_q;z) = \sum_{k=0}^\infty \frac{(a_1)_k\cdots(a_p)_k}{(b_1)_k\cdots(b_q)_k} \frac{z^k}{k!}.

Most classical special functions are hypergeometric series, or finite combinations of such series with exponential, power and gamma function prefactors. Evaluating them rigorously to arbitrary precision for all complex parameters and arguments requires three ingredients: the convergent series with a bound for the remainder, asymptotic expansions with error bounds for large arguments, and transformations and connection formulas that map the remaining cases to one of the first two. The implementation in acb_hypgeom is described in Johansson [Joh2016], from which the error bounds below are taken; the summation algorithms are surveyed in [Joh2014a].

Throughout this section,

T(k)=∏i=0p−1(ai)k∏i=0q−1(bi)kzk,pfq(z)=∑k=0∞T(k)=p+1Fq(a0,…,ap−1,1;b0,…,bq−1;z),T(k) = \frac{\prod_{i=0}^{p-1} (a_i)_k}{\prod_{i=0}^{q-1} (b_i)_k} z^k, \qquad {}_pf_q(z) = \sum_{k=0}^\infty T(k) = {}_{p+1}F_q(a_0, \ldots, a_{p-1}, 1; b_0, \ldots, b_{q-1}; z),

so that pFq{}_pF_q is pfq+1{}_pf_{q+1} with the extra lower parameter bq=1b_q = 1. This is the convention of the low-level functions acb_hypgeom_pfq_sum and acb_hypgeom_pfq_direct.

Convergent series#

If p≤qp \le q, the series pfq(z){}_pf_q(z) converges for all zz, and the terms eventually decrease faster than geometrically; if p=q+1p = q + 1, it converges for ∣z∣<1|z| < 1. A bound for the tail ∑k≥nT(k)\sum_{k \ge n} T(k) in terms of the first omitted term T(n)T(n) follows from a bound for the term ratio.

Theorem 1 (Tail bound). Let p≤qp \le q and n≥0n \ge 0 with Re⁡(bi+n)>0\operatorname{Re}(b_i + n) > 0 for all ii, and let

D=∣z∣∏i=0p−1(1+∣ai−bi∣∣bi+n∣)∏i=pq−11∣bi+n∣.D = |z| \prod_{i=0}^{p-1} \left(1 + \frac{|a_i - b_i|}{|b_i + n|}\right) \prod_{i=p}^{q-1} \frac{1}{|b_i + n|}.

If D<1D < 1, then ∣∑k=n∞T(k)∣≤∣T(n)∣1−D\left|\sum_{k=n}^{\infty} T(k)\right| \le \frac{|T(n)|}{1 - D}.

Proof. For k≥nk \ge n, T(k+1)/T(k)=z∏i<pai+kbi+k∏p≤i<q1bi+kT(k+1)/T(k) = z \prod_{i<p} \frac{a_i + k}{b_i + k} \prod_{p \le i < q} \frac{1}{b_i+k}. Since Re⁡(bi+n)>0\operatorname{Re}(b_i + n) > 0, ∣bi+k∣≥∣bi+n∣|b_i + k| \ge |b_i + n| for k≥nk \ge n (adding a positive real number to a number with positive real part increases its modulus). Hence

∣ai+kbi+k∣=∣1+ai−bibi+k∣≤1+∣ai−bi∣∣bi+n∣,1∣bi+k∣≤1∣bi+n∣,\left|\frac{a_i + k}{b_i + k}\right| = \left|1 + \frac{a_i - b_i}{b_i + k}\right| \le 1 + \frac{|a_i - b_i|}{|b_i + n|}, \qquad \frac{1}{|b_i + k|} \le \frac{1}{|b_i + n|},

so ∣T(k+1)∣≤D∣T(k)∣|T(k+1)| \le D |T(k)| for all k≥nk \ge n, and the tail is bounded by ∣T(n)∣∑j≥0Dj|T(n)| \sum_{j \ge 0} D^j.

acb_hypgeom_pfq_bound_factor computes C=(1−D)−1C = (1-D)^{-1} with upper bounds in mag_t arithmetic, pairing the upper parameter aia_i with the lower parameter bib_i; CC is infinite if p>qp > q, if some Re⁡(bi+n)≤0\operatorname{Re}(b_i + n) \le 0, or if D≥1D \ge 1. The bound can therefore be infinite for a small nn even if the series converges; the number of terms must be large enough that the terms have started to decrease. acb_hypgeom_pfq_direct sums nn terms with acb_hypgeom_pfq_sum, which also returns T(n)T(n), and adds C∣T(n)∣C|T(n)| to the radius. If T(n)T(n) is exactly zero, the series has terminated and no error is added; this is how polynomials such as pFq{}_pF_q with a nonpositive integer upper parameter are computed for any pp, qq and zz.

Power series parameters#

The same principle gives bounds for each coefficient of ∑k≥NT(k)∈C[[x]]/(xn)\sum_{k \ge N} T(k) \in \mathbb{C}[[x]]/(x^n) when the parameters ai,bia_i, b_i and the argument zz are themselves power series, which is how derivatives with respect to parameters and limits at singular parameter values are computed. Write A[k]A_{[k]} for the coefficient of xkx^k in AA, A[m:n]=∑k=mn−1A[k]xkA_{[m:n]} = \sum_{k=m}^{n-1} A_{[k]} x^k, ∣A∣=∑k∣A[k]∣xk∈R≥0[[x]]|A| = \sum_k |A_{[k]}| x^k \in \mathbb{R}_{\ge 0}[[x]], A≤BA \le B if ∣A∣[k]≤∣B∣[k]|A|_{[k]} \le |B|_{[k]} for all kk, and R(B)=∣B[0]∣−∣B[1:∞]∣\mathcal{R}(B) = |B_{[0]}| - |B_{[1:\infty]}|.

Lemma 2. For power series AA and BB with B[0]≠0B_{[0]} \ne 0,

∣A+B∣≤∣A∣+∣B∣,∣AB∣≤∣A∣∣B∣,∣A/B∣≤∣A∣/R(B).|A + B| \le |A| + |B|, \qquad |AB| \le |A| |B|, \qquad |A / B| \le |A| / \mathcal{R}(B).

Proof. The first two follow from (AB)[k]=∑j≤kA[j]B[k−j](AB)_{[k]} = \sum_{j \le k} A_{[j]} B_{[k-j]} and the triangle inequality. For the third, write B=B[0](1−E)B = B_{[0]}(1 - E) with E=−B[1:∞]/B[0]E = -B_{[1:\infty]}/B_{[0]}; then 1/B=B[0]−1∑jEj1/B = B_{[0]}^{-1} \sum_j E^j and ∣1/B∣≤∣B[0]∣−1∑j∣E∣j=1/(∣B[0]∣−∣B[1:∞]∣)|1/B| \le |B_{[0]}|^{-1} \sum_j |E|^j = 1/(|B_{[0]}| - |B_{[1:\infty]}|), where the right side is expanded as a power series in xx.

Theorem 3. If p≤qp \le q and Re⁡(bi[0]+N)>0\operatorname{Re}(b_{i[0]} + N) > 0 for all ii, let

D=∣z∣∏i=0p−1(1+∣ai−bi∣R(bi+N))∏i=pq−11R(bi+N)∈R≥0[[x]].D = |z| \prod_{i=0}^{p-1} \left(1 + \frac{|a_i-b_i|}{\mathcal{R}(b_i+N)}\right) \prod_{i=p}^{q-1} \frac{1}{\mathcal{R}(b_i + N)} \in \mathbb{R}_{\ge 0}[[x]].

If D[0]<1D_{[0]} < 1, then ∑k=N∞T(k)≤(1−D)−1∣T(N)∣\sum_{k=N}^\infty T(k) \le (1 - D)^{-1} |T(N)| coefficientwise.

The proof is that of Theorem 1, with Lemma 2 in place of the scalar inequalities. In the implementation (acb_hypgeom_pfq_series_direct), sums and products of the majorant series are computed with point-valued upper bounds for the absolute values, so no interval arithmetic is needed; for R(B)\mathcal{R}(B) a lower bound for ∣B[0]∣|B_{[0]}| and upper bounds for the other coefficients are used.

Number of terms and working precision#

acb_hypgeom_pfq_choose_n chooses nn by simulating the term magnitudes in double precision: it stops when the current term is prec bits smaller than the largest term seen so far, since the cancellation between large terms has to be compensated anyway. This also picks a sensible truncation point for divergent asymptotic series (where the terms decrease and then grow), stops at the end of a terminating series, and steps over parameters close to nonpositive integers. The functions built on the series also estimate the cancellation and raise the working precision: the sum of a series whose largest term is 2m2^m times its value loses about mm bits. For example 1F1(a;b;z){}_1F_1(a; b; z) with z=−x<0z = -x < 0 has terms of size up to about exe^{x} but a value of size x−ax^{-a}, so Kummer's transformation M(a,b,z)=ezM(b−a,b,−z)M(a,b,z) = e^z M(b-a, b, -z) is applied first, and 0F1(a;z){}_0F_1(a; z) loses about 2∣z∣/log⁡22\sqrt{|z|}/\log 2 bits for negative zz.

Summation algorithms#

Let T(k+1)=T(k) P(k)/Q(k)T(k+1) = T(k)\, P(k)/Q(k) with polynomials PP and QQ (absorbing zz into PP). acb_hypgeom_pfq_sum and the variants for rational parameters in Sums of hypergeometric series with rational parameters choose among four ways to compute S=∑k<nT(k)S = \sum_{k<n} T(k).

Forward recurrence. Compute T(k)T(k) and the partial sums term by term: nn multiplications and nn divisions at full precision. Divisions can be delayed by accumulating numerators and denominators separately (as arb_hypgeom_sum_fmpq_arb_forward does). This is best for few terms or when the parameters are full-precision numbers.

Rectangular splitting. When the parameters are short (integers or rationals with small numerators and denominators) but zz is a full-precision number, the expensive operations are the multiplications by zz. Writing the sum in Horner form backwards,

S=1+P(0)Q(0)(1+P(1)Q(1)(1+⋯ )),S = 1 + \frac{P(0)}{Q(0)}\left(1 + \frac{P(1)}{Q(1)}\left(1 + \cdots\right)\right),

and grouping the powers of zz into blocks of length mm, the sum becomes a polynomial in zmz^m whose coefficients are polynomials in zz of degree less than mm with short coefficients. With z,…,zmz, \ldots, z^m precomputed, the full multiplications number about m+n/mm + n/m, and the remaining O(n)O(n) operations are multiplications and divisions by short numbers. This is Smith's method of concurrent series [Smi1989], a variant of the Paterson–Stockmeyer algorithm for polynomial evaluation [PS1973]; Johansson [Joh2014b] generalizes it to parameters that are themselves full-precision numbers by expanding the products of consecutive factors as polynomials in the parameter. acb_hypgeom_pfq_sum_rs applies it with m≈nm \approx \sqrt n (at most 150), and arb_hypgeom_sum_fmpq_arb_rs combines up to 8 consecutive term ratios over a common integer denominator.

Binary splitting. The recurrence

(T(k+1)S(k+1))=1Q(k)(P(k)0Q(k)Q(k))(T(k)S(k))\begin{pmatrix} T(k+1) \\ S(k+1) \end{pmatrix} = \frac{1}{Q(k)} \begin{pmatrix} P(k) & 0 \\ Q(k) & Q(k) \end{pmatrix} \begin{pmatrix} T(k) \\ S(k) \end{pmatrix}

gives SS from the product of nn matrices, which binary splitting computes as a balanced product tree (Binary splitting and product trees) [Bre1976; CC1988; BZ2011]. If zz and the parameters have O(log⁡n)O(\log n) bits, the entries of a subproduct of ℓ\ell matrices have O(ℓlog⁡n)O(\ell \log n) bits, and the whole product costs O(M(nlog⁡n)log⁡n)O(M(n \log n) \log n); for pp-bit precision with n=O(p/log⁡p)n = O(p/\log p) terms, this is O(M(p)log⁡2p)O(M(p) \log^2 p), quasi-linear in pp. If zz has pp bits, the entries grow to pp bits after few levels and the method degrades to O(n)O(n) full multiplications. In complex ball arithmetic, binary splitting also limits the overestimation of the radii (the wrapping effect), since each number goes through only O(log⁡n)O(\log n) operations, so acb_hypgeom_pfq_sum prefers it to the forward recurrence for n>8n > 8 even for long parameters. acb_hypgeom_pfq_sum_bs_invz puts 1/z1/z into the denominators, which helps when 1/z1/z is short, as in asymptotic expansions at integer arguments.

Fast multipoint evaluation. If PP and QQ have degree dd, the product of the first m≈nm \approx \sqrt n matrices can be computed as a matrix of polynomials of degree O(dm)O(dm) in the shift kk; evaluating it at the w≈n/mw \approx n/m points 0,m,2m,…0, m, 2m, \ldots with fast multipoint evaluation and multiplying the ww resulting matrices gives the whole product with O~(n)\tilde O(\sqrt n) full-precision operations, instead of O(n)O(\sqrt n) full and O(n)O(n) scalar operations [CC1988; BGS2007]. acb_hypgeom_pfq_sum_fme implements this baby-step giant-step method for p,q≤3p, q \le 3, using product trees for the evaluation (_acb_poly_evaluate_vec_fast_precomp). The numerical stability of the polynomial arithmetic in ball arithmetic is poorer, so it pays off only at high precision (from 1500 bits, for many terms).

acb_hypgeom_pfq_sum uses rectangular splitting when the parameters are short compared to the precision (binary splitting if moreover zz is short), fast multipoint evaluation for many terms at high precision, and otherwise binary splitting or, for at most 8 terms, the forward recurrence. The power series versions (acb_hypgeom_pfq_series_sum_forward, _bs, _rs) perform the same algorithms with truncated power series arithmetic.

The bit-burst algorithm#

Binary splitting is quasi-linear only for short arguments. For a holonomic function ff — one that satisfies a linear differential equation with polynomial coefficients, like every pFq{}_pF_q — the bit-burst algorithm [CC1990; vdH1999; Mez2010] removes this restriction. Write the pp-bit argument as z=z0+(z1−z0)+(z2−z1)+⋯z = z_0 + (z_1 - z_0) + (z_2 - z_1) + \cdots where zjz_j is zz truncated to 2jc2^{j} c bits. The Taylor coefficients of ff at zjz_j satisfy a recurrence with polynomial coefficients in kk and zjz_j, and the step from zjz_j to zj+1z_{j+1} needs only O(p/2j)O(p/2^j) terms of a series whose argument zj+1−zjz_{j+1} - z_j has 2j+1c2^{j+1}c bits and magnitude at most 2−2jc2^{-2^jc}. The total size of the numbers in the binary splitting tree of each step is therefore O(p)O(p), and each step costs O(M(p)log⁡p)O(M(p) \log p) (evaluating the matrix of a fundamental system of solutions); with O(log⁡p)O(\log p) steps this gives O(M(p)log⁡2p)O(M(p) \log^2 p) overall. The error bounds for the local Taylor series come from Cauchy majorants of the differential equation [Hoe2001; vdH1999].

FLINT uses the bit-burst algorithm for the dilogarithm at very high precision (acb_hypgeom_dilog_bitburst, see The dilogarithm), for the error function and the incomplete gamma function Γ(a,z)\Gamma(a, z) with rational aa above 30000 bits (arb_hypgeom_erf_bb, see Error functions, incomplete gamma functions and exponential integrals), and in a simple form (one or two continuation steps with Taylor series, without the doubling of bits) for the corner case of 2F1{}_2F_1 (The Gauss hypergeometric function). The elementary functions and constants, which are the most important holonomic functions, are covered in Elementary functions and Mathematical constants.

Asymptotic expansions#

For large ∣z∣|z| the convergent series needs about ∣z∣|z| terms and suffers from cancellation of order e∣z∣e^{|z|}. Asymptotic expansions then converge quickly in the sense that the first terms decrease rapidly, but they diverge, so the error has to be bounded explicitly for each truncation. All confluent hypergeometric functions reduce to the function U(a,b,z)U(a,b,z), the confluent hypergeometric function of the second kind with its principal branch cut on (−∞,0](-\infty, 0]. With U∗(a,b,z)=zaU(a,b,z)U^*(a,b,z) = z^a U(a,b,z),

U∗(a,b,z)∼2F0(a,a−b+1;;−1/z)=∑k=0n−1(a)k(a−b+1)kk!(−z)k+εn(z).U^{*}(a,b,z) \sim {}_2F_0(a, a-b+1; ; -1/z) = \sum_{k=0}^{n-1} \frac{(a)_k (a-b+1)_k}{k! (-z)^k} + \varepsilon_n(z).

The error term is bounded following Olver [NIST2012, §13.7], with a case distinction according to the region RR in which zz lies; the formula for the bound increases with RR, so if zz is in two regions the larger index can be used. Let r=∣b−2a∣r = |b - 2a|.

  • If Re⁡(z)≥r\operatorname{Re}(z) \ge r, then R=1R = 1.
  • Otherwise, if ∣Im⁡(z)∣≥r|\operatorname{Im}(z)| \ge r, or Re⁡(z)≥0\operatorname{Re}(z) \ge 0 and ∣z∣≥r|z| \ge r, then R=2R = 2.
  • Otherwise, if ∣z∣≥2r|z| \ge 2r, then R=3R = 3.
  • Otherwise the bound is infinite.

With the auxiliary quantities

σ=∣(b−2a)/z∣,ν=(12+121−4σ2)−1/2≤1+2σ2,χ(n)=π Γ(12n+1)Γ(12n+12),\sigma = |(b-2a)/z|, \qquad \nu = \left(\tfrac{1}{2} + \tfrac{1}{2}\sqrt{1-4\sigma^2}\right)^{-1/2} \le 1 + 2 \sigma^2, \qquad \chi(n) = \sqrt{\pi}\, \frac{\Gamma(\tfrac{1}{2}n+1)}{\Gamma(\tfrac{1}{2} n + \tfrac{1}{2})},
Cn={1R=1χ(n)R=2(χ(n)+σν2n)νnR=3,σ′={σR≠3νσR=3,C_n = \begin{cases} 1 & R = 1 \\ \chi(n) & R = 2 \\ (\chi(n) + \sigma \nu^2 n) \nu^n & R = 3, \end{cases} \qquad \sigma' = \begin{cases} \sigma & R \ne 3 \\ \nu \sigma & R = 3, \end{cases}
α=(1−σ′)−1,ρ=12∣2a2−2ab+b∣+σ′(1+14σ′)(1−σ′)−2,\alpha = (1 - \sigma')^{-1}, \qquad \rho = \tfrac{1}{2} |2a^2-2ab+b| + \sigma' (1+ \tfrac{1}{4} \sigma') (1-\sigma')^{-2},

the error is bounded by

∣εn(z)∣≤2αCn∣(a)n(a−b+1)nn!zn∣exp⁡(2αρC1∣z∣).|\varepsilon_n(z)| \le 2 \alpha C_n \left|\frac{(a)_n (a-b+1)_n}{n! z^n} \right| \exp\left(\frac{2 \alpha \rho C_1}{|z|}\right).

acb_hypgeom_u_asymp evaluates this bound with mag_t arithmetic, chooses the number of terms with acb_hypgeom_pfq_choose_n (raising the target by the size of the exponential factor), and sums the series in powers of w=−1/zw = -1/z with acb_hypgeom_pfq_sum_invz. If aa or a−b+1a - b + 1 is a nonpositive integer, the series terminates and is exact, for every z≠0z \ne 0.

The Bessel, Airy, error, incomplete gamma, exponential and trigonometric integral and Coulomb functions all use this expansion through their representations by UU. The Airy functions have dedicated bounds, given in Asymptotic expansions.

Confluent hypergeometric functions#

The convergent and the asymptotic expansions are tied together by connection formulas. For z≠0z \ne 0 and b∉Zb \notin \mathbb{Z} [NIST2012, 13.2.42],

U(a,b,z)=Γ(1−b)Γ(a−b+1)M(a,b,z)+Γ(b−1)Γ(a)z1−bM(a−b+1,2−b,z),U(a,b,z) = \frac{\Gamma(1-b)}{\Gamma(a-b+1)} M(a,b,z) + \frac{\Gamma(b-1)}{\Gamma(a)} z^{1-b} M(a-b+1,2-b,z),

and for all z≠0z \ne 0

1F1(a,b,z)Γ(b)=(−z)−aΓ(b−a)U∗(a,b,z)+za−bezΓ(a)U∗(b−a,b,−z),\frac{{}_1F_1(a,b,z)}{\Gamma(b)} = \frac{(-z)^{-a}}{\Gamma(b-a)} U^{*}(a,b,z) + \frac{z^{a-b} e^z}{\Gamma(a)} U^{*}(b-a,b,-z),

which is equivalent to [NIST2012, 13.2.41] but simpler in form. The first gives UU for small ∣z∣|z| from two convergent series (acb_hypgeom_u_1f1); the second gives MM for large ∣z∣|z| from two asymptotic series (acb_hypgeom_m_asymp).

Choosing between them. For ∣z∣|z| below 4 the convergent series is used, and for ∣z∣>264|z| > 2^{64} the asymptotic one. In between, acb_hypgeom_m and acb_hypgeom_u compare the accuracy that the asymptotic expansion can reach, about ∣z∣/log⁡2|z|/\log 2 bits (the smallest term of 2F0(⋅;−1/z){}_2F_0(\cdot;-1/z) is about e−∣z∣e^{-|z|} for small parameters), with the accuracy of the convergent series after the estimated cancellation, and choose the method and the working precision accordingly. If the asymptotic expansion reaches the target precision it is preferred, since it is cheaper. For large parameters the asymptotic expansion is useless, and the convergent series needs a very high working precision; for real arguments the functions then try rigorous numerical integration (Numerical integration).

Limits at integer parameters. The formula for UU has removable singularities at integer bb. acb_hypgeom_u_1f1 handles this case by evaluating the formula with bb replaced by the power series b+xb + x and dividing out the zero of the denominator sin⁡(πb)\sin(\pi b), using the power series algorithms and tail bounds above; the regularized functions 1F1=1F1/Γ(b){}_1\mathbf{F}_1 = {}_1F_1/\Gamma(b) are summed so that the factor 1/Γ(b+k)1/\Gamma(b + k) vanishes for the terms that would divide by zero. The same technique gives KνK_\nu and YνY_\nu at integer ν\nu, and the limits of the 2F1{}_2F_1 transformations.

Numerical integration#

For large real parameters, where both expansions are slow, the integral representations

1F1(a,b,z)=Γ(b)Γ(a)Γ(b−a)∫01eztta−1(1−t)b−a−1dt,U(a,b,z)=1Γ(a)∫0∞e−ztta−1(1+t)b−a−1dt,{}_1F_1(a,b,z) = \frac{\Gamma(b)}{\Gamma(a)\Gamma(b-a)} \int_0^1 e^{zt} t^{a-1}(1-t)^{b-a-1} dt, \qquad U(a,b,z) = \frac{1}{\Gamma(a)}\int_0^\infty e^{-zt} t^{a-1} (1+t)^{b-a-1} dt,

and the analogous ones for 2F1{}_2F_1, Γ(s,z)\Gamma(s,z), IνI_\nu and KνK_\nu are evaluated with the rigorous integration of acb_calc_integrate [Joh2018a]. The integrands are smooth and positive for the parameter ranges in which the functions are implemented (a≥1a \ge 1, b−a≥1b - a \ge 1 and so on), and the cost of the integration grows only slowly with the parameters. acb_hypgeom_m, acb_hypgeom_u, acb_hypgeom_2f1, acb_hypgeom_gamma_upper, acb_hypgeom_bessel_i and acb_hypgeom_bessel_k call the integration functions of arb_hypgeom when their other methods give less than half of the requested accuracy and all arguments are real and below 2602^{60}, and keep the better enclosure.

Use in FLINT#

Referenced from#

References#

  • [Joh2016] F. Johansson, "Computing hypergeometric functions rigorously", preprint (2016), https://arxiv.org/abs/1606.06977
  • [Joh2014a] F. Johansson, Fast and rigorous computation of special functions to high precision, PhD thesis, RISC, Johannes Kepler University, Linz, 2014. https://fredrikj.net/thesis/
  • [Smi1989] D. M. Smith. Efficient multiple-precision evaluation of elementary functions. Mathematics of Computation 52 (1989), 131–134. https://doi.org/10.1090/S0025-5718-1989-0971406-0
  • [PS1973] M. S. Paterson and L. J. Stockmeyer, "On the number of nonscalar multiplications necessary to evaluate polynomials", SIAM J. Comput (1973)
  • [Joh2014b] F. Johansson, "Evaluating parametric holonomic sequences using rectangular splitting", ISSAC 2014, 256-263. https://doi.org/10.1145/2608628.2608629
  • [Bre1976] R. P. Brent. The complexity of multiple-precision arithmetic. In R. S. Anderssen and R. P. Brent (eds.), The Complexity of Computational Problem Solving, University of Queensland Press, 1976, 126–165.
  • [CC1988] D. V. Chudnovsky and G. V. Chudnovsky. Approximations and complex multiplication according to Ramanujan. In Ramanujan Revisited, Academic Press, 1988, 375–472.
  • [BZ2011] R. P. Brent and P. Zimmermann, Modern Computer Arithmetic, Cambridge University Press (2011), http://www.loria.fr/~zimmerma/mca/pub226.html
  • [BGS2007] A. Bostan, P. Gaudry and É. Schost, "Linear recurrences with polynomial coefficients and application to integer factorization and Cartier–Manin operator", SIAM Journal on Computing 36 (2007), 1777–1806
  • [CC1990] D. V. Chudnovsky and G. V. Chudnovsky. Computer algebra in the service of mathematical physics and number theory. In Computers in Mathematics (Stanford, 1986), Lecture Notes in Pure and Applied Mathematics 125, Dekker, 1990, 109–232.
  • [vdH1999] J. van der Hoeven. Fast evaluation of holonomic functions. Theoretical Computer Science 210:1 (1999), 199–215. https://doi.org/10.1016/S0304-3975(98)00102-9
  • [Mez2010] M. Mezzarobba. NumGfun: a package for numerical and analytic computation with D-finite functions. ISSAC 2010, 139–146. https://doi.org/10.1145/1837934.1837965
  • [Hoe2001] J. van der Hoeven. "Fast evaluation of holonomic functions near and in regular singularities", Journal of Symbolic Computation, 31(6):717-743 (2001).
  • [NIST2012] National Institute of Standards and Technology, Digital Library of Mathematical Functions (2012), https://dlmf.nist.gov/
  • [Joh2018a] F. Johansson, "Numerical integration in arbitrary-precision ball arithmetic", preprint (2018), https://arxiv.org/abs/1802.07942
Cite this page

The FLINT team, “Hypergeometric functions,” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/algorithms/special-functions/hypergeometric.html (generated 2026-11-02).