Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Acb theta v2 #2182

Draft
wants to merge 232 commits into
base: main
Choose a base branch
from
Draft

Acb theta v2 #2182

wants to merge 232 commits into from

Conversation

j-kieffer
Copy link
Contributor

This is a thorough rewrite of the acb_theta module.

The major changes are the following:

  • introduce context structures in the context of summation algorithms and rewrote the main worker function. This is to allow the next item, and to prevent NaNs when inverting complex numbers at very low precisions.
  • compute exponentials, ellipsoid centers, etc. only once when computing low-precision approximation for the duplication formulas. This should improve performances slightly and decrease the threshold between acb_theta_all and acb_modular_theta.
  • support several vectors z in the quasi-linear algorithms, using the simplest possible duplication formulas for each of them. This should drastically improve the efficiency of the "dimension-lowering" strategy.
  • simplify the management of error bounds by assuming the inputs to be exact and reduced in key internal functions.
  • in the g=1 case, rely on acb_modular_theta_sum instead of acb_modular_theta. This is to allow acb_modular_theta to possibly point to acb_theta_all in the future.
  • make an automatic choice of algorithms in the main user functions between summation and duplication.
  • remove some macros, make some internal functions static in the C files, and write a separate header acb_theta_types.h to lighten the user interface a bit.
  • update documentation.

I mark this as a draft pull request because there are still some todos during the coming week, including:

  • profile the code to make the best possible choices and acb_theta_ql_nb_steps and demonstrate performance gains compared to the previous version.
  • implement the fact that odd theta constants are known to be zero in acb_theta_ql_setup.
  • change some function names that don't match their section (acb_theta_sum_bounds, acb_theta_agm_distances,...)
  • check code coverage and valgrind.
  • use acb_theta_sum_bounds to avoid NaN results only in acb_theta_all and acb_theta_00.
  • possibly use quasi-linear algorithms in acb_theta_00 and acb_theta_jet_00 as well.
  • look at commits that happened on all files since the last workshop and implement them on the new files.
  • get feedback from workshop participants.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants