diff options
Diffstat (limited to 'SRC/zlarfp.f')
-rw-r--r-- | SRC/zlarfp.f | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/SRC/zlarfp.f b/SRC/zlarfp.f index 73112236..ac4e9d41 100644 --- a/SRC/zlarfp.f +++ b/SRC/zlarfp.f @@ -63,7 +63,7 @@ * .. * .. Local Scalars .. INTEGER J, KNT - DOUBLE PRECISION ALPHI, ALPHR, BETA, RSAFMN, SAFMIN, XNORM + DOUBLE PRECISION ALPHI, ALPHR, BETA, BIGNUM, SMLNUM, XNORM * .. * .. External Functions .. DOUBLE PRECISION DLAMCH, DLAPY3, DLAPY2, DZNRM2 @@ -120,24 +120,24 @@ * general case * BETA = SIGN( DLAPY3( ALPHR, ALPHI, XNORM ), ALPHR ) - SAFMIN = DLAMCH( 'S' ) / DLAMCH( 'E' ) - RSAFMN = ONE / SAFMIN + SMLNUM = DLAMCH( 'S' ) / DLAMCH( 'E' ) + BIGNUM = ONE / SMLNUM * KNT = 0 - IF( ABS( BETA ).LT.SAFMIN ) THEN + IF( ABS( BETA ).LT.SMLNUM ) THEN * * XNORM, BETA may be inaccurate; scale X and recompute them * 10 CONTINUE KNT = KNT + 1 - CALL ZDSCAL( N-1, RSAFMN, X, INCX ) - BETA = BETA*RSAFMN - ALPHI = ALPHI*RSAFMN - ALPHR = ALPHR*RSAFMN - IF( ABS( BETA ).LT.SAFMIN ) + CALL ZDSCAL( N-1, BIGNUM, X, INCX ) + BETA = BETA*BIGNUM + ALPHI = ALPHI*BIGNUM + ALPHR = ALPHR*BIGNUM + IF( ABS( BETA ).LT.SMLNUM ) $ GO TO 10 * -* New BETA is at most 1, at least SAFMIN +* New BETA is at most 1, at least SMLNUM * XNORM = DZNRM2( N-1, X, INCX ) ALPHA = DCMPLX( ALPHR, ALPHI ) @@ -159,7 +159,7 @@ * If BETA is subnormal, it may lose relative accuracy * DO 20 J = 1, KNT - BETA = BETA*SAFMIN + BETA = BETA*SMLNUM 20 CONTINUE ALPHA = BETA END IF |