SUBROUTINE DROTG(DA,DB,C,S) * .. Scalar Arguments .. DOUBLE PRECISION C,DA,DB,S * .. * * Purpose * ======= * * DROTG construct givens plane rotation. * * Further Details * =============== * * jack dongarra, linpack, 3/11/78. * * ===================================================================== * * .. Local Scalars .. DOUBLE PRECISION R,ROE,SCALE,Z * .. * .. Intrinsic Functions .. INTRINSIC DABS,DSIGN,DSQRT * .. 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 DB = Z RETURN END