NTL: A Library for doing Number Theory
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.5.1
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
- A wish list of improvments
to NTL that I won't be able to pursue,
but others could
possibly contribute
-
Contact me if you're interested in working on one of these
improvements
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 Algebra
for 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 available
here.
Short synposis: using 8 cores, NTL's (already pretty fast)
algorithm for factoring polynomials over ZZ_p
now runs 5-6 times faster.
This is a result of boosting the low-level ZZ_pX
and mat_ZZ_p
arithmetic: the higher-level factoring routines are completely unchanged.
Back to Victor Shoup's Home Page