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.