version 1.8, 2010/12/21 13:53:51
|
version 1.9, 2011/07/22 07:38:17
|
Line 1
|
Line 1
|
SUBROUTINE ZLAQPS( M, N, OFFSET, NB, KB, A, LDA, JPVT, TAU, VN1, |
SUBROUTINE ZLAQPS( M, N, OFFSET, NB, KB, A, LDA, JPVT, TAU, VN1, |
$ VN2, AUXV, F, LDF ) |
$ VN2, AUXV, F, LDF ) |
* |
* |
* -- LAPACK auxiliary routine (version 3.2.2) -- |
* -- LAPACK auxiliary 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..-- |
* June 2010 |
* -- April 2011 -- |
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
INTEGER KB, LDA, LDF, M, N, NB, OFFSET |
INTEGER KB, LDA, LDF, M, N, NB, OFFSET |
Line 76
|
Line 76
|
* Auxiliar vector. |
* Auxiliar vector. |
* |
* |
* F (input/output) COMPLEX*16 array, dimension (LDF,NB) |
* F (input/output) COMPLEX*16 array, dimension (LDF,NB) |
* Matrix F' = L*Y'*A. |
* Matrix F**H = L * Y**H * A. |
* |
* |
* LDF (input) INTEGER |
* LDF (input) INTEGER |
* The leading dimension of the array F. LDF >= max(1,N). |
* The leading dimension of the array F. LDF >= max(1,N). |
Line 88
|
Line 88
|
* G. Quintana-Orti, Depto. de Informatica, Universidad Jaime I, Spain |
* G. Quintana-Orti, Depto. de Informatica, Universidad Jaime I, Spain |
* X. Sun, Computer Science Dept., Duke University, USA |
* X. Sun, Computer Science Dept., Duke University, USA |
* |
* |
|
* Partial column norm updating strategy modified by |
|
* Z. Drmac and Z. Bujanovic, Dept. of Mathematics, |
|
* University of Zagreb, Croatia. |
|
* -- April 2011 -- |
|
* For more details see LAPACK Working Note 176. |
* ===================================================================== |
* ===================================================================== |
* |
* |
* .. Parameters .. |
* .. Parameters .. |
Line 141
|
Line 146
|
END IF |
END IF |
* |
* |
* Apply previous Householder reflectors to column K: |
* Apply previous Householder reflectors to column K: |
* A(RK:M,K) := A(RK:M,K) - A(RK:M,1:K-1)*F(K,1:K-1)'. |
* A(RK:M,K) := A(RK:M,K) - A(RK:M,1:K-1)*F(K,1:K-1)**H. |
* |
* |
IF( K.GT.1 ) THEN |
IF( K.GT.1 ) THEN |
DO 20 J = 1, K - 1 |
DO 20 J = 1, K - 1 |
Line 167
|
Line 172
|
* |
* |
* Compute Kth column of F: |
* Compute Kth column of F: |
* |
* |
* Compute F(K+1:N,K) := tau(K)*A(RK:M,K+1:N)'*A(RK:M,K). |
* Compute F(K+1:N,K) := tau(K)*A(RK:M,K+1:N)**H*A(RK:M,K). |
* |
* |
IF( K.LT.N ) THEN |
IF( K.LT.N ) THEN |
CALL ZGEMV( 'Conjugate transpose', M-RK+1, N-K, TAU( K ), |
CALL ZGEMV( 'Conjugate transpose', M-RK+1, N-K, TAU( K ), |
Line 182
|
Line 187
|
40 CONTINUE |
40 CONTINUE |
* |
* |
* Incremental updating of F: |
* Incremental updating of F: |
* F(1:N,K) := F(1:N,K) - tau(K)*F(1:N,1:K-1)*A(RK:M,1:K-1)' |
* F(1:N,K) := F(1:N,K) - tau(K)*F(1:N,1:K-1)*A(RK:M,1:K-1)**H |
* *A(RK:M,K). |
* *A(RK:M,K). |
* |
* |
IF( K.GT.1 ) THEN |
IF( K.GT.1 ) THEN |
Line 195
|
Line 200
|
END IF |
END IF |
* |
* |
* Update the current row of A: |
* Update the current row of A: |
* A(RK,K+1:N) := A(RK,K+1:N) - A(RK,1:K)*F(K+1:N,1:K)'. |
* A(RK,K+1:N) := A(RK,K+1:N) - A(RK,1:K)*F(K+1:N,1:K)**H. |
* |
* |
IF( K.LT.N ) THEN |
IF( K.LT.N ) THEN |
CALL ZGEMM( 'No transpose', 'Conjugate transpose', 1, N-K, |
CALL ZGEMM( 'No transpose', 'Conjugate transpose', 1, N-K, |
Line 236
|
Line 241
|
* |
* |
* Apply the block reflector to the rest of the matrix: |
* Apply the block reflector to the rest of the matrix: |
* A(OFFSET+KB+1:M,KB+1:N) := A(OFFSET+KB+1:M,KB+1:N) - |
* A(OFFSET+KB+1:M,KB+1:N) := A(OFFSET+KB+1:M,KB+1:N) - |
* A(OFFSET+KB+1:M,1:KB)*F(KB+1:N,1:KB)'. |
* A(OFFSET+KB+1:M,1:KB)*F(KB+1:N,1:KB)**H. |
* |
* |
IF( KB.LT.MIN( N, M-OFFSET ) ) THEN |
IF( KB.LT.MIN( N, M-OFFSET ) ) THEN |
CALL ZGEMM( 'No transpose', 'Conjugate transpose', M-RK, N-KB, |
CALL ZGEMM( 'No transpose', 'Conjugate transpose', M-RK, N-KB, |