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