Dynamic Computation of Machine Constants

MACHAR is a MATLAB library which dynamically computes constants that characterize the floating point arithmetic system on a computer, by William Cody.

The constants include the value of the "machine epsilon", the smallest number that can be added to 1 and make a difference. However, it includes many other quantities of interest, including the arithmetic base, the largest and smallest magnitudes, and so on.

The default variable type in MATLAB is similar to a double precision complex variable. When doing real arithmetic, this means that calculations are done in double precision. MATLAB also offers a function called single that can be used to convert a value to a single precision real value. When used to initialize a variable, single effectively "declares" that variable to be a single precision real variable.

The FORTRAN77 version of these routines was supplied as part of ACM TOMS algorithm 665.

A C version of these routines was supplied as part of ACM TOMS algorithm 722.

Note that "Numerical Recipes" includes a listing and discussion of MACHAR.


The computer code and data files described and made available on this web page are distributed under the GNU LGPL license.


MACHAR is available in a C version and a C++ version and a FORTRAN77 version and a FORTRAN90 version and a MATLAB version and a Python version.

Related Data and Programs:

MACHINE, a Python library which stores the appropriate values of machine constants for a given machine.


Original FORTRAN77 version by William Cody. Python version by John Burkardt.


  1. William Cody,
    Algorithm 665: MACHAR, a subroutine to dynamically determine machine parameters,
    ACM Transactions on Mathematical Software,
    Volume 14, Number 4, December 1988, pages 303-311.
  2. William Cody, William Waite,
    Software Manual for the Elementary Functions,
    Prentice Hall, 1980,
    ISBN: 0138220646,
    LC: QA331.C635.
  3. Morven Gentleman, Scott Marovich,
    More on Algorithms that Reveal Properties of Floating Point Arithmetic Units,
    Communications of the ACM,
    Volume 17, Number 5, May 1974, pages 276-277.
  4. Michael Malcolm,
    Algorithms to Reveal Properties of Floating Point Arithmetic,
    Communications of the ACM,
    Volume 15, Number 11, November 1972, pages 949-951.

Source Code:

You can go up one level to the Python source codes.

Last revised on 10 December 2016.