Routine: PSLABAD()  File: SRC\pslabad.f

 
 
# lines: 75
  # code: 75
  # comment: 0
  # blank:0
# Variables:4
# Callers:5
# Callings:0
# Words:25
# Keywords:13
 

 

..
  Purpose
  =======
  PSLABAD takes as input the values computed by PSLAMCH for underflow
  and overflow, and returns the square root of each of these values if
  the log of LARGE is sufficiently large.  This subroutine is intended
  to identify machines with a large exponent range, such as the Crays,
  and redefine the underflow and overflow limits to be the square roots
  of the values computed by PSLAMCH.  This subroutine is needed because
  PSLAMCH does not compensate for poor arithmetic in the upper half of
  the exponent range, as is found on a Cray.
  In addition, this routine performs a global minimization and maximi-
  zation on these values, to support heterogeneous computing networks.
  Arguments
  =========
  ICTXT   (global input) INTEGER
          The BLACS context handle in which the computation takes
          place.
  SMALL   (local input/local output) REAL
          On entry, the underflow threshold as computed by PSLAMCH.
          On exit, if LOG10(LARGE) is sufficiently large, the square
          root of SMALL, otherwise unchanged.
  LARGE   (local input/local output) REAL
          On entry, the overflow threshold as computed by PSLAMCH.
          On exit, if LOG10(LARGE) is sufficiently large, the square
          root of LARGE, otherwise unchanged.
  =====================================================================
     .. Local Scalars ..

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

 
01        SUBROUTINE PSLABAD( ICTXT , SMALL , LARGE )
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        INTEGER ICTXT
10        REAL LARGE , SMALL
11        INTEGER IDUMM
12  *     ..
13  *     .. External Subroutines ..
14        EXTERNAL SGAMN2D , SGAMX2D
15  *     ..
16  *     .. Intrinsic Functions ..
17        INTRINSIC LOG10 , SQRT
18  *     ..
19  *     .. Executable Statements ..
20  
21  *     If it looks like we're on a Cray , take the square root of
22  *     SMALL and LARGE to avoid overflow and underflow problems.
23  
24        IF( LOG10( LARGE ).GT.2000. ) THEN
25            SMALL = SQRT( SMALL )
26            LARGE = SQRT( LARGE )
27        END IF
28  
29        CALL SGAMX2D( ICTXT , 'All' , ' ' , 1 , 1 , SMALL , 1 , IDUMM ,
30       $IDUMM , - 1 , - 1 , IDUMM )
31        CALL SGAMN2D( ICTXT , 'All' , ' ' , 1 , 1 , LARGE , 1 , IDUMM ,
32       $IDUMM , - 1 , - 1 , IDUMM )
33  
34        RETURN
35  
36  *     End of PSLABAD
37  
38        END