HPL_pdlamch determines machine-specific arithmetic constants.


#include "hpl.h"

double HPL_pdlamch( MPI_Comm COMM, const HPL_T_MACH CMACH );


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).


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                     
           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.