AMACH

The function subprogram AMACH retrieves machine constants that define the computer’s single‑precision or double precision arithmetic. Such floating‑point numbers are represented in normalized N‑digit, base B form as

 

where σ is the sign, 0 < x1 < B, 0 xk < B, k = 2, , N and

 

Function Return Value

AMACH(1) = BEmin1, the smallest normalized positive number.

AMACH(2) = BEmax(1   BN), the largest number.

AMACH(3) = BN, the smallest relative spacing.

AMACH(4) = B1N, the largest relative spacing.

AMACH(5) = log10(B).

AMACH(6) = NaN (quiet not a number).

AMACH(7) = positive machine infinity.

AMACH(8) = negative machine infinity.

See Comment 1 for a description of the use of the generic version of this function.

See Comment 2 for a description of min, max, and N.

Required Arguments

I — Index of the desired constant. (Input)

FORTRAN 90 Interface

Generic: AMACH (I)

Specific: The specific interface names are S_AMACH and D_AMACH.

FORTRAN 77 Interface

Single: AMACH (I)

Double: The double precision name is DMACH.

Comments

1. If the generic version of this function is used, the immediate result must be stored in a variable before use in an expression. For example:

X = AMACH(I)
Y = SQRT(X)
must be used rather than

Y = SQRT(AMACH(I)).

If this is too much of a restriction on the programmer, then the specific name can be used without this restriction.

2. Note that for single precision B = IMACH(6), N = IMACH(7).
Emin = IMACH(8), and Emax = IMACH(9).
For double precision B = IMACH(6), N = IMACH(10).
Emin = IMACH(11), and Emax = IMACH(12).

3. The IEEE standard for binary arithmetic (see IEEE 1985) specifies quiet NaN (not a number) as the result of various invalid or ambiguous operations, such as 0/0. The intent is that AMACH(6) return a quiet NaN. On computers that do not support a quiet NaN, a special value near AMACH(2) is returned for AMACH(6). On computers that do not have a special representation for infinity, AMACH(7) returns the same value as AMACH(2).