Algorithm 524: MP, a Fortran multiple-precision arithmetic package

43. R. P. Brent, Algorithm 524: MP, a Fortran multiple-precision arithmetic package [A1], ACM Transactions on Mathematical Software 4 (1978), 71-81. See also "Remark on Algorithm 524", ibid 5 (1979), 518-519.

Abstract: dvi (3K), pdf (79K), ps (27K).

Paper: pdf (685K).

Remark: pdf (114K).

Source code (version 810614): gzipped tar (242K), zip (249K).


A collection of ANSI Standard Fortran subroutines for performing multiple-precision floating-point arithmetic and evaluating elementary and special functions is given. The subroutines are machine independent and the precision is arbitrary, subject to storage limitations.


1. The source code is for version 810614 of 14 June 1981 (slightly later than the code published in ACM Transactions on Mathematical Software, with a bug in MPGAMQ fixed 8 Feb 1989). The version number is printed when MPERR is called and is hard-coded in the source of MPERR.

2. A modified version (MP Linux 20010829) which runs under Linux using GNU Fortran f77 on Intel Pentium and similar machines is available and included in the tar/zip files above. See also mplinux0.f (Linux-specific routines) and mplinux1.f (other routines).

3. The calling sequences are described in more detail in the Users Guide .

4. The algorithms are discussed in Brent [42, 52].

5. For a preprocessor (no longer supported), see Brent, Hooper and Yohe [54].

6. For some applications of MP, see Brent [36, 40, 49, 183] and several reviews.

7. MP is now obsolescent. Very few changes to the code or documentation have been made since 1981! Despite this, MP is still useful for some purposes, since it implements many special functions, has the ability to change the base and precision, and is stable and reasonably well debugged.

8. In general, we recommend the use of a more modern package, for example:

Go to next publication

Return to Richard Brent's index page