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 g): roughly, entry j is the number m of steps such that 2^m \gamma_j^2 is of the order of prec, where \gamma_j is the j-th diagonal entry of the Cholesky matrix of \pi Y. The flag cst should be nonzero when only theta constants (z = 0) are needed. Returns 0 if the Cholesky matrix is indeterminate or too extreme, and 1 otherwise.

After m duplications the ellipsoid of the summation at 2^m\tau has width O(1) in direction j. 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-10-20).