NTL: A Library for doing Number Theory (original) (raw)
NTL is a high-performance, portable C++ library providing data structures and algorithms for manipulating signed, arbitrary length integers, and for vectors, matrices, and polynomials over the integers and over finite fields.
By default, NTL is thread safe.
NTL is distributed under LGPLv2.1+(i.e., LGPL version 2.1 or later) [more details]
If you are interested in contributing to the development of NTL, please contact me (see contact info below). I have a few projects in mind, and would be happy to discuss other ideas as well.
Now available: NTL 11.6.0
Links
- Detailed information about recent changes
- Documentation
- Downloads
- GitHub page
- I've finally created a GitHub page for NTL!
- This will hopefully make it easier for others to contribute
- I'm not an expert Git user, but if you have simple, small pull requests that do not require too much reviewing, I should be able to process them
- If you want to make a more extensive pull request for some feature or behavior, we should discuss this is advance
- Email: victor@shoup.net
- For bug reports or other comments
- Discussion forum: the libntl Google Group
- The story of NTL's past, present, and future.
- For a more complete history of NTL and details about its evolution and implementation, also see my paper "Arithmetic Software Libraries" published as a chapter in Computational Cryptography, and also available online here.
NTL wins a prize
NTL's author was recently awarded the ACM/SIGSAM Richard Dimick Jenks Memorial Prize for Excellence in Software Engineering applied to Computer Algebrafor his work on NTL.
NTL vs FLINT
I've made a comparison between polynomial arithmetic in NTL and FLINT, based on NTL 11.4.3 and FLINT 2.7.1. You can see the results in this report. You can download all the test programs here.
Short synpopsis: in many settings NTL is faster, and in others FLINT is faster. It really depends on what you are doing. Please read the report for full details.
Thread boosting
As of version 9.5, NTL is not only thread safe, but includes a new_thread boosting_ feature, which utilizes multiple cores to speed up low-level computations. This is a work in progress, and only some parts of the library are thread boosted. You can see the effect of thread boosting in the context of polynomial factorization over ZZ_p in this report (updated 2016.23.11). You can download the test programs here. An older version of the report is availablehere.
Short synposis: using 8 cores, NTL's (already pretty fast) algorithm for factoring polynomials over ZZ_pnow runs 5-6 times faster. This is a result of boosting the low-level ZZ_pXand mat_ZZ_parithmetic: the higher-level factoring routines are completely unchanged.