1 SUBROUTINE DROTG(DA,DB,C,S)
2 * .. Scalar Arguments ..
3 DOUBLE PRECISION C,DA,DB,S
4 * ..
5 *
6 * Purpose
7 * =======
8 *
9 * DROTG construct givens plane rotation.
10 *
11 * Further Details
12 * ===============
13 *
14 * jack dongarra, linpack, 3/11/78.
15 *
16 * =====================================================================
17 *
18 * .. Local Scalars ..
19 DOUBLE PRECISION R,ROE,SCALE,Z
20 * ..
21 * .. Intrinsic Functions ..
22 INTRINSIC DABS,DSIGN,DSQRT
23 * ..
24 ROE = DB
25 IF (DABS(DA).GT.DABS(DB)) ROE = DA
26 SCALE = DABS(DA) + DABS(DB)
27 IF (SCALE.EQ.0.0d0) THEN
28 C = 1.0d0
29 S = 0.0d0
30 R = 0.0d0
31 Z = 0.0d0
32 ELSE
33 R = SCALE*DSQRT((DA/SCALE)**2+ (DB/SCALE)**2)
34 R = DSIGN(1.0d0,ROE)*R
35 C = DA/R
36 S = DB/R
37 Z = 1.0d0
38 IF (DABS(DA).GT.DABS(DB)) Z = S
39 IF (DABS(DB).GE.DABS(DA) .AND. C.NE.0.0d0) Z = 1.0d0/C
40 END IF
41 DA = R
42 DB = Z
43 RETURN
44 END
2 * .. Scalar Arguments ..
3 DOUBLE PRECISION C,DA,DB,S
4 * ..
5 *
6 * Purpose
7 * =======
8 *
9 * DROTG construct givens plane rotation.
10 *
11 * Further Details
12 * ===============
13 *
14 * jack dongarra, linpack, 3/11/78.
15 *
16 * =====================================================================
17 *
18 * .. Local Scalars ..
19 DOUBLE PRECISION R,ROE,SCALE,Z
20 * ..
21 * .. Intrinsic Functions ..
22 INTRINSIC DABS,DSIGN,DSQRT
23 * ..
24 ROE = DB
25 IF (DABS(DA).GT.DABS(DB)) ROE = DA
26 SCALE = DABS(DA) + DABS(DB)
27 IF (SCALE.EQ.0.0d0) THEN
28 C = 1.0d0
29 S = 0.0d0
30 R = 0.0d0
31 Z = 0.0d0
32 ELSE
33 R = SCALE*DSQRT((DA/SCALE)**2+ (DB/SCALE)**2)
34 R = DSIGN(1.0d0,ROE)*R
35 C = DA/R
36 S = DB/R
37 Z = 1.0d0
38 IF (DABS(DA).GT.DABS(DB)) Z = S
39 IF (DABS(DB).GE.DABS(DA) .AND. C.NE.0.0d0) Z = 1.0d0/C
40 END IF
41 DA = R
42 DB = Z
43 RETURN
44 END