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