*> \brief \b SLAMCH
*
* =========== DOCUMENTATION ===========
*
* Online html documentation available at
*
http://www.netlib.org/lapack/explore-html/
*
* Definition:
* ===========
*
*
REAL FUNCTION SLAMCH( CMACH )
*
* .. Scalar Arguments ..
*
CHARACTER CMACH
* ..
*
*
*> \par Purpose:
* =============
*>
*> \verbatim
*>
*> SLAMCH determines single
precision machine parameters.
*> \endverbatim
*
* Arguments:
* ==========
*
*> \param[
in] CMACH
*> \verbatim
*> Specifies the value
to be returned by SLAMCH:
*> =
'E' or
'e', SLAMCH := eps
*> =
'S' or
's , SLAMCH := sfmin
*> =
'B' or
'b', SLAMCH := base
*> =
'P' or
'p', SLAMCH := eps*base
*> =
'N' or
'n', SLAMCH := t
*> =
'R' or
'r', SLAMCH := rnd
*> =
'M' or
'm', SLAMCH := emin
*> =
'U' or
'u', SLAMCH := rmin
*> =
'L' or
'l', SLAMCH := emax
*> =
'O' or
'o', SLAMCH := 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
*
* =====================================================================
REAL FUNCTION SLAMCH( 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 ..
REAL ONE, ZERO
PARAMETER ( ONE = 1.0E+0, ZERO = 0.0E+0 )
* ..
* .. Local Scalars ..
REAL RND, EPS, SFMIN, SMALL, RMACH
* ..
* ..
External Functions ..
LOGICAL LSAME
EXTERNAL LSAME
* ..
* ..
Intrinsic Functions ..
INTRINSIC DIGITS, EPSILON, HUGE, MAXEXPONENT,
$ MINEXPONENT, RADIX, TINY
* ..
* .. Executable Statements ..
*
*
* Assume rounding, not chopping. Always.
*
RND = ONE
*
IF( ONE.EQ.RND )
THEN
EPS = EPSILON(ZERO) * 0.5
ELSE
EPS = EPSILON(ZERO)
END IF
*
IF( LSAME( CMACH,
'E' ) )
THEN
RMACH = EPS
ELSE IF( LSAME( CMACH,
'S' ) )
THEN
SFMIN = 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 IF
RMACH = SFMIN
ELSE IF( LSAME( CMACH,
'B' ) )
THEN
RMACH = RADIX(ZERO)
ELSE IF( LSAME( CMACH,
'P' ) )
THEN
RMACH = EPS * RADIX(ZERO)
ELSE IF( LSAME( CMACH,
'N' ) )
THEN
RMACH = DIGITS(ZERO)
ELSE IF( LSAME( CMACH,
'R' ) )
THEN
RMACH = RND
ELSE IF( LSAME( CMACH,
'M' ) )
THEN
RMACH = MINEXPONENT(ZERO)
ELSE IF( LSAME( CMACH,
'U' ) )
THEN
RMACH = tiny(zero)
ELSE IF( LSAME( CMACH,
'L' ) )
THEN
RMACH = MAXEXPONENT(ZERO)
ELSE IF( LSAME( CMACH,
'O' ) )
THEN
RMACH = HUGE(ZERO)
ELSE
RMACH = ZERO
END IF
*
SLAMCH = RMACH
RETURN
*
*
End of SLAMCH
*
END
************************************************************************
*> \brief \b SLAMC3
*> \details
*> \b Purpose:
*> \verbatim
*> SLAMC3 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 Berk
eley, Univ. of Colorado Denver and NAG Ltd..
*> \date November 2011
*> \ingroup auxOTHERauxiliary
*>
*> \param[in] A
*> \verbatim
*> \endverbatim
*>
*> \param[in] B
*> \verbatim
*> The values A and B.
*> \endverbatim
*>
*
REAL FUNCTION SLAMC3( A, B )
*
* -- LAPACK auxiliary routine (version 3.4.0) --
* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
* November 2010
*
* .. Scalar Arguments ..
REAL A, B
* ..
* =====================================================================
*
* .. Executable Statements ..
*
SLAMC3 = A + B
*
RETURN
*
* End of SLAMC3
*
END
*
************************************************************************