*> \brief \b ZROTG * * =========== DOCUMENTATION =========== * * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * * Definition: * =========== * * SUBROUTINE ZROTG(CA,CB,C,S) * * .. Scalar Arguments .. * COMPLEX*16 CA,CB,S * DOUBLE PRECISION C * .. * * *> \par Purpose: * ============= *> *> \verbatim *> *> ZROTG determines a double complex Givens rotation. *> \endverbatim * * Arguments: * ========== * *> \param[in,out] CA *> \verbatim *> CA is COMPLEX*16 *> \endverbatim *> *> \param[in] CB *> \verbatim *> CB is COMPLEX*16 *> \endverbatim *> *> \param[out] C *> \verbatim *> C is DOUBLE PRECISION *> \endverbatim *> *> \param[out] S *> \verbatim *> S is COMPLEX*16 *> \endverbatim * * Authors: * ======== * *> \author Univ. of Tennessee *> \author Univ. of California Berkeley *> \author Univ. of Colorado Denver *> \author NAG Ltd. * *> \ingroup complex16_blas_level1 * * ===================================================================== SUBROUTINE ZROTG(CA,CB,C,S) * * -- Reference BLAS level1 routine -- * -- Reference BLAS is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * * .. Scalar Arguments .. COMPLEX*16 CA,CB,S DOUBLE PRECISION C * .. * * ===================================================================== * * .. Local Scalars .. COMPLEX*16 ALPHA DOUBLE PRECISION NORM,SCALE * .. * .. Intrinsic Functions .. INTRINSIC CDABS,DCMPLX,DCONJG,DSQRT * .. IF (CDABS(CA).EQ.0.0d0) THEN C = 0.0d0 S = (1.0d0,0.0d0) CA = CB ELSE SCALE = CDABS(CA) + CDABS(CB) NORM = SCALE*DSQRT((CDABS(CA/DCMPLX(SCALE,0.0d0)))**2+ $ (CDABS(CB/DCMPLX(SCALE,0.0d0)))**2) ALPHA = CA/CDABS(CA) C = CDABS(CA)/NORM S = ALPHA*DCONJG(CB)/NORM CA = ALPHA*NORM END IF RETURN END