acb_dirichlet_l_euler_product, _acb_dirichlet_euler_product_real_ui
#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)sourcevoid _acb_dirichlet_euler_product_real_ui(arb_t res, ulong s, const signed char * chi, int mod, int reciprocal, slong prec)sourceSet 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,
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).
@misc{flint-doc-acb-dirichlet-acb-dirichlet-l-euler-product,
author = {{The FLINT team}},
title = {{acb\_dirichlet\_l\_euler\_product, \_acb\_dirichlet\_euler\_product\_real\_ui (acb\_dirichlet.h)}},
howpublished = {FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev},
year = {2026},
url = {https://flintlib.org/doc/acb_dirichlet/acb_dirichlet_l_euler_product.html},
note = {Generated 2026-10-20}
}