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