version 1.4, 2010/08/07 13:22:10
|
version 1.11, 2014/01/27 09:28:14
|
Line 1
|
Line 1
|
|
*> \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 |
|
* |
|
* Authors: |
|
* ======== |
|
* |
|
*> \author Univ. of Tennessee |
|
*> \author Univ. of California Berkeley |
|
*> \author Univ. of Colorado Denver |
|
*> \author NAG Ltd. |
|
* |
|
*> \date November 2011 |
|
* |
|
*> \ingroup complex16_blas_level1 |
|
* |
|
* ===================================================================== |
SUBROUTINE ZROTG(CA,CB,C,S) |
SUBROUTINE ZROTG(CA,CB,C,S) |
|
* |
|
* -- Reference BLAS level1 routine (version 3.4.0) -- |
|
* -- Reference BLAS is a software package provided by Univ. of Tennessee, -- |
|
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
|
* November 2011 |
|
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
DOUBLE COMPLEX CA,CB,S |
COMPLEX*16 CA,CB,S |
DOUBLE PRECISION C |
DOUBLE PRECISION C |
* .. |
* .. |
* |
* |
* Purpose |
|
* ======= |
|
* |
|
* ZROTG determines a double complex Givens rotation. |
|
* |
|
* ===================================================================== |
* ===================================================================== |
* |
* |
* .. Local Scalars .. |
* .. Local Scalars .. |
DOUBLE COMPLEX ALPHA |
COMPLEX*16 ALPHA |
DOUBLE PRECISION NORM,SCALE |
DOUBLE PRECISION NORM,SCALE |
* .. |
* .. |
* .. Intrinsic Functions .. |
* .. Intrinsic Functions .. |
INTRINSIC CDABS,DCMPLX,DCONJG,DSQRT |
INTRINSIC CDABS,DCMPLX,DCONJG,DSQRT |
* .. |
* .. |
IF (CDABS(CA).NE.0.0d0) GO TO 10 |
IF (CDABS(CA).EQ.0.0d0) THEN |
C = 0.0d0 |
C = 0.0d0 |
S = (1.0d0,0.0d0) |
S = (1.0d0,0.0d0) |
CA = CB |
CA = CB |
GO TO 20 |
ELSE |
10 CONTINUE |
SCALE = CDABS(CA) + CDABS(CB) |
SCALE = CDABS(CA) + CDABS(CB) |
NORM = SCALE*DSQRT((CDABS(CA/DCMPLX(SCALE,0.0d0)))**2+ |
NORM = SCALE*DSQRT((CDABS(CA/DCMPLX(SCALE,0.0d0)))**2+ |
$ (CDABS(CB/DCMPLX(SCALE,0.0d0)))**2) |
+ (CDABS(CB/DCMPLX(SCALE,0.0d0)))**2) |
ALPHA = CA/CDABS(CA) |
ALPHA = CA/CDABS(CA) |
C = CDABS(CA)/NORM |
C = CDABS(CA)/NORM |
S = ALPHA*DCONJG(CB)/NORM |
S = ALPHA*DCONJG(CB)/NORM |
CA = ALPHA*NORM |
CA = ALPHA*NORM |
END IF |
20 CONTINUE |
|
RETURN |
RETURN |
END |
END |