News:
February, 2026:
| This update of version 1.4 of the FM package has several new | |
| functions for complex arguments: | |
| exponential integral ei, exponential integral en, log integral, | |
| cos integral, sin integral, cosh integral, sinh integral, | |
| Fresnel cos integral, Fresnel sin integral, Bessel J, Bessel Y. |
December, 2025:
| The current version for the Calc-50 multi-precision calculator app | |
| for iPhones and iPads is version 1.8.1. | |
| Calc-50 |
December, 2024:
| This update of version 1.4 of the FM package has a few new | |
| functions for complex arguments: | |
| beta, pochhammer, incomplete gamma (both upper and lower case gamma). | |
| Other recently added complex functions: | |
| binomial, psi, polygamma. | |
| Bernoulli numbers are now computed more efficiently. See the note | |
| below with the other FM papers. |
This page has some older FM news items.
There is a
backup copy
of this site on the Wayback Machine.
Click on the latest saved copy there.
The package performs multiple-precision real, complex, and integer arithmetic.
It provides the intrinsic Fortran numerical functions, as well as many special functions that are
not included in the Fortran standard.
In addition to these three basic arithmetic types, multiple-precision exact rational arithmetic
and interval arithmetic are also available.
One of the primary uses of the package is to study the accuracy and stability of numerical
algorithms by comparing results computed with several different levels of precision.
An existing Fortran program can be checked by converting it from double precision
to FM arithmetic. The package is designed to make this conversion fairly easy.
The precision, base, and rounding mode for the arithmetic can be set by the user.
Functions are available for conversion between multiple-precision numbers and machine-precision
numbers (single and double precision real and complex, and integer types). Mixed-mode operations
involving multiple-precision numbers and machine-precision numbers are handled automatically in
statements such as a = b - 1 or y = x/3.
There are functions for input/output operations and output formatting. Formatting functions are
very similar to Fortran's format specifications.
Integer multiple-precision arithmetic and functions include GCD, modular products and powers,
and a random number generator based on 49-digit primes.
Array syntax works like Fortran's array operations in statements like v = 1, a = b + c, and
y = cos(x) when these variables are vectors or matrices of multiple precision numbers.
The program SampleFM.f95 below shows several examples of using FM for high-precision real,
complex, and integer calculations.
The actual files shown on this page are in this archive that contains all the FM files from this
website: FM_files.zip
The individual file pointers here display as pdf files for browsing. The longer files are cut
off after 20 pages.
FM.f95
Subroutine library for multiple-precision operations. 79,878 lines of code
FMZM90.f95
Module for derived type interfaces. 49,277 lines of code
FMSAVE.f95
Module for FM internal global variables. 511 lines of code
TestFM.f95
Test program that checks a few operations for all of the FM routines. 54,740 lines of code
SampleFM.f95
Small sample program using FM. 939 lines of code
SampleFM.chk
Expected output file from SampleFM.f95. 160 lines
FM_User_Manual.txt
User's Guide for the package, along with a list of the files, some troubleshooting advice,
and an example set of compiler/linker commands for building the programs. 2,519 lines
All of these are technical papers explaining the algorithms used by the multiple-precision
package, except the last one.
"Using Multiple-Precision Arithmetic" gives some samples and discusses the package
from a user's point of view.
Efficient Multiple-Precision Evaluation of Elementary Functions
Mathematics of Computation 52 (1989) 131 -- 134
A Fortran Package For Floating-Point Multiple-Precision Arithmetic
Transactions on Mathematical Software 17 (1991) 273 -- 283
A Multiple-Precision Division Algorithm
Mathematics of Computation 66 (1996) 157 -- 163
Multiple Precision Complex Arithmetic and Functions
Transactions on Mathematical Software 24 (1998) 359 -- 367
Multiple-Precision Gamma Function and Related Functions
Transactions on Mathematical Software 27 (2001) 377 -- 387
Multiple-Precision Exponential Integral and Related Functions
Transactions on Mathematical Software 37 (2011) 1 -- 18
A Multiple-Precision Interval Arithmetic Package
http://dmsmith.lmu.build/FMinterval2014.pdf (2014) 1 -- 13
Multiple-Precision Evaluation of Bernoulli Numbers
http://dmsmith.lmu.build/BernoulliNumbers2024.pdf (2024) 1 -- 13
Using Multiple-Precision Arithmetic
Computing in Science and Engineering 5 (July, 2003) 88 -- 93
This page has the code for the thread-safe version of FM
along with two sample programs that use the package and a user's manual.
This page has the code for the FM rational arithmetic package,
along with several sample programs that use the package and a user's manual.
This page has the code for the FM interval arithmetic package,
along with several sample programs that use the package and a user's manual.
This page has three modules that allow programs to work with FM when they explicitly
declare some variables to be quadruple precision real or complex, double length integer,
or quadruple length integer.
There is a test program for each module, a sample program that uses the modules and a user's
manual for the modules.
This page has a table of domains for FM functions.
This page has a table of times for FM functions.
This page has some example programs solving problems in root-finding,
linear systems of equations,
least-squares fitting, integrals, differential equations, derivatives for real and complex
functions, etc.