GMP is a free library for arbitrary precision arithmetic, operating on

advertisement
GMP
What is GMP?
GMP is a free library for arbitrary precision arithmetic,
operating on signed integers, rational numbers, and floating
point numbers. There is no practical limit to the precision
except the ones implied by the available memory in the
machine GMP runs on. GMP has a rich set of functions, and
the functions have a regular interface.
The main target applications for GMP are cryptography
applications and research, Internet security applications,
algebra systems, computational algebra research, etc.
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 optimised assembly code
for the most common inner loops for a lot of CPUs, and by a
general emphasis on speed.
GMP is faster than any other bignum library. The
advantage for GMP increases with the operand sizes for
many operations, since GMP uses asymptotically faster
algorithms.
The first GMP release was made in 1991. It is continually
developed and maintained, with a new release about once a
year.
GMP is distributed under theGNU LGPL. This license
makes the library free to use, share, and improve, and allows
you to pass on the result. The license gives freedoms, but also
sets firm restrictions on the use with non-free programs.
GMP is part of the GNU project. For more information
about the GNU project, please see the official GNU web site.
GMP's main target platforms are Unix-type systems, such as
GNU/Linux, Solaris, HP-UX, Mac OS X/Darwin, BSD, AIX,
etc. It also is known to work on Windows in both 32-bit and
64-bit mode.
GMP is brought to you by a team listed in the manual.
GMP is carefully developed and maintained, both
technically and legally. We of course inspect and test
contributed code carefully, but equally importantly we make
sure we have the legal right to distribute the contributions,
meaning users can safely use GMP. To achieve this, we will
ask contributors to sign paperwork where they allow us to
distribute their work.
GMP function categories
There are several categories of functions in GMP:
1.
2.
3.
High-level signed integer arithmetic functions (mpz).
There are about 140 arithmetic and logic functions in
this category.
High-level rational arithmetic functions (mpq). This
category consists of about 35 functions, but all signed
integer arithmetic functions can be used too, by
applying them to the numerator and denominator
separately.
High-level floating-point arithmetic functions (mpf).
This is the GMP function category to use if the C type
`double' doesn't give enough precision for an
application. There are about 65 functions in this
category.
4.
5.
6.
C++ class based interface to all of the above. (The C
functions and types can of course be used directly from
C++ too.)
Low-level positive-integer, hard-to-use, very low
overhead functions are found in the mpn category. No
memory management is performed; the caller must
ensure enough space is available for the results. The set
of functions is not always regular, nor is the calling
interface. These functions accept input arguments in the
form of pairs consisting of a pointer to the least
significant word, and an integral size telling how many
limbs (= words) there are in that argument. The
functions in the other categories call mpn for almost all
their calculations.
Externally supported: High-level floating-point
accurately rounding arithmetic functions (mpfr). See
the mpfr site for more information. Starting with GMP
4.2, mpfr is released separately from GMP. (New
projects should consider using mpfr instead of GMP's
own mpf.)
Download