1*> \brief \b SLAMCH 2* 3* =========== DOCUMENTATION =========== 4* 5* Online html documentation available at 6* http://www.netlib.org/lapack/explore-html/ 7* 8* Definition: 9* =========== 10* 11* REAL FUNCTION SLAMCH( CMACH ) 12* 13* .. Scalar Arguments .. 14* CHARACTER CMACH 15* .. 16* 17* 18*> \par Purpose: 19* ============= 20*> 21*> \verbatim 22*> 23*> SLAMCH determines single precision machine parameters. 24*> \endverbatim 25* 26* Arguments: 27* ========== 28* 29*> \param[in] CMACH 30*> \verbatim 31*> Specifies the value to be returned by SLAMCH: 32*> = 'E' or 'e', SLAMCH := eps 33*> = 'S' or 's , SLAMCH := sfmin 34*> = 'B' or 'b', SLAMCH := base 35*> = 'P' or 'p', SLAMCH := eps*base 36*> = 'N' or 'n', SLAMCH := t 37*> = 'R' or 'r', SLAMCH := rnd 38*> = 'M' or 'm', SLAMCH := emin 39*> = 'U' or 'u', SLAMCH := rmin 40*> = 'L' or 'l', SLAMCH := emax 41*> = 'O' or 'o', SLAMCH := rmax 42*> where 43*> eps = relative machine precision 44*> sfmin = safe minimum, such that 1/sfmin does not overflow 45*> base = base of the machine 46*> prec = eps*base 47*> t = number of (base) digits in the mantissa 48*> rnd = 1.0 when rounding occurs in addition, 0.0 otherwise 49*> emin = minimum exponent before (gradual) underflow 50*> rmin = underflow threshold - base**(emin-1) 51*> emax = largest exponent before overflow 52*> rmax = overflow threshold - (base**emax)*(1-eps) 53*> \endverbatim 54* 55* Authors: 56* ======== 57* 58*> \author Univ. of Tennessee 59*> \author Univ. of California Berkeley 60*> \author Univ. of Colorado Denver 61*> \author NAG Ltd. 62* 63*> \date November 2011 64* 65*> \ingroup auxOTHERauxiliary 66* 67* ===================================================================== 68 REAL FUNCTION SLAMCH( CMACH ) 69* 70* -- LAPACK auxiliary routine (version 3.4.0) -- 71* -- LAPACK is a software package provided by Univ. of Tennessee, -- 72* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- 73* November 2011 74* 75* .. Scalar Arguments .. 76 CHARACTER CMACH 77* .. 78* 79* ===================================================================== 80* 81* .. Parameters .. 82 REAL ONE, ZERO 83 PARAMETER ( ONE = 1.0E+0, ZERO = 0.0E+0 ) 84* .. 85* .. Local Scalars .. 86 REAL RND, EPS, SFMIN, SMALL, RMACH 87* .. 88* .. External Functions .. 89 LOGICAL LSAME 90 EXTERNAL LSAME 91* .. 92* .. Intrinsic Functions .. 93 INTRINSIC DIGITS, EPSILON, HUGE, MAXEXPONENT, 94 $ MINEXPONENT, RADIX, TINY 95* .. 96* .. Executable Statements .. 97* 98* 99* Assume rounding, not chopping. Always. 100* 101 RND = ONE 102* 103 IF( ONE.EQ.RND ) THEN 104 EPS = EPSILON(ZERO) * 0.5 105 ELSE 106 EPS = EPSILON(ZERO) 107 END IF 108* 109 IF( LSAME( CMACH, 'E' ) ) THEN 110 RMACH = EPS 111 ELSE IF( LSAME( CMACH, 'S' ) ) THEN 112 SFMIN = TINY(ZERO) 113 SMALL = ONE / HUGE(ZERO) 114 IF( SMALL.GE.SFMIN ) THEN 115* 116* Use SMALL plus a bit, to avoid the possibility of rounding 117* causing overflow when computing 1/sfmin. 118* 119 SFMIN = SMALL*( ONE+EPS ) 120 END IF 121 RMACH = SFMIN 122 ELSE IF( LSAME( CMACH, 'B' ) ) THEN 123 RMACH = RADIX(ZERO) 124 ELSE IF( LSAME( CMACH, 'P' ) ) THEN 125 RMACH = EPS * RADIX(ZERO) 126 ELSE IF( LSAME( CMACH, 'N' ) ) THEN 127 RMACH = DIGITS(ZERO) 128 ELSE IF( LSAME( CMACH, 'R' ) ) THEN 129 RMACH = RND 130 ELSE IF( LSAME( CMACH, 'M' ) ) THEN 131 RMACH = MINEXPONENT(ZERO) 132 ELSE IF( LSAME( CMACH, 'U' ) ) THEN 133 RMACH = tiny(zero) 134 ELSE IF( LSAME( CMACH, 'L' ) ) THEN 135 RMACH = MAXEXPONENT(ZERO) 136 ELSE IF( LSAME( CMACH, 'O' ) ) THEN 137 RMACH = HUGE(ZERO) 138 ELSE 139 RMACH = ZERO 140 END IF 141* 142 SLAMCH = RMACH 143 RETURN 144* 145* End of SLAMCH 146* 147 END 148************************************************************************ 149*> \brief \b SLAMC3 150*> \details 151*> \b Purpose: 152*> \verbatim 153*> SLAMC3 is intended to force A and B to be stored prior to doing 154*> the addition of A and B , for use in situations where optimizers 155*> might hold one of these in a register. 156*> \endverbatim 157*> \author LAPACK is a software package provided by Univ. of Tennessee, Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd.. 158*> \date November 2011 159*> \ingroup auxOTHERauxiliary 160*> 161*> \param[in] A 162*> \verbatim 163*> \endverbatim 164*> 165*> \param[in] B 166*> \verbatim 167*> The values A and B. 168*> \endverbatim 169*> 170* 171 REAL FUNCTION SLAMC3( A, B ) 172* 173* -- LAPACK auxiliary routine (version 3.4.0) -- 174* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd.. 175* November 2010 176* 177* .. Scalar Arguments .. 178 REAL A, B 179* .. 180* ===================================================================== 181* 182* .. Executable Statements .. 183* 184 SLAMC3 = A + B 185* 186 RETURN 187* 188* End of SLAMC3 189* 190 END 191* 192************************************************************************ 193