The dilogarithm
- Cost
- O(M(p) log² p) at p bits with the bit-burst algorithm; O(p^{1/2}) full multiplications with rectangular splitting at moderate precision.
The dilogarithm
is analytic on . acb_hypgeom_dilog evaluates it for complex balls; it is a holonomic function, and the methods below are instances of the general ones in Hypergeometric functions. General polylogarithms are computed in acb_dirichlet and acb_poly by other methods (Zeta functions, polylogarithms and L-functions).
Transformations#
The functional equations
map to , , and (acb_hypgeom_dilog_transform with algorithm 1 to 4; each returns an indeterminate result if the ball meets the region where the formula is invalid). As for , the union of the disks over the transformed arguments covers the plane except neighbourhoods of the points , which are fixed points of the transformation group.
acb_hypgeom_dilog computes , , , and in double precision and uses the series at 0 directly if , and otherwise after the transformation that minimizes . If the best is still above , it considers two alternatives:
- below 10000 bits, the series in described next, if its rate of convergence (with a penalty factor) is better;
- if the best exceeds (which happens only near when the Bernoulli series was not chosen), expansion at one of the points , , (or their conjugates), where has a closed form, for example with Catalan's constant , followed by bit-burst continuation to .
The working precision is limited to the accuracy of the input plus 30 bits, and raised by 0.5% plus 5 bits.
The series at zero#
acb_hypgeom_dilog_zero_taylor sums for small . Since the coefficients are reciprocals of small integers, the sum is computed by rectangular splitting in powers of , where several consecutive denominators are combined into one word-size divisor, or by binary splitting when has few bits; the tail after terms is bounded by . acb_hypgeom_dilog_zero uses this below 40000 bits or for tiny , and the bit-burst algorithm otherwise.
The series in log z#
With , for ,
which follows from and . For the terms are bounded by , which gives the truncation bound as a geometric series. acb_hypgeom_dilog_bernoulli evaluates this with Horner's scheme in and the cached Bernoulli numbers. Near , and each term gains about 2.6 bits. Since the Bernoulli numbers grow in size, the method is used only below 10000 bits.
Taylor continuation#
acb_hypgeom_dilog_continuation computes from the Taylor expansion at . Since , the Taylor coefficients satisfy a recurrence of order 2 with polynomial coefficients in , and , so the partial sums are products of matrices, computed with the forward recurrence or by binary splitting. The coefficients are bounded by
which follows from the symbolic derivatives, or by for and (from Cauchy's integral formula); the tail after terms is then bounded by a geometric series in , which must be less than 1. If the segment from to crosses the branch cut, the result is the analytic continuation along the segment.
The bit-burst algorithm#
For a full-precision , the Taylor series at needs terms with full-precision coefficients. acb_hypgeom_dilog_bitburst (The bit-burst algorithm) instead chooses as truncated to 16 fractional bits and the points as truncated to bits, and sums
each term by Taylor continuation from with binary splitting: the argument is small and short, so each step costs and the total . The value comes from the series at 0 (or from a continuation from a special point), and since has only 16 bits it is cheap. If the path would come close to the branch cut, the bit-burst step is skipped.
Use in FLINT#
acb_hypgeom_dilogand the realarb_hypgeom_dilog; the methodsacb_hypgeom_dilog_zero,acb_hypgeom_dilog_zero_taylor,acb_hypgeom_dilog_transform,acb_hypgeom_dilog_bernoulli,acb_hypgeom_dilog_continuation,acb_hypgeom_dilog_bitburst.acb_polylogwith (through_acb_poly_polylog_cpx) and the genericgr_dilogfor complex ball contexts callacb_hypgeom_dilog.
Referenced from#
- acb_hypgeom.h (module)
- Hypergeometric functions (algorithm)
- Zeta functions, polylogarithms and L-functions (algorithm)
The FLINT team, “The dilogarithm,” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/algorithms/special-functions/dilogarithm.html (generated 2026-11-02).
@misc{flint-doc-algorithms-special-functions-dilogarithm,
author = {{The FLINT team}},
title = {{The dilogarithm}},
howpublished = {FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev},
year = {2026},
url = {https://flintlib.org/doc/algorithms/special-functions/dilogarithm.html},
note = {Generated 2026-11-02}
}