Statistiques
| Révision :

root / src / lapack / double / dlabad.f @ 2

Historique | Voir | Annoter | Télécharger (1,84 ko)

1
      SUBROUTINE DLABAD( SMALL, LARGE )
2
*
3
*  -- LAPACK auxiliary routine (version 3.2) --
4
*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
5
*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
6
*     November 2006
7
*
8
*     .. Scalar Arguments ..
9
      DOUBLE PRECISION   LARGE, SMALL
10
*     ..
11
*
12
*  Purpose
13
*  =======
14
*
15
*  DLABAD takes as input the values computed by DLAMCH for underflow and
16
*  overflow, and returns the square root of each of these values if the
17
*  log of LARGE is sufficiently large.  This subroutine is intended to
18
*  identify machines with a large exponent range, such as the Crays, and
19
*  redefine the underflow and overflow limits to be the square roots of
20
*  the values computed by DLAMCH.  This subroutine is needed because
21
*  DLAMCH does not compensate for poor arithmetic in the upper half of
22
*  the exponent range, as is found on a Cray.
23
*
24
*  Arguments
25
*  =========
26
*
27
*  SMALL   (input/output) DOUBLE PRECISION
28
*          On entry, the underflow threshold as computed by DLAMCH.
29
*          On exit, if LOG10(LARGE) is sufficiently large, the square
30
*          root of SMALL, otherwise unchanged.
31
*
32
*  LARGE   (input/output) DOUBLE PRECISION
33
*          On entry, the overflow threshold as computed by DLAMCH.
34
*          On exit, if LOG10(LARGE) is sufficiently large, the square
35
*          root of LARGE, otherwise unchanged.
36
*
37
*  =====================================================================
38
*
39
*     .. Intrinsic Functions ..
40
      INTRINSIC          LOG10, SQRT
41
*     ..
42
*     .. Executable Statements ..
43
*
44
*     If it looks like we're on a Cray, take the square root of
45
*     SMALL and LARGE to avoid overflow and underflow problems.
46
*
47
      IF( LOG10( LARGE ).GT.2000.D0 ) THEN
48
         SMALL = SQRT( SMALL )
49
         LARGE = SQRT( LARGE )
50
      END IF
51
*
52
      RETURN
53
*
54
*     End of DLABAD
55
*
56
      END