From: shoup@jalapeno.cs.wisc.edu (Victor Shoup) Newsgroups: sci.math.symbolic,sci.math,sci.math.research Subject: NTL 2.0 Date: 29 Dec 1997 13:03:56 GMT Announcing NTL 2.0 ------------------ NTL 2.0 is available at www.cs.wisc.edu/~shoup/ntl NTL Overview ------------ 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. NTL provides high quality implementations of state-of-the-art algorithms for: * arbitrary length integer arithmetic and arbitrary precision floating point arithmetic; * polynomial arithmetic over Z, GF(p), GF(2), GF(2^n), including basic arithmetic, polynomial factorization, irreducibility testing, computation of minimal polynomials, traces, norms, and more; * lattice basis reduction, including very robust and fast implementations of Schnorr-Euchner, block Korkin-Zolotarev reduction, and the new Schnorr-Horner pruning heuristic for block Korkin-Zolotarev; * basic linear algebra over Z, GF(p), GF(2^n), and arbitrary precision floating point numbers; NTL can be easily installed in a matter of minutes on just about any platform, including PCs, and 32- and 64-bit workstations running Unix or Windows 95/NT. NTL achieves this portability by avoiding esoteric C++ features, and by avoiding assembly code; it should therefore remain usable for years to come with little or no maintenance, even as processors and operating systems continue to change and evolve. However, several compile-time flags can be set to tune the code for a particular type of platform. NTL provides a clean and consistent interface to a large variety of classes representing mathematical objects. It provides a good environment for easily and quickly implementing new number-theoretic algorithms, without sacrificing performance. NTL is free software that is intended for research and educational purposes only. It is written and maintained by Victor Shoup, with some code contributed by others. Changes between NTL 1.7 and 2.0 ------------------------------- * Implementation of classes BB (polynomials over GF(2)) and BB_pX (polynomials over GF(2^n)). * A more consistent and natural interface, including arithmetic operators and a disciplined use of automatic conversion. So now one can write x = a * b + c; instead of mul(x, a, b); add(x, x, c); as one must in older versions of NTL. The operator notation leads to somewhat less efficient code, and one can always use the old notation in situations where efficiency is critical. Despite the new programming interface, care has been taken to ensure backward compatability; pre-existing programs that use NTL should still work. * Port to Windows 95/NT. * Added compile-time flag that allows one to exploit "long long" data type if it exists (this especially helps on Pentium/Linux platforms). * Added compile-time flag to get better quad_float code on Pentium/Linux platforms. * A few bug fixes and performance tuning.