diff --git a/lapack-netlib/INSTALL/dlamch.f b/lapack-netlib/INSTALL/dlamch.f index 9073cd45ef..75a08d1407 100644 --- a/lapack-netlib/INSTALL/dlamch.f +++ b/lapack-netlib/INSTALL/dlamch.f @@ -84,7 +84,7 @@ DOUBLE PRECISION FUNCTION DLAMCH( CMACH ) PARAMETER ( ONE = 1.0D+0, ZERO = 0.0D+0 ) * .. * .. Local Scalars .. - DOUBLE PRECISION RND, EPS, SFMIN, SMALL, RMACH + DOUBLE PRECISION RND, EPS, SFMIN, SMALL, HUGEVAL, RMACH * .. * .. External Functions .. LOGICAL LSAME @@ -111,8 +111,9 @@ DOUBLE PRECISION FUNCTION DLAMCH( CMACH ) RMACH = EPS ELSE IF( LSAME( CMACH, 'S' ) ) THEN SFMIN = TINY(ZERO) - SMALL = ONE / HUGE(ZERO) - IF( SMALL.GE.SFMIN ) THEN + HUGEVAL = HUGE(ZERO) + IF( HUGEVAL*SFMIN.LE.ONE ) THEN + SMALL = ONE / HUGEVAL * * Use SMALL plus a bit, to avoid the possibility of rounding * causing overflow when computing 1/sfmin. @@ -131,7 +132,7 @@ DOUBLE PRECISION FUNCTION DLAMCH( CMACH ) ELSE IF( LSAME( CMACH, 'M' ) ) THEN RMACH = MINEXPONENT(ZERO) ELSE IF( LSAME( CMACH, 'U' ) ) THEN - RMACH = tiny(zero) + RMACH = TINY(ZERO) ELSE IF( LSAME( CMACH, 'L' ) ) THEN RMACH = MAXEXPONENT(ZERO) ELSE IF( LSAME( CMACH, 'O' ) ) THEN diff --git a/lapack-netlib/INSTALL/slamch.f b/lapack-netlib/INSTALL/slamch.f index 342f446ffa..d49fb1b32a 100644 --- a/lapack-netlib/INSTALL/slamch.f +++ b/lapack-netlib/INSTALL/slamch.f @@ -84,7 +84,7 @@ REAL FUNCTION SLAMCH( CMACH ) PARAMETER ( ONE = 1.0E+0, ZERO = 0.0E+0 ) * .. * .. Local Scalars .. - REAL RND, EPS, SFMIN, SMALL, RMACH + REAL RND, EPS, SFMIN, SMALL, HUGEVAL, RMACH * .. * .. External Functions .. LOGICAL LSAME @@ -111,8 +111,9 @@ REAL FUNCTION SLAMCH( CMACH ) RMACH = EPS ELSE IF( LSAME( CMACH, 'S' ) ) THEN SFMIN = TINY(ZERO) - SMALL = ONE / HUGE(ZERO) - IF( SMALL.GE.SFMIN ) THEN + HUGEVAL = HUGE(ZERO) + IF( HUGEVAL*SFMIN.LE.ONE ) THEN + SMALL = ONE / HUGEVAL * * Use SMALL plus a bit, to avoid the possibility of rounding * causing overflow when computing 1/sfmin. @@ -131,7 +132,7 @@ REAL FUNCTION SLAMCH( CMACH ) ELSE IF( LSAME( CMACH, 'M' ) ) THEN RMACH = MINEXPONENT(ZERO) ELSE IF( LSAME( CMACH, 'U' ) ) THEN - RMACH = tiny(zero) + RMACH = TINY(ZERO) ELSE IF( LSAME( CMACH, 'L' ) ) THEN RMACH = MAXEXPONENT(ZERO) ELSE IF( LSAME( CMACH, 'O' ) ) THEN