root / src / lapack / double / dlabad.f @ 10
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 |