version 1.7, 2010/12/21 13:53:45
|
version 1.8, 2011/07/22 07:38:14
|
Line 2
|
Line 2
|
$ LDB, ALPHA, BETA, U, LDU, V, LDV, Q, LDQ, WORK, |
$ LDB, ALPHA, BETA, U, LDU, V, LDV, Q, LDQ, WORK, |
$ RWORK, IWORK, INFO ) |
$ RWORK, IWORK, INFO ) |
* |
* |
* -- LAPACK driver routine (version 3.2) -- |
* -- LAPACK driver routine (version 3.3.1) -- |
* -- 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..-- |
* November 2006 |
* -- April 2011 -- |
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
CHARACTER JOBQ, JOBU, JOBV |
CHARACTER JOBQ, JOBU, JOBV |
Line 24
|
Line 24
|
* ZGGSVD computes the generalized singular value decomposition (GSVD) |
* ZGGSVD computes the generalized singular value decomposition (GSVD) |
* of an M-by-N complex matrix A and P-by-N complex matrix B: |
* of an M-by-N complex matrix A and P-by-N complex matrix B: |
* |
* |
* U'*A*Q = D1*( 0 R ), V'*B*Q = D2*( 0 R ) |
* U**H*A*Q = D1*( 0 R ), V**H*B*Q = D2*( 0 R ) |
* |
* |
* where U, V and Q are unitary matrices, and Z' means the conjugate |
* where U, V and Q are unitary matrices. |
* transpose of Z. Let K+L = the effective numerical rank of the |
* Let K+L = the effective numerical rank of the |
* matrix (A',B')', then R is a (K+L)-by-(K+L) nonsingular upper |
* matrix (A**H,B**H)**H, then R is a (K+L)-by-(K+L) nonsingular upper |
* triangular matrix, D1 and D2 are M-by-(K+L) and P-by-(K+L) "diagonal" |
* triangular matrix, D1 and D2 are M-by-(K+L) and P-by-(K+L) "diagonal" |
* matrices and of the following structures, respectively: |
* matrices and of the following structures, respectively: |
* |
* |
Line 85
|
Line 85
|
* |
* |
* In particular, if B is an N-by-N nonsingular matrix, then the GSVD of |
* In particular, if B is an N-by-N nonsingular matrix, then the GSVD of |
* A and B implicitly gives the SVD of A*inv(B): |
* A and B implicitly gives the SVD of A*inv(B): |
* A*inv(B) = U*(D1*inv(D2))*V'. |
* A*inv(B) = U*(D1*inv(D2))*V**H. |
* If ( A',B')' has orthnormal columns, then the GSVD of A and B is also |
* If ( A**H,B**H)**H has orthnormal columns, then the GSVD of A and B is also |
* equal to the CS decomposition of A and B. Furthermore, the GSVD can |
* equal to the CS decomposition of A and B. Furthermore, the GSVD can |
* be used to derive the solution of the eigenvalue problem: |
* be used to derive the solution of the eigenvalue problem: |
* A'*A x = lambda* B'*B x. |
* A**H*A x = lambda* B**H*B x. |
* In some literature, the GSVD of A and B is presented in the form |
* In some literature, the GSVD of A and B is presented in the form |
* U'*A*X = ( 0 D1 ), V'*B*X = ( 0 D2 ) |
* U**H*A*X = ( 0 D1 ), V**H*B*X = ( 0 D2 ) |
* where U and V are orthogonal and X is nonsingular, and D1 and D2 are |
* where U and V are orthogonal and X is nonsingular, and D1 and D2 are |
* ``diagonal''. The former GSVD form can be converted to the latter |
* ``diagonal''. The former GSVD form can be converted to the latter |
* form by taking the nonsingular matrix X as |
* form by taking the nonsingular matrix X as |
Line 127
|
Line 127
|
* L (output) INTEGER |
* L (output) INTEGER |
* On exit, K and L specify the dimension of the subblocks |
* On exit, K and L specify the dimension of the subblocks |
* described in Purpose. |
* described in Purpose. |
* K + L = effective numerical rank of (A',B')'. |
* K + L = effective numerical rank of (A**H,B**H)**H. |
* |
* |
* A (input/output) COMPLEX*16 array, dimension (LDA,N) |
* A (input/output) COMPLEX*16 array, dimension (LDA,N) |
* On entry, the M-by-N matrix A. |
* On entry, the M-by-N matrix A. |
Line 209
|
Line 209
|
* TOLA DOUBLE PRECISION |
* TOLA DOUBLE PRECISION |
* TOLB DOUBLE PRECISION |
* TOLB DOUBLE PRECISION |
* TOLA and TOLB are the thresholds to determine the effective |
* TOLA and TOLB are the thresholds to determine the effective |
* rank of (A',B')'. Generally, they are set to |
* rank of (A**H,B**H)**H. Generally, they are set to |
* TOLA = MAX(M,N)*norm(A)*MAZHEPS, |
* TOLA = MAX(M,N)*norm(A)*MAZHEPS, |
* TOLB = MAX(P,N)*norm(B)*MAZHEPS. |
* TOLB = MAX(P,N)*norm(B)*MAZHEPS. |
* The size of TOLA and TOLB may affect the size of backward |
* The size of TOLA and TOLB may affect the size of backward |