Free systems and libraries for doing number theory and
- GMP is GNU
Multiple Precision Arithmetic Library. It supports
arbitrary precision arithmetic, operating on signed
integers, rational numbers, and floating point numbers.
GMP is carefully designed to be as fast as possible, both
for small operands and for huge operands. The speed is
achieved by using fullwords as the basic arithmetic type,
by using fast algorithms, with highly optimized assembly
code for the most common inner loops for a lot of CPUs,
and by a general emphasis on speed. Probably it is
the fastest bignum library.
- Arjen K. Lenstra's LIP package.
Lenstra's LIP is portable and not slow arbitrary
precision integer C library. It supports basic
arithmetic, bit manipulation, modular arithmetic, small
prime generation, prime testing, factorization and
- Victor Shoup's NTL: A Library for doing
Number Theory. NTL provides high quality
implementations of state-of-the-art algorithms for:
- arbitrary length integer arithmetic and arbitrary
precision floating point arithmetic; NTL can be used
in conjunction with GMP (the GNU Multi-Precision
library) for enhanced performance;
- polynomial arithmetic over the integers and
finite fields 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
- basic linear algebra over the integers, finite
fields, and arbitrary precision floating point
is a widely used computer algebra system designed for
fast computations in number theory (factorizations,
algebraic number theory, elliptic curves...), but also
contains a large number of other useful functions to
compute with mathematical entities such as matrices,
polynomials, power series, algebraic numbers, etc., and a
lot of transcendental functions. PARI is also available
as a C library to allow for faster computations.
is a computer algebra system based on DOE Macsyma. The
source code is available. It has abilities such as
symbolic integration, 3D plotting, and an ODE solver, but
there is a lot of work yet to be done in terms of bug
fixing, cleanup, and documentation.
- Axiom is
an extremely powerful computer algebra system with a
slightly different philosophy than Maxima. It is useful
for research and development of mathematical algorithms.
It defines a strongly typed, mathematically correct type
hierarchy. It has a programming language and a built-in
- GNU bc is an
arbitrary precision numeric processing language. Its
syntax is similar to C, but differs in many substantial
areas. It supports interactive execution of
- Yuji Kida's UBASIC
is a BASIC-like environment which is suitable for number
theoretic investigations. UBASIC has the high precision
integer, real and complex arithmetic, exact rational
arithmetic and arithmetic of polynomials with complex,
rational, or modulo p coefficients, as well as string
handling and limited list handling capabilities. It runs
under MS-DOS and is written in assembly language. It is
really very nice and powerfull language. See UBASIC
Home (Much in Japanese). See also
Google UBASIC directory.
ARIBAS is an interactive interpreter for big integer
arithmetic and multi-precision floating point arithmetic
with a Pascal/Modula like syntax.
- Givaro: a
C++ library for arithmetic and algebraic computations.
Its main features are implementations of the basic
arithmetic of many mathematical entities: Primes fields,
Extensions Fields, Finite Fields, Finite Rings,
Polynomials, Algebraic numbers, Arbitrary precision
integers and rationals (C++ wrappers over gmp) It also
provides data-structures and templated classes for the
manipulation of basic algebraic objects, such as vectors,
matrices (dense, sparse, structured), univariate
polynomials (and therefore recursive multivariate).
is a C++ library for computational number theory which
provides a collection of highly optimized implementations
of various multiprecision data types and time-intensive
algorithms. The current release contains: Arithmetic
Interfaces to cln, gmp, libI, piologie; Basic arithmetic
over Z, Q, R, C, interval arithmetic, GF(2^n), GF(p^n);
Factorization: Integer Factorization (Trial Division,
Elliptic Curve Method, Quadratic Sieve with Lanczos
algorithm), Factorization of Polynomials over finite
fields, Factoring ideals of algebraic number fields;
Lattice Basis Reduction; Linear Algebra over Z; Number
Fields; Polynomials (template classes for univariate
polynomials); Elliptic Curves (over the rationals and
over finite fields, counting points on elliptic curves,
generating cryptographically strong curves); Primality
Proofing (probabilistic primality tests, new elliptic
curve based primality proofer); Other Generic Data Types
(vectors, matrices, power series, and hash tables
implemented as templates).
- Project LINBOX is a
collaborative effort among researchers at a number of
locations. The goals are to produce algorithms and
software for symbolic linear algebra, particularly using
black box matrix methods, i.e. iterative methods
requiring only the linear transform property of the
matrix (that one can compute Ax --> y). No stable
releases at present.
- See also SymbolicNet, It is a
very good starting point to learn about symbolic
computation and computer algebra systems.
- A lot of others links see at Keith Matthews's
Multilingual library of algorithms by Sergey Bochkanov
and Vladimir Bystritsky.
If you have any questions about
information on this page or you have noticed an error,
please contact Arageli Information
Last modified: 2008-12-11
Design and content - © Nikolai Yu. Zolotykh, 2006, ©
Sergey S. Lyalin, 2006.
Webmaster - Sergey V. Lobanov
University of Nizhni Novgorod,