LAPACK  3.5.0
LAPACK: Linear Algebra PACKage
 All Classes Files Functions Variables Typedefs Macros
dlabad.f
Go to the documentation of this file.
1 *> \brief \b DLABAD
2 *
3 * =========== DOCUMENTATION ===========
4 *
5 * Online html documentation available at
6 * http://www.netlib.org/lapack/explore-html/
7 *
8 *> \htmlonly
9 *> Download DLABAD + dependencies
10 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dlabad.f">
11 *> [TGZ]</a>
12 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dlabad.f">
13 *> [ZIP]</a>
14 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dlabad.f">
15 *> [TXT]</a>
16 *> \endhtmlonly
17 *
18 * Definition:
19 * ===========
20 *
21 * SUBROUTINE DLABAD( SMALL, LARGE )
22 *
23 * .. Scalar Arguments ..
24 * DOUBLE PRECISION LARGE, SMALL
25 * ..
26 *
27 *
28 *> \par Purpose:
29 * =============
30 *>
31 *> \verbatim
32 *>
33 *> DLABAD takes as input the values computed by DLAMCH for underflow and
34 *> overflow, and returns the square root of each of these values if the
35 *> log of LARGE is sufficiently large. This subroutine is intended to
36 *> identify machines with a large exponent range, such as the Crays, and
37 *> redefine the underflow and overflow limits to be the square roots of
38 *> the values computed by DLAMCH. This subroutine is needed because
39 *> DLAMCH does not compensate for poor arithmetic in the upper half of
40 *> the exponent range, as is found on a Cray.
41 *> \endverbatim
42 *
43 * Arguments:
44 * ==========
45 *
46 *> \param[in,out] SMALL
47 *> \verbatim
48 *> SMALL is DOUBLE PRECISION
49 *> On entry, the underflow threshold as computed by DLAMCH.
50 *> On exit, if LOG10(LARGE) is sufficiently large, the square
51 *> root of SMALL, otherwise unchanged.
52 *> \endverbatim
53 *>
54 *> \param[in,out] LARGE
55 *> \verbatim
56 *> LARGE is DOUBLE PRECISION
57 *> On entry, the overflow threshold as computed by DLAMCH.
58 *> On exit, if LOG10(LARGE) is sufficiently large, the square
59 *> root of LARGE, otherwise unchanged.
60 *> \endverbatim
61 *
62 * Authors:
63 * ========
64 *
65 *> \author Univ. of Tennessee
66 *> \author Univ. of California Berkeley
67 *> \author Univ. of Colorado Denver
68 *> \author NAG Ltd.
69 *
70 *> \date November 2011
71 *
72 *> \ingroup auxOTHERauxiliary
73 *
74 * =====================================================================
75  SUBROUTINE dlabad( SMALL, LARGE )
76 *
77 * -- LAPACK auxiliary routine (version 3.4.0) --
78 * -- LAPACK is a software package provided by Univ. of Tennessee, --
79 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
80 * November 2011
81 *
82 * .. Scalar Arguments ..
83  DOUBLE PRECISION large, small
84 * ..
85 *
86 * =====================================================================
87 *
88 * .. Intrinsic Functions ..
89  INTRINSIC log10, sqrt
90 * ..
91 * .. Executable Statements ..
92 *
93 * If it looks like we're on a Cray, take the square root of
94 * SMALL and LARGE to avoid overflow and underflow problems.
95 *
96  IF( log10( large ).GT.2000.d0 ) THEN
97  small = sqrt( small )
98  large = sqrt( large )
99  END IF
100 *
101  RETURN
102 *
103 * End of DLABAD
104 *
105  END