@@ -84,7 +84,7 @@ DOUBLE PRECISION FUNCTION DLAMCH( CMACH )
8484 PARAMETER ( ONE = 1.0D+0 , ZERO = 0.0D+0 )
8585* ..
8686* .. Local Scalars ..
87- DOUBLE PRECISION RND, EPS, SFMIN, SMALL, RMACH
87+ DOUBLE PRECISION RND, EPS, SFMIN, SMALL, HUGEVAL, RMACH
8888* ..
8989* .. External Functions ..
9090 LOGICAL LSAME
@@ -111,8 +111,9 @@ DOUBLE PRECISION FUNCTION DLAMCH( CMACH )
111111 RMACH = EPS
112112 ELSE IF ( LSAME( CMACH, ' S' ) ) THEN
113113 SFMIN = TINY (ZERO)
114- SMALL = ONE / HUGE (ZERO)
115- IF ( SMALL.GE. SFMIN ) THEN
114+ HUGEVAL = HUGE (ZERO)
115+ IF ( HUGEVAL* SFMIN.LE. ONE ) THEN
116+ SMALL = ONE / HUGEVAL
116117*
117118* Use SMALL plus a bit, to avoid the possibility of rounding
118119* causing overflow when computing 1/sfmin.
@@ -131,7 +132,7 @@ DOUBLE PRECISION FUNCTION DLAMCH( CMACH )
131132 ELSE IF ( LSAME( CMACH, ' M' ) ) THEN
132133 RMACH = MINEXPONENT (ZERO)
133134 ELSE IF ( LSAME( CMACH, ' U' ) ) THEN
134- RMACH = tiny (zero )
135+ RMACH = TINY (ZERO )
135136 ELSE IF ( LSAME( CMACH, ' L' ) ) THEN
136137 RMACH = MAXEXPONENT (ZERO)
137138 ELSE IF ( LSAME( CMACH, ' O' ) ) THEN
0 commit comments