Go to the documentation of this file.00001 SUBROUTINE DROTG(DA,DB,C,S)
00002
00003 DOUBLE PRECISION C,DA,DB,S
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 DOUBLE PRECISION R,ROE,SCALE,Z
00020
00021
00022 INTRINSIC DABS,DSIGN,DSQRT
00023
00024 ROE = DB
00025 IF (DABS(DA).GT.DABS(DB)) ROE = DA
00026 SCALE = DABS(DA) + DABS(DB)
00027 IF (SCALE.NE.0.0d0) GO TO 10
00028 C = 1.0d0
00029 S = 0.0d0
00030 R = 0.0d0
00031 Z = 0.0d0
00032 GO TO 20
00033 10 R = SCALE*DSQRT((DA/SCALE)**2+ (DB/SCALE)**2)
00034 R = DSIGN(1.0d0,ROE)*R
00035 C = DA/R
00036 S = DB/R
00037 Z = 1.0d0
00038 IF (DABS(DA).GT.DABS(DB)) Z = S
00039 IF (DABS(DB).GE.DABS(DA) .AND. C.NE.0.0d0) Z = 1.0d0/C
00040 20 DA = R
00041 DB = Z
00042 RETURN
00043 END