version 1.5, 2016/08/27 15:35:12
|
version 1.6, 2017/06/17 10:54:33
|
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 ZUNCSD2BY1 + dependencies |
*> Download ZUNCSD2BY1 + dependencies |
Line 22
|
Line 22
|
* X21, LDX21, THETA, U1, LDU1, U2, LDU2, V1T, |
* X21, LDX21, THETA, U1, LDU1, U2, LDU2, V1T, |
* LDV1T, WORK, LWORK, RWORK, LRWORK, IWORK, |
* LDV1T, WORK, LWORK, RWORK, LRWORK, IWORK, |
* INFO ) |
* INFO ) |
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
* CHARACTER JOBU1, JOBU2, JOBV1T |
* CHARACTER JOBU1, JOBU2, JOBV1T |
* INTEGER INFO, LDU1, LDU2, LDV1T, LWORK, LDX11, LDX21, |
* INTEGER INFO, LDU1, LDU2, LDV1T, LWORK, LDX11, LDX21, |
Line 36
|
Line 36
|
* $ X11(LDX11,*), X21(LDX21,*) |
* $ X11(LDX11,*), X21(LDX21,*) |
* INTEGER IWORK(*) |
* INTEGER IWORK(*) |
* .. |
* .. |
* |
* |
* |
* |
*> \par Purpose: |
*> \par Purpose: |
*> ============= |
*> ============= |
*> |
*> |
Line 47
|
Line 47
|
*> orthonormal columns that has been partitioned into a 2-by-1 block |
*> orthonormal columns that has been partitioned into a 2-by-1 block |
*> structure: |
*> structure: |
*> |
*> |
*> [ I 0 0 ] |
*> [ I1 0 0 ] |
*> [ 0 C 0 ] |
*> [ 0 C 0 ] |
*> [ X11 ] [ U1 | ] [ 0 0 0 ] |
*> [ X11 ] [ U1 | ] [ 0 0 0 ] |
*> X = [-----] = [---------] [----------] V1**T . |
*> X = [-----] = [---------] [----------] V1**T . |
*> [ X21 ] [ | U2 ] [ 0 0 0 ] |
*> [ X21 ] [ | U2 ] [ 0 0 0 ] |
*> [ 0 S 0 ] |
*> [ 0 S 0 ] |
*> [ 0 0 I ] |
*> [ 0 0 I2] |
*> |
*> |
*> X11 is P-by-Q. The unitary matrices U1, U2, and V1 are P-by-P, |
*> X11 is P-by-Q. The unitary matrices U1, U2, and V1 are P-by-P, |
*> (M-P)-by-(M-P), and Q-by-Q, respectively. C and S are R-by-R |
*> (M-P)-by-(M-P), and Q-by-Q, respectively. C and S are R-by-R |
*> nonnegative diagonal matrices satisfying C^2 + S^2 = I, in which |
*> nonnegative diagonal matrices satisfying C^2 + S^2 = I, in which |
*> R = MIN(P,M-P,Q,M-Q). |
*> R = MIN(P,M-P,Q,M-Q). I1 is a K1-by-K1 identity matrix and I2 is a |
|
*> K2-by-K2 identity matrix, where K1 = MAX(Q+P-M,0), K2 = MAX(Q-P,0). |
*> \endverbatim |
*> \endverbatim |
* |
* |
* Arguments: |
* Arguments: |
Line 208
|
Line 209
|
*> \verbatim |
*> \verbatim |
*> LRWORK is INTEGER |
*> LRWORK is INTEGER |
*> The dimension of the array RWORK. |
*> The dimension of the array RWORK. |
*> |
*> |
*> If LRWORK = -1, then a workspace query is assumed; the routine |
*> If LRWORK = -1, then a workspace query is assumed; the routine |
*> only calculates the optimal size of the RWORK array, returns |
*> only calculates the optimal size of the RWORK 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 238
|
Line 239
|
* 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 253
|
Line 254
|
$ LDV1T, WORK, LWORK, RWORK, LRWORK, IWORK, |
$ LDV1T, WORK, LWORK, RWORK, LRWORK, IWORK, |
$ INFO ) |
$ INFO ) |
* |
* |
* -- LAPACK computational routine (version 3.6.1) -- |
* -- LAPACK computational routine (version 3.7.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 271
|
Line 272
|
$ X11(LDX11,*), X21(LDX21,*) |
$ X11(LDX11,*), X21(LDX21,*) |
INTEGER IWORK(*) |
INTEGER IWORK(*) |
* .. |
* .. |
* |
* |
* ===================================================================== |
* ===================================================================== |
* |
* |
* .. Parameters .. |
* .. Parameters .. |
Line 556
|
Line 557
|
CALL ZUNGLQ( Q-1, Q-1, Q-1, V1T(2,2), LDV1T, WORK(ITAUQ1), |
CALL ZUNGLQ( Q-1, Q-1, Q-1, V1T(2,2), LDV1T, WORK(ITAUQ1), |
$ WORK(IORGLQ), LORGLQ, CHILDINFO ) |
$ WORK(IORGLQ), LORGLQ, CHILDINFO ) |
END IF |
END IF |
* |
* |
* Simultaneously diagonalize X11 and X21. |
* Simultaneously diagonalize X11 and X21. |
* |
* |
CALL ZBBCSD( JOBU1, JOBU2, JOBV1T, 'N', 'N', M, P, Q, THETA, |
CALL ZBBCSD( JOBU1, JOBU2, JOBV1T, 'N', 'N', M, P, Q, THETA, |
$ RWORK(IPHI), U1, LDU1, U2, LDU2, V1T, LDV1T, CDUM, |
$ RWORK(IPHI), U1, LDU1, U2, LDU2, V1T, LDV1T, CDUM, |
$ 1, RWORK(IB11D), RWORK(IB11E), RWORK(IB12D), |
$ 1, RWORK(IB11D), RWORK(IB11E), RWORK(IB12D), |
$ RWORK(IB12E), RWORK(IB21D), RWORK(IB21E), |
$ RWORK(IB12E), RWORK(IB21D), RWORK(IB21E), |
$ RWORK(IB22D), RWORK(IB22E), RWORK(IBBCSD), LBBCSD, |
$ RWORK(IB22D), RWORK(IB22E), RWORK(IBBCSD), LBBCSD, |
$ CHILDINFO ) |
$ CHILDINFO ) |
* |
* |
* Permute rows and columns to place zero submatrices in |
* Permute rows and columns to place zero submatrices in |
* preferred positions |
* preferred positions |
* |
* |
Line 610
|
Line 611
|
CALL ZUNGLQ( Q, Q, R, V1T, LDV1T, WORK(ITAUQ1), |
CALL ZUNGLQ( Q, Q, R, V1T, LDV1T, WORK(ITAUQ1), |
$ WORK(IORGLQ), LORGLQ, CHILDINFO ) |
$ WORK(IORGLQ), LORGLQ, CHILDINFO ) |
END IF |
END IF |
* |
* |
* Simultaneously diagonalize X11 and X21. |
* Simultaneously diagonalize X11 and X21. |
* |
* |
CALL ZBBCSD( JOBV1T, 'N', JOBU1, JOBU2, 'T', M, Q, P, THETA, |
CALL ZBBCSD( JOBV1T, 'N', JOBU1, JOBU2, 'T', M, Q, P, THETA, |
$ RWORK(IPHI), V1T, LDV1T, CDUM, 1, U1, LDU1, U2, |
$ RWORK(IPHI), V1T, LDV1T, CDUM, 1, U1, LDU1, U2, |
$ LDU2, RWORK(IB11D), RWORK(IB11E), RWORK(IB12D), |
$ LDU2, RWORK(IB11D), RWORK(IB11E), RWORK(IB12D), |
$ RWORK(IB12E), RWORK(IB21D), RWORK(IB21E), |
$ RWORK(IB12E), RWORK(IB21D), RWORK(IB21E), |
$ RWORK(IB22D), RWORK(IB22E), RWORK(IBBCSD), LBBCSD, |
$ RWORK(IB22D), RWORK(IB22E), RWORK(IBBCSD), LBBCSD, |
$ CHILDINFO ) |
$ CHILDINFO ) |
* |
* |
* Permute rows and columns to place identity submatrices in |
* Permute rows and columns to place identity submatrices in |
* preferred positions |
* preferred positions |
* |
* |
Line 665
|
Line 666
|
CALL ZUNGLQ( Q, Q, R, V1T, LDV1T, WORK(ITAUQ1), |
CALL ZUNGLQ( Q, Q, R, V1T, LDV1T, WORK(ITAUQ1), |
$ WORK(IORGLQ), LORGLQ, CHILDINFO ) |
$ WORK(IORGLQ), LORGLQ, CHILDINFO ) |
END IF |
END IF |
* |
* |
* Simultaneously diagonalize X11 and X21. |
* Simultaneously diagonalize X11 and X21. |
* |
* |
CALL ZBBCSD( 'N', JOBV1T, JOBU2, JOBU1, 'T', M, M-Q, M-P, |
CALL ZBBCSD( 'N', JOBV1T, JOBU2, JOBU1, 'T', M, M-Q, M-P, |
$ THETA, RWORK(IPHI), CDUM, 1, V1T, LDV1T, U2, LDU2, |
$ THETA, RWORK(IPHI), CDUM, 1, V1T, LDV1T, U2, LDU2, |
$ U1, LDU1, RWORK(IB11D), RWORK(IB11E), |
$ U1, LDU1, RWORK(IB11D), RWORK(IB11E), |
$ RWORK(IB12D), RWORK(IB12E), RWORK(IB21D), |
$ RWORK(IB12D), RWORK(IB12E), RWORK(IB21D), |
$ RWORK(IB21E), RWORK(IB22D), RWORK(IB22E), |
$ RWORK(IB21E), RWORK(IB22D), RWORK(IB22E), |
$ RWORK(IBBCSD), LBBCSD, CHILDINFO ) |
$ RWORK(IBBCSD), LBBCSD, CHILDINFO ) |
* |
* |
* Permute rows and columns to place identity submatrices in |
* Permute rows and columns to place identity submatrices in |
* preferred positions |
* preferred positions |
* |
* |
Line 734
|
Line 735
|
CALL ZUNGLQ( Q, Q, Q, V1T, LDV1T, WORK(ITAUQ1), |
CALL ZUNGLQ( Q, Q, Q, V1T, LDV1T, WORK(ITAUQ1), |
$ WORK(IORGLQ), LORGLQ, CHILDINFO ) |
$ WORK(IORGLQ), LORGLQ, CHILDINFO ) |
END IF |
END IF |
* |
* |
* Simultaneously diagonalize X11 and X21. |
* Simultaneously diagonalize X11 and X21. |
* |
* |
CALL ZBBCSD( JOBU2, JOBU1, 'N', JOBV1T, 'N', M, M-P, M-Q, |
CALL ZBBCSD( JOBU2, JOBU1, 'N', JOBV1T, 'N', M, M-P, M-Q, |
$ THETA, RWORK(IPHI), U2, LDU2, U1, LDU1, CDUM, 1, |
$ THETA, RWORK(IPHI), U2, LDU2, U1, LDU1, CDUM, 1, |
$ V1T, LDV1T, RWORK(IB11D), RWORK(IB11E), |
$ V1T, LDV1T, RWORK(IB11D), RWORK(IB11E), |
$ RWORK(IB12D), RWORK(IB12E), RWORK(IB21D), |
$ RWORK(IB12D), RWORK(IB12E), RWORK(IB21D), |
$ RWORK(IB21E), RWORK(IB22D), RWORK(IB22E), |
$ RWORK(IB21E), RWORK(IB22D), RWORK(IB22E), |
$ RWORK(IBBCSD), LBBCSD, CHILDINFO ) |
$ RWORK(IBBCSD), LBBCSD, CHILDINFO ) |
* |
* |
* Permute rows and columns to place identity submatrices in |
* Permute rows and columns to place identity submatrices in |
* preferred positions |
* preferred positions |
* |
* |