FLINT3.7.0-dev

acb_theta_ql_nb_steps

Synopsis#include <flint/acb_theta.h>
int acb_theta_ql_nb_steps(slong * pattern, const acb_mat_t tau, int cst, slong prec)source

Decides how many duplication steps to perform at precision prec and when to switch to lower dimensions, and stores the decision in pattern (of length gg): roughly, entry jj is the number mm of steps such that 2mγj22^m \gamma_j^2 is of the order of prec, where γj\gamma_j is the jj-th diagonal entry of the Cholesky matrix of πY\pi Y. The flag cst should be nonzero when only theta constants (z=0z = 0) are needed. Returns 0 if the Cholesky matrix is indeterminate or too extreme, and 1 otherwise.

After mm duplications the ellipsoid of the summation at 2mτ2^m\tau has width O(1)O(1) in direction jj. For reduced τ\tau, pattern is expected to be roughly decreasing. The rough values are adjusted by rules obtained from timings with the profiling program p-ql_exact (in src/acb_theta/profile): dimension-lowering is forced or avoided depending on how many steps have already been done, a few steps are removed in genus 1, and the result is made nonincreasing and nonnegative. This function is the main place to tune the algorithm.

Guides#

Cite this page

The FLINT team, “acb_theta_ql_nb_steps (acb_theta.h),” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/acb_theta/acb_theta_ql_nb_steps.html (generated 2026-11-02).