version 1.1, 2012/07/31 11:06:35
|
version 1.8, 2017/06/17 11:06:17
|
Line 2
|
Line 2
|
* |
* |
* =========== DOCUMENTATION =========== |
* =========== DOCUMENTATION =========== |
* |
* |
* Online html documentation available at |
* Online html documentation available at |
* http://www.netlib.org/lapack/explore-html/ |
* http://www.netlib.org/lapack/explore-html/ |
* |
* |
*> \htmlonly |
*> \htmlonly |
*> Download DGEQRT + dependencies |
*> Download DGEQRT + dependencies |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dgeqrt.f"> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dgeqrt.f"> |
*> [TGZ]</a> |
*> [TGZ]</a> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dgeqrt.f"> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dgeqrt.f"> |
*> [ZIP]</a> |
*> [ZIP]</a> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dgeqrt.f"> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dgeqrt.f"> |
*> [TXT]</a> |
*> [TXT]</a> |
*> \endhtmlonly |
*> \endhtmlonly |
* |
* |
* Definition: |
* Definition: |
* =========== |
* =========== |
* |
* |
* SUBROUTINE DGEQRT( M, N, NB, A, LDA, T, LDT, WORK, INFO ) |
* SUBROUTINE DGEQRT( M, N, NB, A, LDA, T, LDT, WORK, INFO ) |
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
* INTEGER INFO, LDA, LDT, M, N, NB |
* INTEGER INFO, LDA, LDT, M, N, NB |
* .. |
* .. |
* .. Array Arguments .. |
* .. Array Arguments .. |
* DOUBLE PRECISION A( LDA, * ), T( LDT, * ), WORK( * ) |
* DOUBLE PRECISION A( LDA, * ), T( LDT, * ), WORK( * ) |
* .. |
* .. |
* |
* |
* |
* |
*> \par Purpose: |
*> \par Purpose: |
* ============= |
* ============= |
Line 34
|
Line 34
|
*> \verbatim |
*> \verbatim |
*> |
*> |
*> DGEQRT computes a blocked QR factorization of a real M-by-N matrix A |
*> DGEQRT computes a blocked QR factorization of a real M-by-N matrix A |
*> using the compact WY representation of Q. |
*> using the compact WY representation of Q. |
*> \endverbatim |
*> \endverbatim |
* |
* |
* Arguments: |
* Arguments: |
Line 103
|
Line 103
|
* Authors: |
* Authors: |
* ======== |
* ======== |
* |
* |
*> \author Univ. of Tennessee |
*> \author Univ. of Tennessee |
*> \author Univ. of California Berkeley |
*> \author Univ. of California Berkeley |
*> \author Univ. of Colorado Denver |
*> \author Univ. of Colorado Denver |
*> \author NAG Ltd. |
*> \author NAG Ltd. |
* |
* |
*> \date November 2011 |
*> \date December 2016 |
* |
* |
*> \ingroup doubleGEcomputational |
*> \ingroup doubleGEcomputational |
* |
* |
Line 130
|
Line 130
|
*> in the matrix A. The 1's along the diagonal of V are not stored in A. |
*> in the matrix A. The 1's along the diagonal of V are not stored in A. |
*> |
*> |
*> Let K=MIN(M,N). The number of blocks is B = ceiling(K/NB), where each |
*> Let K=MIN(M,N). The number of blocks is B = ceiling(K/NB), where each |
*> block is of order NB except for the last block, which is of order |
*> block is of order NB except for the last block, which is of order |
*> IB = K - (B-1)*NB. For each of the B blocks, a upper triangular block |
*> IB = K - (B-1)*NB. For each of the B blocks, a upper triangular block |
*> reflector factor is computed: T1, T2, ..., TB. The NB-by-NB (and IB-by-IB |
*> reflector factor is computed: T1, T2, ..., TB. The NB-by-NB (and IB-by-IB |
*> for the last block) T's are stored in the NB-by-N matrix T as |
*> for the last block) T's are stored in the NB-by-N matrix T as |
*> |
*> |
*> T = (T1 T2 ... TB). |
*> T = (T1 T2 ... TB). |
Line 141
|
Line 141
|
* ===================================================================== |
* ===================================================================== |
SUBROUTINE DGEQRT( M, N, NB, A, LDA, T, LDT, WORK, INFO ) |
SUBROUTINE DGEQRT( M, N, NB, A, LDA, T, LDT, WORK, INFO ) |
* |
* |
* -- LAPACK computational routine (version 3.4.0) -- |
* -- LAPACK computational routine (version 3.7.0) -- |
* -- 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 2011 |
* December 2016 |
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
INTEGER INFO, LDA, LDT, M, N, NB |
INTEGER INFO, LDA, LDT, M, N, NB |
Line 173
|
Line 173
|
INFO = -1 |
INFO = -1 |
ELSE IF( N.LT.0 ) THEN |
ELSE IF( N.LT.0 ) THEN |
INFO = -2 |
INFO = -2 |
ELSE IF( NB.LT.1 .OR. NB.GT.MIN(M,N) ) THEN |
ELSE IF( NB.LT.1 .OR. ( NB.GT.MIN(M,N) .AND. MIN(M,N).GT.0 ) )THEN |
INFO = -3 |
INFO = -3 |
ELSE IF( LDA.LT.MAX( 1, M ) ) THEN |
ELSE IF( LDA.LT.MAX( 1, M ) ) THEN |
INFO = -5 |
INFO = -5 |
Line 194
|
Line 194
|
* |
* |
DO I = 1, K, NB |
DO I = 1, K, NB |
IB = MIN( K-I+1, NB ) |
IB = MIN( K-I+1, NB ) |
* |
* |
* Compute the QR factorization of the current block A(I:M,I:I+IB-1) |
* Compute the QR factorization of the current block A(I:M,I:I+IB-1) |
* |
* |
IF( USE_RECURSIVE_QR ) THEN |
IF( USE_RECURSIVE_QR ) THEN |
Line 207
|
Line 207
|
* Update by applying H**T to A(I:M,I+IB:N) from the left |
* Update by applying H**T to A(I:M,I+IB:N) from the left |
* |
* |
CALL DLARFB( 'L', 'T', 'F', 'C', M-I+1, N-I-IB+1, IB, |
CALL DLARFB( 'L', 'T', 'F', 'C', M-I+1, N-I-IB+1, IB, |
$ A( I, I ), LDA, T( 1, I ), LDT, |
$ A( I, I ), LDA, T( 1, I ), LDT, |
$ A( I, I+IB ), LDA, WORK , N-I-IB+1 ) |
$ A( I, I+IB ), LDA, WORK , N-I-IB+1 ) |
END IF |
END IF |
END DO |
END DO |
RETURN |
RETURN |
* |
* |
* End of DGEQRT |
* End of DGEQRT |
* |
* |
END |
END |