version 1.5, 2010/08/07 13:22:32
|
version 1.8, 2011/07/22 07:38:14
|
Line 1
|
Line 1
|
SUBROUTINE ZGGGLM( N, M, P, A, LDA, B, LDB, D, X, Y, WORK, LWORK, |
SUBROUTINE ZGGGLM( N, M, P, A, LDA, B, LDB, D, X, Y, WORK, LWORK, |
$ INFO ) |
$ 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 .. |
INTEGER INFO, LDA, LDB, LWORK, M, N, P |
INTEGER INFO, LDA, LDB, LWORK, M, N, P |
Line 187
|
Line 187
|
* |
* |
* Compute the GQR factorization of matrices A and B: |
* Compute the GQR factorization of matrices A and B: |
* |
* |
* Q'*A = ( R11 ) M, Q'*B*Z' = ( T11 T12 ) M |
* Q**H*A = ( R11 ) M, Q**H*B*Z**H = ( T11 T12 ) M |
* ( 0 ) N-M ( 0 T22 ) N-M |
* ( 0 ) N-M ( 0 T22 ) N-M |
* M M+P-N N-M |
* M M+P-N N-M |
* |
* |
* where R11 and T22 are upper triangular, and Q and Z are |
* where R11 and T22 are upper triangular, and Q and Z are |
* unitary. |
* unitary. |
Line 198
|
Line 198
|
$ WORK( M+NP+1 ), LWORK-M-NP, INFO ) |
$ WORK( M+NP+1 ), LWORK-M-NP, INFO ) |
LOPT = WORK( M+NP+1 ) |
LOPT = WORK( M+NP+1 ) |
* |
* |
* Update left-hand-side vector d = Q'*d = ( d1 ) M |
* Update left-hand-side vector d = Q**H*d = ( d1 ) M |
* ( d2 ) N-M |
* ( d2 ) N-M |
* |
* |
CALL ZUNMQR( 'Left', 'Conjugate transpose', N, 1, M, A, LDA, WORK, |
CALL ZUNMQR( 'Left', 'Conjugate transpose', N, 1, M, A, LDA, WORK, |
$ D, MAX( 1, N ), WORK( M+NP+1 ), LWORK-M-NP, INFO ) |
$ D, MAX( 1, N ), WORK( M+NP+1 ), LWORK-M-NP, INFO ) |
Line 246
|
Line 246
|
CALL ZCOPY( M, D, 1, X, 1 ) |
CALL ZCOPY( M, D, 1, X, 1 ) |
END IF |
END IF |
* |
* |
* Backward transformation y = Z'*y |
* Backward transformation y = Z**H *y |
* |
* |
CALL ZUNMRQ( 'Left', 'Conjugate transpose', P, 1, NP, |
CALL ZUNMRQ( 'Left', 'Conjugate transpose', P, 1, NP, |
$ B( MAX( 1, N-P+1 ), 1 ), LDB, WORK( M+1 ), Y, |
$ B( MAX( 1, N-P+1 ), 1 ), LDB, WORK( M+1 ), Y, |