github.com/gonum/lapack@v0.0.0-20181123203213-e4cdc5a0bff9/internal/testdata/netlib/dlabad.f (about) 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