version 1.1, 2010/01/26 15:22:45
|
version 1.8, 2011/07/22 07:38:05
|
Line 1
|
Line 1
|
SUBROUTINE DGGQRF( N, M, P, A, LDA, TAUA, B, LDB, TAUB, WORK, |
SUBROUTINE DGGQRF( N, M, P, A, LDA, TAUA, B, LDB, TAUB, WORK, |
$ LWORK, INFO ) |
$ LWORK, INFO ) |
* |
* |
* -- LAPACK routine (version 3.2) -- |
* -- LAPACK 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 40
|
Line 40
|
* In particular, if B is square and nonsingular, the GQR factorization |
* In particular, if B is square and nonsingular, the GQR factorization |
* of A and B implicitly gives the QR factorization of inv(B)*A: |
* of A and B implicitly gives the QR factorization of inv(B)*A: |
* |
* |
* inv(B)*A = Z'*(inv(T)*R) |
* inv(B)*A = Z**T*(inv(T)*R) |
* |
* |
* where inv(B) denotes the inverse of the matrix B, and Z' denotes the |
* where inv(B) denotes the inverse of the matrix B, and Z**T denotes the |
* transpose of the matrix Z. |
* transpose of the matrix Z. |
* |
* |
* Arguments |
* Arguments |
Line 119
|
Line 119
|
* |
* |
* Each H(i) has the form |
* Each H(i) has the form |
* |
* |
* H(i) = I - taua * v * v' |
* H(i) = I - taua * v * v**T |
* |
* |
* where taua is a real scalar, and v is a real vector with |
* where taua is a real scalar, and v is a real vector with |
* v(1:i-1) = 0 and v(i) = 1; v(i+1:n) is stored on exit in A(i+1:n,i), |
* v(1:i-1) = 0 and v(i) = 1; v(i+1:n) is stored on exit in A(i+1:n,i), |
Line 133
|
Line 133
|
* |
* |
* Each H(i) has the form |
* Each H(i) has the form |
* |
* |
* H(i) = I - taub * v * v' |
* H(i) = I - taub * v * v**T |
* |
* |
* where taub is a real scalar, and v is a real vector with |
* where taub is a real scalar, and v is a real vector with |
* v(p-k+i+1:p) = 0 and v(p-k+i) = 1; v(1:p-k+i-1) is stored on exit in |
* v(p-k+i+1:p) = 0 and v(p-k+i) = 1; v(1:p-k+i-1) is stored on exit in |
Line 194
|
Line 194
|
CALL DGEQRF( N, M, A, LDA, TAUA, WORK, LWORK, INFO ) |
CALL DGEQRF( N, M, A, LDA, TAUA, WORK, LWORK, INFO ) |
LOPT = WORK( 1 ) |
LOPT = WORK( 1 ) |
* |
* |
* Update B := Q'*B. |
* Update B := Q**T*B. |
* |
* |
CALL DORMQR( 'Left', 'Transpose', N, P, MIN( N, M ), A, LDA, TAUA, |
CALL DORMQR( 'Left', 'Transpose', N, P, MIN( N, M ), A, LDA, TAUA, |
$ B, LDB, WORK, LWORK, INFO ) |
$ B, LDB, WORK, LWORK, INFO ) |