version 1.1, 2014/01/27 09:24:37
|
version 1.8, 2018/05/29 07:18:41
|
Line 2
|
Line 2
|
* |
* |
* =========== DOCUMENTATION =========== |
* =========== DOCUMENTATION =========== |
* |
* |
* Online html documentation available at |
* Online html documentation available at |
* http://www.netlib.org/lapack/explore-html/ |
* http://www.netlib.org/lapack/explore-html/ |
* |
* |
*> \htmlonly |
*> \htmlonly |
*> Download ZUNBDB2 + dependencies |
*> Download ZUNBDB2 + dependencies |
Line 20
|
Line 20
|
* |
* |
* SUBROUTINE ZUNBDB2( M, P, Q, X11, LDX11, X21, LDX21, THETA, PHI, |
* SUBROUTINE ZUNBDB2( M, P, Q, X11, LDX11, X21, LDX21, THETA, PHI, |
* TAUP1, TAUP2, TAUQ1, WORK, LWORK, INFO ) |
* TAUP1, TAUP2, TAUQ1, WORK, LWORK, INFO ) |
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
* INTEGER INFO, LWORK, M, P, Q, LDX11, LDX21 |
* INTEGER INFO, LWORK, M, P, Q, LDX11, LDX21 |
* .. |
* .. |
Line 29
|
Line 29
|
* COMPLEX*16 TAUP1(*), TAUP2(*), TAUQ1(*), WORK(*), |
* COMPLEX*16 TAUP1(*), TAUP2(*), TAUQ1(*), WORK(*), |
* $ X11(LDX11,*), X21(LDX21,*) |
* $ X11(LDX11,*), X21(LDX21,*) |
* .. |
* .. |
* |
* |
* |
* |
*> \par Purpose: |
*> \par Purpose: |
*> ============= |
* ============= |
*> |
*> |
*>\verbatim |
*>\verbatim |
*> |
*> |
Line 150
|
Line 150
|
*> \verbatim |
*> \verbatim |
*> LWORK is INTEGER |
*> LWORK is INTEGER |
*> The dimension of the array WORK. LWORK >= M-Q. |
*> The dimension of the array WORK. LWORK >= M-Q. |
*> |
*> |
*> If LWORK = -1, then a workspace query is assumed; the routine |
*> If LWORK = -1, then a workspace query is assumed; the routine |
*> only calculates the optimal size of the WORK array, returns |
*> only calculates the optimal size of the WORK array, returns |
*> this value as the first entry of the WORK array, and no error |
*> this value as the first entry of the WORK array, and no error |
Line 167
|
Line 167
|
* Authors: |
* Authors: |
* ======== |
* ======== |
* |
* |
*> \author Univ. of Tennessee |
*> \author Univ. of Tennessee |
*> \author Univ. of California Berkeley |
*> \author Univ. of California Berkeley |
*> \author Univ. of Colorado Denver |
*> \author Univ. of Colorado Denver |
*> \author NAG Ltd. |
*> \author NAG Ltd. |
* |
* |
*> \date July 2012 |
*> \date July 2012 |
* |
* |
Line 201
|
Line 201
|
SUBROUTINE ZUNBDB2( M, P, Q, X11, LDX11, X21, LDX21, THETA, PHI, |
SUBROUTINE ZUNBDB2( M, P, Q, X11, LDX11, X21, LDX21, THETA, PHI, |
$ TAUP1, TAUP2, TAUQ1, WORK, LWORK, INFO ) |
$ TAUP1, TAUP2, TAUQ1, WORK, LWORK, INFO ) |
* |
* |
* -- LAPACK computational routine (version 3.5.0) -- |
* -- LAPACK computational routine (version 3.8.0) -- |
* -- LAPACK is a software package provided by Univ. of Tennessee, -- |
* -- LAPACK is a software package provided by Univ. of Tennessee, -- |
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
* July 2012 |
* July 2012 |
Line 229
|
Line 229
|
LOGICAL LQUERY |
LOGICAL LQUERY |
* .. |
* .. |
* .. External Subroutines .. |
* .. External Subroutines .. |
EXTERNAL ZLARF, ZLARFGP, ZUNBDB5, ZDROT, ZSCAL, XERBLA |
EXTERNAL ZLARF, ZLARFGP, ZUNBDB5, ZDROT, ZSCAL, ZLACGV, |
|
$ XERBLA |
* .. |
* .. |
* .. External Functions .. |
* .. External Functions .. |
DOUBLE PRECISION DZNRM2 |
DOUBLE PRECISION DZNRM2 |
Line 281
|
Line 282
|
* Reduce rows 1, ..., P of X11 and X21 |
* Reduce rows 1, ..., P of X11 and X21 |
* |
* |
DO I = 1, P |
DO I = 1, P |
* |
* |
IF( I .GT. 1 ) THEN |
IF( I .GT. 1 ) THEN |
CALL ZDROT( Q-I+1, X11(I,I), LDX11, X21(I-1,I), LDX21, C, |
CALL ZDROT( Q-I+1, X11(I,I), LDX11, X21(I-1,I), LDX21, C, |
$ S ) |
$ S ) |
Line 295
|
Line 296
|
CALL ZLARF( 'R', M-P-I+1, Q-I+1, X11(I,I), LDX11, TAUQ1(I), |
CALL ZLARF( 'R', M-P-I+1, Q-I+1, X11(I,I), LDX11, TAUQ1(I), |
$ X21(I,I), LDX21, WORK(ILARF) ) |
$ X21(I,I), LDX21, WORK(ILARF) ) |
CALL ZLACGV( Q-I+1, X11(I,I), LDX11 ) |
CALL ZLACGV( Q-I+1, X11(I,I), LDX11 ) |
S = SQRT( DZNRM2( P-I, X11(I+1,I), 1, X11(I+1,I), |
S = SQRT( DZNRM2( P-I, X11(I+1,I), 1 )**2 |
$ 1 )**2 + DZNRM2( M-P-I+1, X21(I,I), 1, X21(I,I), 1 )**2 ) |
$ + DZNRM2( M-P-I+1, X21(I,I), 1 )**2 ) |
THETA(I) = ATAN2( S, C ) |
THETA(I) = ATAN2( S, C ) |
* |
* |
CALL ZUNBDB5( P-I, M-P-I+1, Q-I, X11(I+1,I), 1, X21(I,I), 1, |
CALL ZUNBDB5( P-I, M-P-I+1, Q-I, X11(I+1,I), 1, X21(I,I), 1, |