I maintain some computer code for computations relating to my research. These scripts are mostly for the computer algebra systems Pari/GP and Sage. You are welcome to download and use these scripts; they and the software to run them (Pari & Sage) are free. Please let me know if you encounter errors.
Notes on usage
- To use a Pari/GP script, load the script by typing “\r filename” at the prompt, where filename includes the path, then see the script for descriptions of functions;
- To use a Sage script, type “attach(‘filename’)” at the prompt; it also works simply to cut and paste the text of the script file into the first cell of a notebook;
- To use a Sage notebook, upload it to the notebook interface.
Illustrating Number Theory
I’ve taken an interest in the illustration of number theory with computers and 3d printing, etc. Click here to view my gallery.
Ring Learning with Errors
Ring Learning with Errors is a front-runner for a hard problem upon which to base post-quantum cryptography. Here are some algorithms for attempting to solve it.
- Ring-BKW [ Code etc. ] – This code supports my paper Algebraic aspects of solving Ring-LWE, including ring-based improvements in the Blum-Kalai-Wasserman algorithm.
- Ring-LWE and Poly-LWE attack [ Sage Notebook ] – This implements the algorithms in our paper Provably weak instances of Ring-LWE (with Yara Elias, Kristin E. Lauter and Ekin Ozman).
- Apollonian-like packings and Schmidt Arrangements [ Sage Notebook | Interactive Web Page ] – This draws pictures of Schmidt Arrangements and K-Apollonian circle packings as described in my papers Visualizing the arithmetic of imaginary quadratic fields and The Apollonian structure of Bianchi groups.
- My graduate student, Daniel Martin, has some remarkable code for Schmidt arrangements and his own generalizations.
Elliptic Divisibility Sequences and Elliptic Nets
- Tate pairing computation via elliptic nets [ Pari/GP ] – This implements the algorithms in my paper The Tate pairing via elliptic nets. Note: For other implementations, see also Graeme Taylor, who has implemented it for SAGE and has notes on his improvements; Ben Lynn, who has implemented it in his Pairing-Based Cryptography Library as part of his thesis; and and Augusto Jun Devegili at University College Dublin. Many of the formulas my be found in my formulary.
- Elliptic Divisibility Sequences Tools [ Pari/GP | SAGE | Example Sage Notebook | PDF of Example Notebook ] – These are general-purpose algorithms for experimenting with elliptic divisibility sequences over any field. Move between sequences and curves, generate terms efficiently, etc. Many of the formulas may be found in my formulary.
- Elliptic Nets Tools [ Pari/GP ] – These are general-purpose algorithms for experimenting with rank two elliptic nets over any field. It requires the use of the Elliptic Divisibility Sequences Tools above. Many of the formulas may be found in my formulary.
Ethiopian Dinner Game
- Ethiopian Dinner Game [ view SAGE notebook online | SAGE script | SAGE notebook for download ] – Tools for experimenting with the Ethiopian Dinner Game. See the paper How to make the most of a shared meal: plan the last bite first.
Sage Mathematics Software
I do a wee little bit of development for the mathematical software Sage.
- Sage Mathematics Software
- Single cell Sage computation online (example 2+2 or EllipticCurve(’37a’).ap(79))
- Some example code for plotting (if you want to use the single cell above as a graphing tool)
- Look for me on trac (sage development)
- My group at Sage Days 33
- Sage Developer’s Guide
Support and Disclaimer
Some of this material is based upon work supported by the National Science Foundation, the National Security Agency, and the National Science and Engineering Research Council. Any opinions, findings and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation of the USA (NSF), the National Security Agency (NSA), or the National Science and Engineering Research Council of Canada (NSERC).