GNU MP is a portable library written in C for arbitrary precision arithmetic on integers, rational numbers, and floating-point numbers. It aims to provide the fastest possible arithmetic for all applications that need higher precision than is directly supported by the basic C types.
Many applications use just a few hundred bits of precision; but some applications may need thousands or even millions of bits. GMP is designed to give good performance for both, by choosing algorithms based on the sizes of the operands, and by carefully keeping the overhead at a minimum.
The speed of GMP is achieved by using fullwords as the basic arithmetic type, by using sophisticated algorithms, by including carefully optimized assembly code for the most common inner loops for many different CPUs, and by a general emphasis on speed (as opposed to simplicity or elegance).
There is assembly code for these CPUs: ARM Cortex-A9, Cortex-A15, and generic ARM, DEC Alpha 21064, 21164, and 21264, AMD K8 and K10 (sold under many brands, e.g. Athlon64, Phenom, Opteron) Bulldozer, and Bobcat, Intel Pentium, Pentium Pro/II/III, Pentium 4, Core2, Nehalem, Sandy bridge, Haswell, generic x86, Intel IA-64, Motorola/IBM PowerPC 32 and 64 such as POWER970, POWER5, POWER6, and POWER7, MIPS 32-bit and 64-bit, SPARC 32-bit ad 64-bit with special support for all UltraSPARC models. There is also assembly code for many obsolete CPUs.
For up-to-date information on GMP, please see the GMP web pages at
The latest version of the library is available at
Many sites around the world mirror ‘ftp.gnu.org’, please use a mirror near you, see https://www.gnu.org/order/ftp.html for a full list.
There are three public mailing lists of interest. One for release announcements, one for general questions and discussions about usage of the GMP library and one for bug reports. For more information, see
The proper place for bug reports is firstname.lastname@example.org. See Reporting Bugs for information about reporting bugs.
Everyone should read GMP Basics. If you need to install the library yourself, then read Installing GMP. If you have a system with multiple ABIs, then read ABI and ISA, for the compiler options that must be used on applications.
The rest of the manual can be used for later reference, although it is probably a good idea to glance through it.