Rev 58549 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
*> \brief \b DLAMCH** =========== DOCUMENTATION ===========** Online html documentation available at* http://www.netlib.org/lapack/explore-html/** Definition:* ===========** DOUBLE PRECISION FUNCTION DLAMCH( CMACH )***> \par Purpose:* =============*>*> \verbatim*>*> DLAMCH determines double precision machine parameters.*> \endverbatim** Arguments:* ==========**> \param[in] CMACH*> \verbatim*> Specifies the value to be returned by DLAMCH:*> = 'E' or 'e', DLAMCH := eps*> = 'S' or 's , DLAMCH := sfmin*> = 'B' or 'b', DLAMCH := base*> = 'P' or 'p', DLAMCH := eps*base*> = 'N' or 'n', DLAMCH := t*> = 'R' or 'r', DLAMCH := rnd*> = 'M' or 'm', DLAMCH := emin*> = 'U' or 'u', DLAMCH := rmin*> = 'L' or 'l', DLAMCH := emax*> = 'O' or 'o', DLAMCH := rmax*> where*> eps = relative machine precision*> sfmin = safe minimum, such that 1/sfmin does not overflow*> base = base of the machine*> prec = eps*base*> t = number of (base) digits in the mantissa*> rnd = 1.0 when rounding occurs in addition, 0.0 otherwise*> emin = minimum exponent before (gradual) underflow*> rmin = underflow threshold - base**(emin-1)*> emax = largest exponent before overflow*> rmax = overflow threshold - (base**emax)*(1-eps)*> \endverbatim** Authors:* ========**> \author Univ. of Tennessee*> \author Univ. of California Berkeley*> \author Univ. of Colorado Denver*> \author NAG Ltd.**> \date November 2011**> \ingroup auxOTHERauxiliary** =====================================================================DOUBLE PRECISION FUNCTION DLAMCH( CMACH )** -- LAPACK auxiliary routine (version 3.4.0) --* -- LAPACK is a software package provided by Univ. of Tennessee, --* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--* November 2011** .. Scalar Arguments ..CHARACTER CMACH* ..** =====================================================================** .. Parameters ..DOUBLE PRECISION ONE, ZEROPARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 )* ..* .. Local Scalars ..DOUBLE PRECISION RND, EPS, SFMIN, SMALL, RMACH* ..* .. External Functions ..LOGICAL LSAMEEXTERNAL LSAME* ..* .. Intrinsic Functions ..INTRINSIC DIGITS, EPSILON, HUGE, MAXEXPONENT,$ MINEXPONENT, RADIX, TINY* ..* .. Executable Statements ..*** Assume rounding, not chopping. Always.*RND = ONE*IF( ONE.EQ.RND ) THENEPS = EPSILON(ZERO) * 0.5ELSEEPS = EPSILON(ZERO)END IF*IF( LSAME( CMACH, 'E' ) ) THENRMACH = EPSELSE IF( LSAME( CMACH, 'S' ) ) THENSFMIN = TINY(ZERO)SMALL = ONE / HUGE(ZERO)IF( SMALL.GE.SFMIN ) THEN** Use SMALL plus a bit, to avoid the possibility of rounding* causing overflow when computing 1/sfmin.*SFMIN = SMALL*( ONE+EPS )END IFRMACH = SFMINELSE IF( LSAME( CMACH, 'B' ) ) THENRMACH = RADIX(ZERO)ELSE IF( LSAME( CMACH, 'P' ) ) THENRMACH = EPS * RADIX(ZERO)ELSE IF( LSAME( CMACH, 'N' ) ) THENRMACH = DIGITS(ZERO)ELSE IF( LSAME( CMACH, 'R' ) ) THENRMACH = RNDELSE IF( LSAME( CMACH, 'M' ) ) THENRMACH = MINEXPONENT(ZERO)ELSE IF( LSAME( CMACH, 'U' ) ) THENRMACH = tiny(zero)ELSE IF( LSAME( CMACH, 'L' ) ) THENRMACH = MAXEXPONENT(ZERO)ELSE IF( LSAME( CMACH, 'O' ) ) THENRMACH = HUGE(ZERO)ELSERMACH = ZEROEND IF*DLAMCH = RMACHRETURN** End of DLAMCH*END*************************************************************************> \brief \b DLAMC3*> \details*> \b Purpose:*> \verbatim*> DLAMC3 is intended to force A and B to be stored prior to doing*> the addition of A and B , for use in situations where optimizers*> might hold one of these in a register.*> \endverbatim*> \author LAPACK is a software package provided by Univ. of Tennessee, Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..*> \date November 2011*> \ingroup auxOTHERauxiliary*>*> \param[in] A*> \verbatim*> A is a DOUBLE PRECISION*> \endverbatim*>*> \param[in] B*> \verbatim*> B is a DOUBLE PRECISION*> The values A and B.*> \endverbatim*>DOUBLE PRECISION FUNCTION DLAMC3( A, B )** -- LAPACK auxiliary routine (version 3.4.0) --* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..* November 2010** .. Scalar Arguments ..DOUBLE PRECISION A, B* ..* =====================================================================** .. Executable Statements ..*DLAMC3 = A + B*RETURN** End of DLAMC3*END*************************************************************************