FLINT3.7.0-dev

acb_dirichlet_l_euler_product, _acb_dirichlet_euler_product_real_ui

Synopsis#include <flint/acb_dirichlet.h>
void acb_dirichlet_l_euler_product(acb_t res, const acb_t s, const dirichlet_group_t G, const dirichlet_char_t chi, slong prec)source
void _acb_dirichlet_euler_product_real_ui(arb_t res, ulong s, const signed char * chi, int mod, int reciprocal, slong prec)source

Set res to L(s,χ)L(s,\chi) by the Euler product, which is efficient for large Re⁡(s)\operatorname{Re}(s); the result is finite only if Re⁡(s)≥2\operatorname{Re}(s) \ge 2. The underscore version takes an integer ss and a real character given by the list chi of its values at 0,…,mod−10, \ldots, \text{mod}-1, and computes 1/L(s,χ)1/L(s, \chi) if reciprocal is nonzero.

The truncation error is bounded with mag_hurwitz_zeta_uiui: since 1/L(s,χ)=∏p(1−χ(p)p−s)=∑k≥1μ(k)χ(k)k−s1/L(s,\chi) = \prod_{p} (1 - \chi(p) p^{-s}) = \sum_{k \ge 1} \mu(k)\chi(k) k^{-s} and the truncated product contains all terms with smooth index,

∣∏p<N(1−χ(p)ps)−1L(s,χ)∣≤∑k=N∞1kRe⁡(s)=ζ(Re⁡(s),N).\left|\prod_{p < N} \left(1 - \frac{\chi(p)}{p^s}\right) - \frac{1}{L(s,\chi)}\right| \le \sum_{k=N}^{\infty} \frac{1}{k^{\operatorname{Re}(s)}} = \zeta(\operatorname{Re}(s),N).
Cite this page

The FLINT team, “acb_dirichlet_l_euler_product, _acb_dirichlet_euler_product_real_ui (acb_dirichlet.h),” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/acb_dirichlet/acb_dirichlet_l_euler_product.html (generated 2026-11-02).