version 1.7, 2010/12/21 13:53:27
|
version 1.8, 2011/07/22 07:38:05
|
Line 2
|
Line 2
|
$ LDB, ALPHA, BETA, U, LDU, V, LDV, Q, LDQ, WORK, |
$ LDB, ALPHA, BETA, U, LDU, V, LDV, Q, LDQ, WORK, |
$ IWORK, INFO ) |
$ 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
|
* DGGSVD computes the generalized singular value decomposition (GSVD) |
* DGGSVD computes the generalized singular value decomposition (GSVD) |
* of an M-by-N real matrix A and P-by-N real matrix B: |
* of an M-by-N real matrix A and P-by-N real matrix B: |
* |
* |
* U'*A*Q = D1*( 0 R ), V'*B*Q = D2*( 0 R ) |
* U**T*A*Q = D1*( 0 R ), V**T*B*Q = D2*( 0 R ) |
* |
* |
* where U, V and Q are orthogonal matrices, and Z' is the transpose |
* where U, V and Q are orthogonal matrices. |
* of Z. Let K+L = the effective numerical rank of the matrix (A',B')', |
* Let K+L = the effective numerical rank of the matrix (A**T,B**T)**T, |
* then R is a K+L-by-K+L nonsingular upper triangular matrix, D1 and |
* 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" matrices and of the |
* D2 are M-by-(K+L) and P-by-(K+L) "diagonal" matrices and of the |
* following structures, respectively: |
* following structures, respectively: |
Line 86
|
Line 86
|
* |
* |
* 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**T. |
* If ( A',B')' has orthonormal columns, then the GSVD of A and B is |
* If ( A**T,B**T)**T has orthonormal columns, then the GSVD of A and B is |
* also equal to the CS decomposition of A and B. Furthermore, the GSVD |
* also equal to the CS decomposition of A and B. Furthermore, the GSVD |
* can be used to derive the solution of the eigenvalue problem: |
* can be used to derive the solution of the eigenvalue problem: |
* A'*A x = lambda* B'*B x. |
* A**T*A x = lambda* B**T*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**T*A*X = ( 0 D1 ), V**T*B*X = ( 0 D2 ) |
* where U and V are orthogonal and X is nonsingular, D1 and D2 are |
* where U and V are orthogonal and X is nonsingular, 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 128
|
Line 128
|
* 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 the Purpose section. |
* described in the Purpose section. |
* K + L = effective numerical rank of (A',B')'. |
* K + L = effective numerical rank of (A**T,B**T)**T. |
* |
* |
* A (input/output) DOUBLE PRECISION array, dimension (LDA,N) |
* A (input/output) DOUBLE PRECISION 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',B')**T. 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 |