acb_theta_agm_mul_tight
#include <flint/acb_theta.h>void acb_theta_agm_mul_tight(acb_ptr res, acb_srcptr a0, acb_srcptr a, arb_srcptr d0, arb_srcptr d, slong g, int all, slong prec)sourceThe same as acb_theta_agm_mul on a0 and a, but with error bounds that are much tighter when |a_k| \approx e^{-d_k} and |a_{0,k}| \approx e^{-d_{0,k}}, where d0 and d are the output of acb_theta_eld_distances at (0, \tau) and (z, \tau), as for normalised theta values.
The function computes m and \varepsilon such that |a_k| \le m e^{-d_k} and \operatorname{rad}(a_k) \le \varepsilon e^{-d_k} for all k, and m_0, \varepsilon_0 for a0 similarly, calls acb_theta_agm_mul on the midpoints at a higher precision, and adds 2^g e^{-d_k} (m_0 \varepsilon + m \varepsilon_0 + \varepsilon\varepsilon_0) to the radius of entry k. This is valid because for v = -Y^{-1} y,
if x \in \mathbb{Z}^g + \frac b2 and w \in v + \mathbb{Z}^g + \frac{b+k}{2} realise the two distances, then so does -x, and choosing the sign with \langle x, w \rangle_\tau \le 0 gives \lVert x + w \rVert_\tau^2 \le \lVert x \rVert_\tau^2 + \lVert w \rVert_\tau^2 with x + w \in v + \mathbb{Z}^g + \frac k2.
The FLINT team, “acb_theta_agm_mul_tight (acb_theta.h),” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/acb_theta/acb_theta_agm_mul_tight.html (generated 2026-10-20).
@misc{flint-doc-acb-theta-acb-theta-agm-mul-tight,
author = {{The FLINT team}},
title = {{acb\_theta\_agm\_mul\_tight (acb\_theta.h)}},
howpublished = {FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev},
year = {2026},
url = {https://flintlib.org/doc/acb_theta/acb_theta_agm_mul_tight.html},
note = {Generated 2026-10-20}
}