2329
|
1 SUBROUTINE DLABAD( SMALL, LARGE ) |
|
2 * |
3333
|
3 * -- LAPACK auxiliary routine (version 3.0) -- |
2329
|
4 * Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd., |
|
5 * Courant Institute, Argonne National Lab, and Rice University |
|
6 * October 31, 1992 |
|
7 * |
|
8 * .. Scalar Arguments .. |
|
9 DOUBLE PRECISION LARGE, SMALL |
|
10 * .. |
|
11 * |
|
12 * Purpose |
|
13 * ======= |
|
14 * |
3333
|
15 * DLABAD takes as input the values computed by DLAMCH for underflow and |
2329
|
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 |