--- rpl/lapack/blas/drotg.f 2010/12/21 13:51:25 1.6 +++ rpl/lapack/blas/drotg.f 2011/07/22 07:38:01 1.7 @@ -24,20 +24,21 @@ ROE = DB IF (DABS(DA).GT.DABS(DB)) ROE = DA SCALE = DABS(DA) + DABS(DB) - IF (SCALE.NE.0.0d0) GO TO 10 - C = 1.0d0 - S = 0.0d0 - R = 0.0d0 - Z = 0.0d0 - GO TO 20 - 10 R = SCALE*DSQRT((DA/SCALE)**2+ (DB/SCALE)**2) - R = DSIGN(1.0d0,ROE)*R - C = DA/R - S = DB/R - Z = 1.0d0 - IF (DABS(DA).GT.DABS(DB)) Z = S - IF (DABS(DB).GE.DABS(DA) .AND. C.NE.0.0d0) Z = 1.0d0/C - 20 DA = R + IF (SCALE.EQ.0.0d0) THEN + C = 1.0d0 + S = 0.0d0 + R = 0.0d0 + Z = 0.0d0 + ELSE + R = SCALE*DSQRT((DA/SCALE)**2+ (DB/SCALE)**2) + R = DSIGN(1.0d0,ROE)*R + C = DA/R + S = DB/R + Z = 1.0d0 + IF (DABS(DA).GT.DABS(DB)) Z = S + IF (DABS(DB).GE.DABS(DA) .AND. C.NE.0.0d0) Z = 1.0d0/C + END IF + DA = R DB = Z RETURN END