convert linalg library from Fortran to C++
This commit is contained in:
102
lib/linalg/fortran/dlabad.f
Normal file
102
lib/linalg/fortran/dlabad.f
Normal file
@ -0,0 +1,102 @@
|
||||
*> \brief \b DLABAD
|
||||
*
|
||||
* =========== DOCUMENTATION ===========
|
||||
*
|
||||
* Online html documentation available at
|
||||
* http://www.netlib.org/lapack/explore-html/
|
||||
*
|
||||
*> \htmlonly
|
||||
*> Download DLABAD + dependencies
|
||||
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dlabad.f">
|
||||
*> [TGZ]</a>
|
||||
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dlabad.f">
|
||||
*> [ZIP]</a>
|
||||
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dlabad.f">
|
||||
*> [TXT]</a>
|
||||
*> \endhtmlonly
|
||||
*
|
||||
* Definition:
|
||||
* ===========
|
||||
*
|
||||
* SUBROUTINE DLABAD( SMALL, LARGE )
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
* DOUBLE PRECISION LARGE, SMALL
|
||||
* ..
|
||||
*
|
||||
*
|
||||
*> \par Purpose:
|
||||
* =============
|
||||
*>
|
||||
*> \verbatim
|
||||
*>
|
||||
*> DLABAD takes as input the values computed by DLAMCH for underflow and
|
||||
*> overflow, and returns the square root of each of these values if the
|
||||
*> log of LARGE is sufficiently large. This subroutine is intended to
|
||||
*> identify machines with a large exponent range, such as the Crays, and
|
||||
*> redefine the underflow and overflow limits to be the square roots of
|
||||
*> the values computed by DLAMCH. This subroutine is needed because
|
||||
*> DLAMCH does not compensate for poor arithmetic in the upper half of
|
||||
*> the exponent range, as is found on a Cray.
|
||||
*> \endverbatim
|
||||
*
|
||||
* Arguments:
|
||||
* ==========
|
||||
*
|
||||
*> \param[in,out] SMALL
|
||||
*> \verbatim
|
||||
*> SMALL is DOUBLE PRECISION
|
||||
*> On entry, the underflow threshold as computed by DLAMCH.
|
||||
*> On exit, if LOG10(LARGE) is sufficiently large, the square
|
||||
*> root of SMALL, otherwise unchanged.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in,out] LARGE
|
||||
*> \verbatim
|
||||
*> LARGE is DOUBLE PRECISION
|
||||
*> On entry, the overflow threshold as computed by DLAMCH.
|
||||
*> On exit, if LOG10(LARGE) is sufficiently large, the square
|
||||
*> root of LARGE, otherwise unchanged.
|
||||
*> \endverbatim
|
||||
*
|
||||
* Authors:
|
||||
* ========
|
||||
*
|
||||
*> \author Univ. of Tennessee
|
||||
*> \author Univ. of California Berkeley
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \ingroup OTHERauxiliary
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE DLABAD( SMALL, LARGE )
|
||||
*
|
||||
* -- LAPACK auxiliary routine --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
DOUBLE PRECISION LARGE, SMALL
|
||||
* ..
|
||||
*
|
||||
* =====================================================================
|
||||
*
|
||||
* .. Intrinsic Functions ..
|
||||
INTRINSIC LOG10, SQRT
|
||||
* ..
|
||||
* .. Executable Statements ..
|
||||
*
|
||||
* If it looks like we're on a Cray, take the square root of
|
||||
* SMALL and LARGE to avoid overflow and underflow problems.
|
||||
*
|
||||
IF( LOG10( LARGE ).GT.2000.D0 ) THEN
|
||||
SMALL = SQRT( SMALL )
|
||||
LARGE = SQRT( LARGE )
|
||||
END IF
|
||||
*
|
||||
RETURN
|
||||
*
|
||||
* End of DLABAD
|
||||
*
|
||||
END
|
||||
Reference in New Issue
Block a user