1 SUBROUTINE CROTG(CA,CB,C,S)
2 * .. Scalar Arguments ..
3 COMPLEX CA,CB,S
4 REAL C
5 * ..
6 *
7 * Purpose
8 * =======
9 *
10 * CROTG determines a complex Givens rotation.
11 *
12 * =====================================================================
13 *
14 * .. Local Scalars ..
15 COMPLEX ALPHA
16 REAL NORM,SCALE
17 * ..
18 * .. Intrinsic Functions ..
19 INTRINSIC CABS,CONJG,SQRT
20 * ..
21 IF (CABS(CA).EQ.0.) THEN
22 C = 0.
23 S = (1.,0.)
24 CA = CB
25 ELSE
26 SCALE = CABS(CA) + CABS(CB)
27 NORM = SCALE*SQRT((CABS(CA/SCALE))**2+ (CABS(CB/SCALE))**2)
28 ALPHA = CA/CABS(CA)
29 C = CABS(CA)/NORM
30 S = ALPHA*CONJG(CB)/NORM
31 CA = ALPHA*NORM
32 END IF
33 RETURN
34 END
2 * .. Scalar Arguments ..
3 COMPLEX CA,CB,S
4 REAL C
5 * ..
6 *
7 * Purpose
8 * =======
9 *
10 * CROTG determines a complex Givens rotation.
11 *
12 * =====================================================================
13 *
14 * .. Local Scalars ..
15 COMPLEX ALPHA
16 REAL NORM,SCALE
17 * ..
18 * .. Intrinsic Functions ..
19 INTRINSIC CABS,CONJG,SQRT
20 * ..
21 IF (CABS(CA).EQ.0.) THEN
22 C = 0.
23 S = (1.,0.)
24 CA = CB
25 ELSE
26 SCALE = CABS(CA) + CABS(CB)
27 NORM = SCALE*SQRT((CABS(CA/SCALE))**2+ (CABS(CB/SCALE))**2)
28 ALPHA = CA/CABS(CA)
29 C = CABS(CA)/NORM
30 S = ALPHA*CONJG(CB)/NORM
31 CA = ALPHA*NORM
32 END IF
33 RETURN
34 END