Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Repository organization

  • Field arithmetic: representations, arithmetic backends, and batch inversion.
  • Curves: group laws, coordinate systems, hash maps, and encodings.
  • Group capabilities: the operations consumed by ECMH, the RIBLT workload, and the benchmarks.
  • Benchmarks and reporting tools.
  • results/: the published benchmark runs, each in the compact form described in Measurement methodology, from which the site renders one chapter per run. bench-runs/, where runs are recorded, is not under version control.
  • Tests: known-answer tests against the reference programs’ fixtures, point counts against PARI, and the certificate corpus. Every recorded fixture opens with how it was produced: the generated tests/common/*.rs with the Sage command that rewrites them, the corpus tests/fixtures/cert_corpus.txt with the test that records and checks it, and the report’s report/tests/fixtures/*.tsv with the run and derivation they come from, as far as these were recorded.
  • Nix: the pinned toolchains and the derivations for the package, checks, benchmark executables, reports, assembly listings, and this site; nix run .#validate-commits -- RANGE runs the checks at every commit of a range, as the continuous integration does for each commit a push or pull request adds.
  • Documents: the chapters; docs/index.md gives their order.
  • Reference programs: the known-answer-test generators and order proofs the Rust fixtures come from (kat*.sage, prove_orders.sage, agm_vectors.sage, sieve.sage, gf2_*.sage), and the surveys behind the choice of fields and curves: candidate field sizes (field_sizes.sage), GLS fields (gls_survey.sage), Weil descent (ghs.sage, ghs122.sage), and complete Edwards curves over pseudo-Mersenne primes (edwards_search.py).