01:       SUBROUTINE CROTG(CA,CB,C,S)
02: *     .. Scalar Arguments ..
03:       COMPLEX CA,CB,S
04:       REAL C
05: *     ..
06: *
07: *  Purpose
08: *  =======
09: *
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).NE.0.) GO TO 10
22:       C = 0.
23:       S = (1.,0.)
24:       CA = CB
25:       GO TO 20
26:    10 CONTINUE
27:       SCALE = CABS(CA) + CABS(CB)
28:       NORM = SCALE*SQRT((CABS(CA/SCALE))**2+ (CABS(CB/SCALE))**2)
29:       ALPHA = CA/CABS(CA)
30:       C = CABS(CA)/NORM
31:       S = ALPHA*CONJG(CB)/NORM
32:       CA = ALPHA*NORM
33:    20 CONTINUE
34:       RETURN
35:       END
36: