You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
192 lines
5.1 KiB
192 lines
5.1 KiB
*> \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 Berkeley, 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 |
|
* |
|
************************************************************************
|
|
|