FLINT3.7.0-dev

acb_theta_agm_mul

Synopsis#include <flint/acb_theta.h>
void acb_theta_agm_mul(acb_ptr res, acb_srcptr a1, acb_srcptr a2, slong g, int all, slong prec)source

For 0≤k<2g0 \le k < 2^g, sets entry kk of res to ∑b∈{0,1}ga1,b a2,b+k\sum_{b \in \{0,1\}^g} a_{1,b}\, a_{2, b + k}, where b+kb + k is the bitwise exclusive or. If all is nonzero, res has length 22g2^{2g} and also contains, for 1≤a<2g1 \le a < 2^g, the vectors with entries ∑b(−1)aTba1,b a2,b+k\sum_{b} (-1)^{a^T b} a_{1,b}\, a_{2, b+k}. This is computed with two Hadamard transforms and 2g2^g products [LT2016], which loses precision when the entries have different orders of magnitude; it is faster when a1 and a2 are the same pointer (squarings).

References#

  • [LT2016] H. Labrande and E. Thomé, "Computing theta functions in quasi-linear time in genus 2 and above", ANTS XII, Kaiserslautern, LMS J. Comp. Math 19 (2016), 163–177. https://doi.org/10.1112/S1461157016000309
Cite this page

The FLINT team, “acb_theta_agm_mul (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.html (generated 2026-11-02).