# Name

HPL_pdlamch determines machine-specific arithmetic constants.

# Synopsis

`#include "hpl.h"`
`double` `HPL_pdlamch(` `MPI_Comm` `COMM`, `const HPL_T_MACH` `CMACH` `);`

# Description

HPL_pdlamch determines machine-specific arithmetic constants such as the relative machine precision (eps), the safe minimum(sfmin) such that 1/sfmin does not overflow, the base of the machine (base), the precision (prec), the number of (base) digits in the mantissa (t), whether rounding occurs in addition (rnd = 1.0 and 0.0 otherwise), the minimum exponent before (gradual) underflow (emin), the underflow threshold (rmin)- base**(emin-1), the largest exponent before overflow (emax), the overflow threshold (rmax) - (base**emax)*(1-eps).

# Arguments

    COMM    (global/local input)          MPI_Comm
            The MPI communicator identifying the process collection.

    CMACH   (global input)                const HPL_T_MACH
            Specifies the value to be returned by HPL_pdlamch
               = HPL_MACH_EPS,   HPL_pdlamch := eps (default)
               = HPL_MACH_SFMIN, HPL_pdlamch := sfmin
               = HPL_MACH_BASE,  HPL_pdlamch := base
               = HPL_MACH_PREC,  HPL_pdlamch := eps*base
               = HPL_MACH_MLEN,  HPL_pdlamch := t
               = HPL_MACH_RND,   HPL_pdlamch := rnd
               = HPL_MACH_EMIN,  HPL_pdlamch := emin
               = HPL_MACH_RMIN,  HPL_pdlamch := rmin
               = HPL_MACH_EMAX,  HPL_pdlamch := emax
               = HPL_MACH_RMAX,  HPL_pdlamch := rmax

            where

               eps   = relative machine precision,
               sfmin = safe minimum,
               base  = base of the machine,
               prec  = eps*base,
               t     = number of digits in the mantissa,
               rnd   = 1.0 if rounding occurs in addition,
               emin  = minimum exponent before underflow,
               rmin  = underflow threshold,
               emax  = largest exponent before overflow,
               rmax  = overflow threshold.