version 1.8, 2011/07/22 07:38:01
|
version 1.15, 2018/05/29 06:55:14
|
Line 1
|
Line 1
|
SUBROUTINE DROTMG(DD1,DD2,DX1,DY1,DPARAM) |
*> \brief \b DROTMG |
* .. Scalar Arguments .. |
|
DOUBLE PRECISION DD1,DD2,DX1,DY1 |
|
* .. |
|
* .. Array Arguments .. |
|
DOUBLE PRECISION DPARAM(5) |
|
* .. |
|
* |
* |
* Purpose |
* =========== DOCUMENTATION =========== |
* ======= |
|
* |
* |
* CONSTRUCT THE MODIFIED GIVENS TRANSFORMATION MATRIX H WHICH ZEROS |
* Online html documentation available at |
* THE SECOND COMPONENT OF THE 2-VECTOR (DSQRT(DD1)*DX1,DSQRT(DD2)* |
* http://www.netlib.org/lapack/explore-html/ |
* DY2)**T. |
|
* WITH DPARAM(1)=DFLAG, H HAS ONE OF THE FOLLOWING FORMS.. |
|
* |
* |
* DFLAG=-1.D0 DFLAG=0.D0 DFLAG=1.D0 DFLAG=-2.D0 |
* Definition: |
|
* =========== |
|
* |
|
* SUBROUTINE DROTMG(DD1,DD2,DX1,DY1,DPARAM) |
|
* |
|
* .. Scalar Arguments .. |
|
* DOUBLE PRECISION DD1,DD2,DX1,DY1 |
|
* .. |
|
* .. Array Arguments .. |
|
* DOUBLE PRECISION DPARAM(5) |
|
* .. |
|
* |
|
* |
|
*> \par Purpose: |
|
* ============= |
|
*> |
|
*> \verbatim |
|
*> |
|
*> CONSTRUCT THE MODIFIED GIVENS TRANSFORMATION MATRIX H WHICH ZEROS |
|
*> THE SECOND COMPONENT OF THE 2-VECTOR (DSQRT(DD1)*DX1,DSQRT(DD2)*> DY2)**T. |
|
*> WITH DPARAM(1)=DFLAG, H HAS ONE OF THE FOLLOWING FORMS.. |
|
*> |
|
*> DFLAG=-1.D0 DFLAG=0.D0 DFLAG=1.D0 DFLAG=-2.D0 |
|
*> |
|
*> (DH11 DH12) (1.D0 DH12) (DH11 1.D0) (1.D0 0.D0) |
|
*> H=( ) ( ) ( ) ( ) |
|
*> (DH21 DH22), (DH21 1.D0), (-1.D0 DH22), (0.D0 1.D0). |
|
*> LOCATIONS 2-4 OF DPARAM CONTAIN DH11, DH21, DH12, AND DH22 |
|
*> RESPECTIVELY. (VALUES OF 1.D0, -1.D0, OR 0.D0 IMPLIED BY THE |
|
*> VALUE OF DPARAM(1) ARE NOT STORED IN DPARAM.) |
|
*> |
|
*> THE VALUES OF GAMSQ AND RGAMSQ SET IN THE DATA STATEMENT MAY BE |
|
*> INEXACT. THIS IS OK AS THEY ARE ONLY USED FOR TESTING THE SIZE |
|
*> OF DD1 AND DD2. ALL ACTUAL SCALING OF DATA IS DONE USING GAM. |
|
*> |
|
*> \endverbatim |
|
* |
|
* Arguments: |
|
* ========== |
|
* |
|
*> \param[in,out] DD1 |
|
*> \verbatim |
|
*> DD1 is DOUBLE PRECISION |
|
*> \endverbatim |
|
*> |
|
*> \param[in,out] DD2 |
|
*> \verbatim |
|
*> DD2 is DOUBLE PRECISION |
|
*> \endverbatim |
|
*> |
|
*> \param[in,out] DX1 |
|
*> \verbatim |
|
*> DX1 is DOUBLE PRECISION |
|
*> \endverbatim |
|
*> |
|
*> \param[in] DY1 |
|
*> \verbatim |
|
*> DY1 is DOUBLE PRECISION |
|
*> \endverbatim |
|
*> |
|
*> \param[out] DPARAM |
|
*> \verbatim |
|
*> DPARAM is DOUBLE PRECISION array, dimension (5) |
|
*> DPARAM(1)=DFLAG |
|
*> DPARAM(2)=DH11 |
|
*> DPARAM(3)=DH21 |
|
*> DPARAM(4)=DH12 |
|
*> DPARAM(5)=DH22 |
|
*> \endverbatim |
|
* |
|
* Authors: |
|
* ======== |
|
* |
|
*> \author Univ. of Tennessee |
|
*> \author Univ. of California Berkeley |
|
*> \author Univ. of Colorado Denver |
|
*> \author NAG Ltd. |
* |
* |
* (DH11 DH12) (1.D0 DH12) (DH11 1.D0) (1.D0 0.D0) |
*> \date November 2017 |
* H=( ) ( ) ( ) ( ) |
|
* (DH21 DH22), (DH21 1.D0), (-1.D0 DH22), (0.D0 1.D0). |
|
* LOCATIONS 2-4 OF DPARAM CONTAIN DH11, DH21, DH12, AND DH22 |
|
* RESPECTIVELY. (VALUES OF 1.D0, -1.D0, OR 0.D0 IMPLIED BY THE |
|
* VALUE OF DPARAM(1) ARE NOT STORED IN DPARAM.) |
|
* |
* |
* THE VALUES OF GAMSQ AND RGAMSQ SET IN THE DATA STATEMENT MAY BE |
*> \ingroup double_blas_level1 |
* INEXACT. THIS IS OK AS THEY ARE ONLY USED FOR TESTING THE SIZE |
|
* OF DD1 AND DD2. ALL ACTUAL SCALING OF DATA IS DONE USING GAM. |
|
* |
* |
|
* ===================================================================== |
|
SUBROUTINE DROTMG(DD1,DD2,DX1,DY1,DPARAM) |
* |
* |
* Arguments |
* -- 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..-- |
* DD1 (input/output) DOUBLE PRECISION |
* November 2017 |
* |
|
* DD2 (input/output) DOUBLE PRECISION |
|
* |
|
* DX1 (input/output) DOUBLE PRECISION |
|
* |
|
* DY1 (input) DOUBLE PRECISION |
|
* |
* |
* DPARAM (input/output) DOUBLE PRECISION array, dimension 5 |
* .. Scalar Arguments .. |
* DPARAM(1)=DFLAG |
DOUBLE PRECISION DD1,DD2,DX1,DY1 |
* DPARAM(2)=DH11 |
* .. |
* DPARAM(3)=DH21 |
* .. Array Arguments .. |
* DPARAM(4)=DH12 |
DOUBLE PRECISION DPARAM(5) |
* DPARAM(5)=DH22 |
* .. |
* |
* |
* ===================================================================== |
* ===================================================================== |
* |
* |
Line 79
|
Line 135
|
DFLAG = -TWO |
DFLAG = -TWO |
DPARAM(1) = DFLAG |
DPARAM(1) = DFLAG |
RETURN |
RETURN |
END IF |
END IF |
* REGULAR-CASE.. |
* REGULAR-CASE.. |
DP1 = DD1*DX1 |
DP1 = DD1*DX1 |
DQ2 = DP2*DY1 |
DQ2 = DP2*DY1 |
Line 147
|
Line 203
|
END IF |
END IF |
ENDDO |
ENDDO |
END IF |
END IF |
|
|
IF (DD2.NE.ZERO) THEN |
IF (DD2.NE.ZERO) THEN |
DO WHILE ( (DABS(DD2).LE.RGAMSQ) .OR. (DABS(DD2).GE.GAMSQ) ) |
DO WHILE ( (DABS(DD2).LE.RGAMSQ) .OR. (DABS(DD2).GE.GAMSQ) ) |
IF (DFLAG.EQ.ZERO) THEN |
IF (DFLAG.EQ.ZERO) THEN |
Line 167
|
Line 223
|
DD2 = DD2/GAM**2 |
DD2 = DD2/GAM**2 |
DH21 = DH21*GAM |
DH21 = DH21*GAM |
DH22 = DH22*GAM |
DH22 = DH22*GAM |
END IF |
END IF |
END DO |
END DO |
END IF |
END IF |
|
|
END IF |
END IF |
|
|
IF (DFLAG.LT.ZERO) THEN |
IF (DFLAG.LT.ZERO) THEN |
Line 180
|
Line 236
|
DPARAM(5) = DH22 |
DPARAM(5) = DH22 |
ELSE IF (DFLAG.EQ.ZERO) THEN |
ELSE IF (DFLAG.EQ.ZERO) THEN |
DPARAM(3) = DH21 |
DPARAM(3) = DH21 |
DPARAM(4) = DH12 |
DPARAM(4) = DH12 |
ELSE |
ELSE |
DPARAM(2) = DH11 |
DPARAM(2) = DH11 |
DPARAM(5) = DH22 |
DPARAM(5) = DH22 |
END IF |
END IF |
|
|
260 CONTINUE |
|
DPARAM(1) = DFLAG |
DPARAM(1) = DFLAG |
RETURN |
RETURN |
END |
END |
|
|
|
|
|
|
|
|