*> \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 GAL_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 ..
      CHARACTERCMACH
*     ..
*
*     .. Scalar Arguments ..
      DOUBLE PRECISION A,B
*     ..
*
* =====================================================================
*
*     .. Parameters ..
      DOUBLE PRECISION ONE,ZERO
      PARAMETER (ONE=1.0D+0,ZERO=0.0D+0)
*     ..
*     .. Local Scalars ..
      DOUBLE PRECISION RND,EPS,SFMIN,SMALL,RMACH
*     ..
*     .. External Functions ..
      LOGICAL GAL_LSAME
      EXTERNAL GAL_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(GAL_LSAME(CMACH,'E'))THEN
      RMACH=EPS
      ELSE IF(GAL_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(GAL_LSAME(CMACH,'B'))THEN
      RMACH=RADIX(ZERO)
      ELSE IF(GAL_LSAME(CMACH,'P'))THEN
      RMACH=EPS*RADIX(ZERO)
      ELSE IF(GAL_LSAME(CMACH,'N'))THEN
      RMACH=DIGITS(ZERO)
      ELSE IF(GAL_LSAME(CMACH,'R'))THEN
      RMACH=RND
      ELSE IF(GAL_LSAME(CMACH,'M'))THEN
      RMACH=MINEXPONENT(ZERO)
      ELSE IF(GAL_LSAME(CMACH,'U'))THEN
      RMACH=TINY(ZERO)
      ELSE IF(GAL_LSAME(CMACH,'L'))THEN
      RMACH=MAXEXPONENT(ZERO)
      ELSE IF(GAL_LSAME(CMACH,'O'))THEN
      RMACH=HUGE(ZERO)
      ELSE 
      RMACH=ZERO
      END IF
*
      GAL_DLAMCH=RMACH
      RETURN
*
*     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 GAL_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 ..
*
      GAL_DLAMC3=A+B
*
      RETURN
*
*     End of DLAMC3
*
      END 
*
************************************************************************
