Routine: PDLAMCH()  File: SRC\pdlamch.f

 
 
# lines: 82
  # code: 82
  # comment: 0
  # blank:0
# Variables:7
# Callers:50
# Callings:0
# Words:31
# Keywords:22
 

 

..
  Purpose
  =======
  PDLAMCH determines double precision machine parameters.
  Arguments
  =========
  ICTXT   (global input) INTEGER
          The BLACS context handle in which the computation takes
          place.
  CMACH   (global input) CHARACTER*1
          Specifies the value to be returned by PDLAMCH:
          = 'E' or 'e',   PDLAMCH := eps
          = 'S' or 's ,   PDLAMCH := sfmin
          = 'B' or 'b',   PDLAMCH := base
          = 'P' or 'p',   PDLAMCH := eps*base
          = 'N' or 'n',   PDLAMCH := t
          = 'R' or 'r',   PDLAMCH := rnd
          = 'M' or 'm',   PDLAMCH := emin
          = 'U' or 'u',   PDLAMCH := rmin
          = 'L' or 'l',   PDLAMCH := emax
          = 'O' or 'o',   PDLAMCH := rmax
          where
          eps   = relative machine precision
          sfmin = safe minimum, such that 1/sfmin does not overflow
          base  = base of the machine
          prec  = eps*base
          t     = number of (base) digits in the mantissa
          rnd   = 1.0 when rounding occurs in addition, 0.0 otherwise
          emin  = minimum exponent before (gradual) underflow
          rmin  = underflow threshold - base**(emin-1)
          emax  = largest exponent before overflow
          rmax  = overflow threshold  - (base**emax)*(1-eps)
  =====================================================================
     .. Local Scalars ..

 
Display dynamic version Find AutoScroll Reload FontSize: - + Hide Comments Hide Blanks Frame FullScreen MailPrint

 
01        DOUBLE PRECISION FUNCTION PDLAMCH( ICTXT , CMACH )
02  
03  *     -- ScaLAPACK auxiliary routine(version 1.7) --
04  *     University of Tennessee , Knoxville , Oak Ridge National Laboratory ,
05  *     and University of California , Berkeley.
06  *     May 1 , 1997
07  
08  *     .. Scalar Arguments ..
09        CHARACTER CMACH
10        INTEGER ICTXT
11        INTEGER IDUMM
12        DOUBLE PRECISION TEMP
13  *     ..
14  *     .. External Subroutines ..
15        EXTERNAL DGAMN2D , DGAMX2D
16  *     ..
17  *     .. External Functions ..
18        LOGICAL LSAME
19        DOUBLE PRECISION DLAMCH
20        EXTERNAL DLAMCH , LSAME
21  *     ..
22  *     .. Executable Statements ..
23  
24        TEMP = DLAMCH( CMACH )
25  
26        IF( LSAME( CMACH , 'E' ).OR.LSAME( CMACH , 'S' ).OR.
27       $LSAME( CMACH , 'M' ).OR.LSAME( CMACH , 'U' ) ) THEN
28        CALL DGAMX2D( ICTXT , 'All' , ' ' , 1 , 1 , TEMP , 1 , IDUMM ,
29       $IDUMM , - 1 , - 1 , IDUMM )
30        ELSE IF( LSAME( CMACH , 'L' ).OR.LSAME( CMACH , 'O' ) ) THEN
31            CALL DGAMN2D( ICTXT , 'All' , ' ' , 1 , 1 , TEMP , 1 , IDUMM ,
32       $    IDUMM , - 1 , - 1 , IDUMM )
33        END IF
34  
35        PDLAMCH = TEMP
36  
37  *     End of PDLAMCH
38  
39        END