version 1.5, 2010/08/13 21:03:40
|
version 1.9, 2012/08/22 09:36:40
|
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 |
|
* |
|
* Authors: |
|
* ======== |
|
* |
|
*> \author Univ. of Tennessee |
|
*> \author Univ. of California Berkeley |
|
*> \author Univ. of Colorado Denver |
|
*> \author NAG Ltd. |
|
* |
|
*> \date November 2011 |
|
* |
|
*> \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.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 |
* |
* |
* jack dongarra, linpack, 3/11/78. |
* .. Scalar Arguments .. |
|
DOUBLE PRECISION C,DA,DB,S |
|
* .. |
* |
* |
* ===================================================================== |
* ===================================================================== |
* |
* |
Line 24
|
Line 66
|
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 |