Fast theta function computation with algorithms taken from my Ph.D.
Here you'll find:
- a C program for genus 1 theta functions and theta constants, both the naive O(M(P) sqrt(P)) version and the quasi-linear (uniform O(M(P) log P) ) one (Relevant paper: Computing Jacobi’s Theta in quasi-linear time, in Mathematics of Computation)
- MAGMA code for genus 2 theta functions and theta constants, both the naive O(M(P) P) version and the quasi-linear (uniform O(M(P) log P) ) one (Relevant paper: Computing theta functions in genus 2 and above in quasi-linear time, with Emmanuel Thomé, at ANTS-XII)
- MAGMA code for genus 3 theta constants, both the naive O(M(P) P^{3/2}) version and the quasi-linear version (Relevant paper: Plane Quartics over Q with Complex Multiplication (2017), with Pınar Kılıçer, Reynald Lercier, Christophe Ritzenthaler, Jeroen Sijsling and Marco Streng, in Acta Arithmetica)
I've left academia so I'm progressively forgetting about the finer details, but ask your questions anyway :) I don't really have the time to maintain the code anymore, but pull requests are welcome!