17faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \brief \b SLAMCH 27faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 37faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* =========== DOCUMENTATION =========== 47faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 57faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* Online html documentation available at 67faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* http://www.netlib.org/lapack/explore-html/ 77faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 87faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* Definition: 97faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* =========== 107faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 117faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* REAL FUNCTION SLAMCH( CMACH ) 127faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 137faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* .. Scalar Arguments .. 147faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* CHARACTER CMACH 157faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* .. 167faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 177faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 187faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \par Purpose: 197faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* ============= 207faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> 217faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \verbatim 227faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> 237faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> SLAMCH determines single precision machine parameters. 247faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \endverbatim 257faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 267faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* Arguments: 277faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* ========== 287faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 297faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \param[in] CMACH 307faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \verbatim 317faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> Specifies the value to be returned by SLAMCH: 327faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> = 'E' or 'e', SLAMCH := eps 337faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> = 'S' or 's , SLAMCH := sfmin 347faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> = 'B' or 'b', SLAMCH := base 357faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> = 'P' or 'p', SLAMCH := eps*base 367faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> = 'N' or 'n', SLAMCH := t 377faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> = 'R' or 'r', SLAMCH := rnd 387faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> = 'M' or 'm', SLAMCH := emin 397faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> = 'U' or 'u', SLAMCH := rmin 407faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> = 'L' or 'l', SLAMCH := emax 417faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> = 'O' or 'o', SLAMCH := rmax 427faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> where 437faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> eps = relative machine precision 447faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> sfmin = safe minimum, such that 1/sfmin does not overflow 457faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> base = base of the machine 467faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> prec = eps*base 477faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> t = number of (base) digits in the mantissa 487faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> rnd = 1.0 when rounding occurs in addition, 0.0 otherwise 497faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> emin = minimum exponent before (gradual) underflow 507faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> rmin = underflow threshold - base**(emin-1) 517faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> emax = largest exponent before overflow 527faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> rmax = overflow threshold - (base**emax)*(1-eps) 537faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \endverbatim 547faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 557faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* Authors: 567faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* ======== 577faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 587faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \author Univ. of Tennessee 597faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \author Univ. of California Berkeley 607faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \author Univ. of Colorado Denver 617faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \author NAG Ltd. 627faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 637faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \date November 2011 647faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 657faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \ingroup auxOTHERauxiliary 667faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 677faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* ===================================================================== 687faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez REAL FUNCTION SLAMCH( CMACH ) 697faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 707faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* -- LAPACK auxiliary routine (version 3.4.0) -- 717faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* -- LAPACK is a software package provided by Univ. of Tennessee, -- 727faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- 737faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* November 2011 747faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 757faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* .. Scalar Arguments .. 767faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez CHARACTER CMACH 777faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* .. 787faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 797faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* ===================================================================== 807faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 817faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* .. Parameters .. 827faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez REAL ONE, ZERO 837faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez PARAMETER ( ONE = 1.0E+0, ZERO = 0.0E+0 ) 847faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* .. 857faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* .. Local Scalars .. 867faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez REAL RND, EPS, SFMIN, SMALL, RMACH 877faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* .. 887faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* .. External Functions .. 897faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez LOGICAL LSAME 907faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez EXTERNAL LSAME 917faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* .. 927faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* .. Intrinsic Functions .. 937faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez INTRINSIC DIGITS, EPSILON, HUGE, MAXEXPONENT, 947faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez $ MINEXPONENT, RADIX, TINY 957faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* .. 967faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* .. Executable Statements .. 977faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 987faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 997faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* Assume rounding, not chopping. Always. 1007faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 1017faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez RND = ONE 1027faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 1037faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez IF( ONE.EQ.RND ) THEN 1047faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez EPS = EPSILON(ZERO) * 0.5 1057faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez ELSE 1067faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez EPS = EPSILON(ZERO) 1077faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez END IF 1087faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 1097faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez IF( LSAME( CMACH, 'E' ) ) THEN 1107faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez RMACH = EPS 1117faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez ELSE IF( LSAME( CMACH, 'S' ) ) THEN 1127faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez SFMIN = TINY(ZERO) 1137faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez SMALL = ONE / HUGE(ZERO) 1147faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez IF( SMALL.GE.SFMIN ) THEN 1157faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 1167faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* Use SMALL plus a bit, to avoid the possibility of rounding 1177faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* causing overflow when computing 1/sfmin. 1187faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 1197faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez SFMIN = SMALL*( ONE+EPS ) 1207faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez END IF 1217faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez RMACH = SFMIN 1227faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez ELSE IF( LSAME( CMACH, 'B' ) ) THEN 1237faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez RMACH = RADIX(ZERO) 1247faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez ELSE IF( LSAME( CMACH, 'P' ) ) THEN 1257faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez RMACH = EPS * RADIX(ZERO) 1267faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez ELSE IF( LSAME( CMACH, 'N' ) ) THEN 1277faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez RMACH = DIGITS(ZERO) 1287faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez ELSE IF( LSAME( CMACH, 'R' ) ) THEN 1297faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez RMACH = RND 1307faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez ELSE IF( LSAME( CMACH, 'M' ) ) THEN 1317faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez RMACH = MINEXPONENT(ZERO) 1327faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez ELSE IF( LSAME( CMACH, 'U' ) ) THEN 1337faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez RMACH = tiny(zero) 1347faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez ELSE IF( LSAME( CMACH, 'L' ) ) THEN 1357faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez RMACH = MAXEXPONENT(ZERO) 1367faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez ELSE IF( LSAME( CMACH, 'O' ) ) THEN 1377faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez RMACH = HUGE(ZERO) 1387faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez ELSE 1397faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez RMACH = ZERO 1407faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez END IF 1417faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 1427faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez SLAMCH = RMACH 1437faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez RETURN 1447faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 1457faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* End of SLAMCH 1467faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 1477faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez END 1487faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez************************************************************************ 1497faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \brief \b SLAMC3 1507faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \details 1517faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \b Purpose: 1527faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \verbatim 1537faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> SLAMC3 is intended to force A and B to be stored prior to doing 1547faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> the addition of A and B , for use in situations where optimizers 1557faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> might hold one of these in a register. 1567faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \endverbatim 1577faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \author LAPACK is a software package provided by Univ. of Tennessee, Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd.. 1587faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \date November 2011 1597faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \ingroup auxOTHERauxiliary 1607faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> 1617faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \param[in] A 1627faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \verbatim 1637faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \endverbatim 1647faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> 1657faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \param[in] B 1667faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \verbatim 1677faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> The values A and B. 1687faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> \endverbatim 1697faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez*> 1707faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 1717faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez REAL FUNCTION SLAMC3( A, B ) 1727faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 1737faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* -- LAPACK auxiliary routine (version 3.4.0) -- 1747faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd.. 1757faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* November 2010 1767faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 1777faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* .. Scalar Arguments .. 1787faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez REAL A, B 1797faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* .. 1807faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* ===================================================================== 1817faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 1827faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* .. Executable Statements .. 1837faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 1847faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez SLAMC3 = A + B 1857faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 1867faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez RETURN 1877faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 1887faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* End of SLAMC3 1897faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 1907faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez END 1917faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez* 1927faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez************************************************************************ 193