SUBROUTINE CROTG(CA,CB,C,S)
* .. Scalar Arguments ..
COMPLEX CA,CB,S
REAL C
* ..
*
* Purpose
* =======
*
* CROTG determines a complex Givens rotation.
*
* .. Local Scalars ..
COMPLEX ALPHA
REAL NORM,SCALE
* ..
* .. Intrinsic Functions ..
INTRINSIC CABS,CONJG,SQRT
* ..
IF (CABS(CA).NE.0.) GO TO 10
C = 0.
S = (1.,0.)
CA = CB
GO TO 20
10 CONTINUE
SCALE = CABS(CA) + CABS(CB)
NORM = SCALE*SQRT((CABS(CA/SCALE))**2+ (CABS(CB/SCALE))**2)
ALPHA = CA/CABS(CA)
C = CABS(CA)/NORM
S = ALPHA*CONJG(CB)/NORM
CA = ALPHA*NORM
20 CONTINUE
RETURN
END