FLINT3.7.0-dev

acb_theta_agm_mul_tight

Synopsis#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)source

The same as acb_theta_agm_mul on a0 and a, but with error bounds that are much tighter when ∣ak∣≈e−dk|a_k| \approx e^{-d_k} and ∣a0,k∣≈e−d0,k|a_{0,k}| \approx e^{-d_{0,k}}, where d0 and d are the output of acb_theta_eld_distances at (0,τ)(0, \tau) and (z,τ)(z, \tau), as for normalised theta values.

The function computes mm and ε\varepsilon such that ∣ak∣≤me−dk|a_k| \le m e^{-d_k} and rad⁡(ak)≤εe−dk\operatorname{rad}(a_k) \le \varepsilon e^{-d_k} for all kk, and m0,ε0m_0, \varepsilon_0 for a0 similarly, calls acb_theta_agm_mul on the midpoints at a higher precision, and adds 2ge−dk(m0ε+mε0+εε0)2^g e^{-d_k} (m_0 \varepsilon + m \varepsilon_0 + \varepsilon\varepsilon_0) to the radius of entry kk. This is valid because for v=−Y−1yv = -Y^{-1} y,

Distτ(0,Zg+b2)2+Distτ(v,Zg+b+k2)2≥Distτ(v,Zg+k2)2:\mathrm{Dist}_\tau(0, \mathbb{Z}^g + \tfrac b2)^2 + \mathrm{Dist}_\tau(v, \mathbb{Z}^g + \tfrac{b + k}{2})^2 \ge \mathrm{Dist}_\tau(v, \mathbb{Z}^g + \tfrac{k}{2})^2:

if x∈Zg+b2x \in \mathbb{Z}^g + \frac b2 and w∈v+Zg+b+k2w \in v + \mathbb{Z}^g + \frac{b+k}{2} realise the two distances, then so does −x-x, and choosing the sign with ⟨x,w⟩τ≤0\langle x, w \rangle_\tau \le 0 gives ∥x+w∥τ2≤∥x∥τ2+∥w∥τ2\lVert x + w \rVert_\tau^2 \le \lVert x \rVert_\tau^2 + \lVert w \rVert_\tau^2 with x+w∈v+Zg+k2x + w \in v + \mathbb{Z}^g + \frac k2.

Cite this page

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-11-02).