version 1.6, 2010/12/21 13:51:25
|
version 1.14, 2018/05/29 06:55:13
|
Line 1
|
Line 1
|
SUBROUTINE DROTG(DA,DB,C,S) |
*> \brief \b DROTG |
* .. Scalar Arguments .. |
* |
DOUBLE PRECISION C,DA,DB,S |
* =========== DOCUMENTATION =========== |
* .. |
|
* |
* |
* Purpose |
* Online html documentation available at |
* ======= |
* http://www.netlib.org/lapack/explore-html/ |
* |
* |
* DROTG construct givens plane rotation. |
* Definition: |
|
* =========== |
|
* |
|
* SUBROUTINE DROTG(DA,DB,C,S) |
|
* |
|
* .. Scalar Arguments .. |
|
* DOUBLE PRECISION C,DA,DB,S |
|
* .. |
|
* |
|
* |
|
*> \par Purpose: |
|
* ============= |
|
*> |
|
*> \verbatim |
|
*> |
|
*> DROTG construct givens plane rotation. |
|
*> \endverbatim |
|
* |
|
* Arguments: |
|
* ========== |
|
* |
|
*> \param[in] DA |
|
*> \verbatim |
|
*> DA is DOUBLE PRECISION |
|
*> \endverbatim |
|
*> |
|
*> \param[in] DB |
|
*> \verbatim |
|
*> DB is DOUBLE PRECISION |
|
*> \endverbatim |
|
*> |
|
*> \param[out] C |
|
*> \verbatim |
|
*> C is DOUBLE PRECISION |
|
*> \endverbatim |
|
*> |
|
*> \param[out] S |
|
*> \verbatim |
|
*> S is DOUBLE PRECISION |
|
*> \endverbatim |
|
* |
|
* Authors: |
|
* ======== |
|
* |
|
*> \author Univ. of Tennessee |
|
*> \author Univ. of California Berkeley |
|
*> \author Univ. of Colorado Denver |
|
*> \author NAG Ltd. |
|
* |
|
*> \date November 2017 |
|
* |
|
*> \ingroup double_blas_level1 |
|
* |
|
*> \par Further Details: |
|
* ===================== |
|
*> |
|
*> \verbatim |
|
*> |
|
*> jack dongarra, linpack, 3/11/78. |
|
*> \endverbatim |
|
*> |
|
* ===================================================================== |
|
SUBROUTINE DROTG(DA,DB,C,S) |
* |
* |
* Further Details |
* -- Reference BLAS level1 routine (version 3.8.0) -- |
* =============== |
* -- Reference BLAS is a software package provided by Univ. of Tennessee, -- |
|
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
|
* November 2017 |
* |
* |
* jack dongarra, linpack, 3/11/78. |
* .. Scalar Arguments .. |
|
DOUBLE PRECISION C,DA,DB,S |
|
* .. |
* |
* |
* ===================================================================== |
* ===================================================================== |
* |
* |
Line 24
|
Line 89
|
ROE = DB |
ROE = DB |
IF (DABS(DA).GT.DABS(DB)) ROE = DA |
IF (DABS(DA).GT.DABS(DB)) ROE = DA |
SCALE = DABS(DA) + DABS(DB) |
SCALE = DABS(DA) + DABS(DB) |
IF (SCALE.NE.0.0d0) GO TO 10 |
IF (SCALE.EQ.0.0d0) THEN |
C = 1.0d0 |
C = 1.0d0 |
S = 0.0d0 |
S = 0.0d0 |
R = 0.0d0 |
R = 0.0d0 |
Z = 0.0d0 |
Z = 0.0d0 |
GO TO 20 |
ELSE |
10 R = SCALE*DSQRT((DA/SCALE)**2+ (DB/SCALE)**2) |
R = SCALE*DSQRT((DA/SCALE)**2+ (DB/SCALE)**2) |
R = DSIGN(1.0d0,ROE)*R |
R = DSIGN(1.0d0,ROE)*R |
C = DA/R |
C = DA/R |
S = DB/R |
S = DB/R |
Z = 1.0d0 |
Z = 1.0d0 |
IF (DABS(DA).GT.DABS(DB)) Z = S |
IF (DABS(DA).GT.DABS(DB)) Z = S |
IF (DABS(DB).GE.DABS(DA) .AND. C.NE.0.0d0) Z = 1.0d0/C |
IF (DABS(DB).GE.DABS(DA) .AND. C.NE.0.0d0) Z = 1.0d0/C |
20 DA = R |
END IF |
|
DA = R |
DB = Z |
DB = Z |
RETURN |
RETURN |
END |
END |