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 \le k < 2^g, sets entry k of res to \sum_{b \in \{0,1\}^g} a_{1,b}\, a_{2, b + k}, where b + k is the bitwise exclusive or. If all is nonzero, res has length 2^{2g} and also contains, for 1 \le a < 2^g, the vectors with entries \sum_{b} (-1)^{a^T b} a_{1,b}\, a_{2, b+k}. This is computed with two Hadamard transforms and 2^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-10-20).