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