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,\chi) by the Euler product, which is efficient for large \operatorname{Re}(s); the result is finite only if \operatorname{Re}(s) \ge 2. The underscore version takes an integer s and a real character given by the list chi of its values at 0, \ldots, \text{mod}-1, and computes 1/L(s, \chi) if reciprocal is nonzero.

The truncation error is bounded with mag_hurwitz_zeta_uiui: since 1/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,

\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-10-20).