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


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