version 1.6, 2016/08/27 15:34:21
|
version 1.7, 2017/06/17 10:53:48
|
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 DGEMQRT + dependencies |
*> Download DGEMQRT + dependencies |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dgemqrt.f"> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dgemqrt.f"> |
*> [TGZ]</a> |
*> [TGZ]</a> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dgemqrt.f"> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dgemqrt.f"> |
*> [ZIP]</a> |
*> [ZIP]</a> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dgemqrt.f"> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dgemqrt.f"> |
*> [TXT]</a> |
*> [TXT]</a> |
*> \endhtmlonly |
*> \endhtmlonly |
* |
* |
* Definition: |
* Definition: |
* =========== |
* =========== |
* |
* |
* SUBROUTINE DGEMQRT( SIDE, TRANS, M, N, K, NB, V, LDV, T, LDT, |
* SUBROUTINE DGEMQRT( SIDE, TRANS, M, N, K, NB, V, LDV, T, LDT, |
* C, LDC, WORK, INFO ) |
* C, LDC, WORK, INFO ) |
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
* CHARACTER SIDE, TRANS |
* CHARACTER SIDE, TRANS |
* INTEGER INFO, K, LDV, LDC, M, N, NB, LDT |
* INTEGER INFO, K, LDV, LDC, M, N, NB, LDT |
Line 28
|
Line 28
|
* .. Array Arguments .. |
* .. Array Arguments .. |
* DOUBLE PRECISION V( LDV, * ), C( LDC, * ), T( LDT, * ), WORK( * ) |
* DOUBLE PRECISION V( LDV, * ), C( LDC, * ), T( LDT, * ), WORK( * ) |
* .. |
* .. |
* |
* |
* |
* |
*> \par Purpose: |
*> \par Purpose: |
* ============= |
* ============= |
Line 46
|
Line 46
|
*> |
*> |
*> Q = H(1) H(2) . . . H(K) = I - V T V**T |
*> Q = H(1) H(2) . . . H(K) = I - V T V**T |
*> |
*> |
*> generated using the compact WY representation as returned by DGEQRT. |
*> generated using the compact WY representation as returned by DGEQRT. |
*> |
*> |
*> Q is of order M if SIDE = 'L' and of order N if SIDE = 'R'. |
*> Q is of order M if SIDE = 'L' and of order N if SIDE = 'R'. |
*> \endverbatim |
*> \endverbatim |
Line 155
|
Line 155
|
* 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 2013 |
*> \date December 2016 |
* |
* |
*> \ingroup doubleGEcomputational |
*> \ingroup doubleGEcomputational |
* |
* |
* ===================================================================== |
* ===================================================================== |
SUBROUTINE DGEMQRT( SIDE, TRANS, M, N, K, NB, V, LDV, T, LDT, |
SUBROUTINE DGEMQRT( SIDE, TRANS, M, N, K, NB, V, LDV, T, LDT, |
$ C, LDC, WORK, INFO ) |
$ C, LDC, WORK, INFO ) |
* |
* |
* -- LAPACK computational routine (version 3.5.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 2013 |
* December 2016 |
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
CHARACTER SIDE, TRANS |
CHARACTER SIDE, TRANS |
Line 207
|
Line 207
|
RIGHT = LSAME( SIDE, 'R' ) |
RIGHT = LSAME( SIDE, 'R' ) |
TRAN = LSAME( TRANS, 'T' ) |
TRAN = LSAME( TRANS, 'T' ) |
NOTRAN = LSAME( TRANS, 'N' ) |
NOTRAN = LSAME( TRANS, 'N' ) |
* |
* |
IF( LEFT ) THEN |
IF( LEFT ) THEN |
LDWORK = MAX( 1, N ) |
LDWORK = MAX( 1, N ) |
Q = M |
Q = M |
Line 248
|
Line 248
|
* |
* |
DO I = 1, K, NB |
DO I = 1, K, NB |
IB = MIN( NB, K-I+1 ) |
IB = MIN( NB, K-I+1 ) |
CALL DLARFB( 'L', 'T', 'F', 'C', M-I+1, N, IB, |
CALL DLARFB( 'L', 'T', 'F', 'C', M-I+1, N, IB, |
$ V( I, I ), LDV, T( 1, I ), LDT, |
$ V( I, I ), LDV, T( 1, I ), LDT, |
$ C( I, 1 ), LDC, WORK, LDWORK ) |
$ C( I, 1 ), LDC, WORK, LDWORK ) |
END DO |
END DO |
* |
* |
ELSE IF( RIGHT .AND. NOTRAN ) THEN |
ELSE IF( RIGHT .AND. NOTRAN ) THEN |
* |
* |
DO I = 1, K, NB |
DO I = 1, K, NB |
IB = MIN( NB, K-I+1 ) |
IB = MIN( NB, K-I+1 ) |
CALL DLARFB( 'R', 'N', 'F', 'C', M, N-I+1, IB, |
CALL DLARFB( 'R', 'N', 'F', 'C', M, N-I+1, IB, |
$ V( I, I ), LDV, T( 1, I ), LDT, |
$ V( I, I ), LDV, T( 1, I ), LDT, |
$ C( 1, I ), LDC, WORK, LDWORK ) |
$ C( 1, I ), LDC, WORK, LDWORK ) |
END DO |
END DO |
* |
* |
Line 266
|
Line 266
|
* |
* |
KF = ((K-1)/NB)*NB+1 |
KF = ((K-1)/NB)*NB+1 |
DO I = KF, 1, -NB |
DO I = KF, 1, -NB |
IB = MIN( NB, K-I+1 ) |
IB = MIN( NB, K-I+1 ) |
CALL DLARFB( 'L', 'N', 'F', 'C', M-I+1, N, IB, |
CALL DLARFB( 'L', 'N', 'F', 'C', M-I+1, N, IB, |
$ V( I, I ), LDV, T( 1, I ), LDT, |
$ V( I, I ), LDV, T( 1, I ), LDT, |
$ C( I, 1 ), LDC, WORK, LDWORK ) |
$ C( I, 1 ), LDC, WORK, LDWORK ) |
END DO |
END DO |
* |
* |
Line 276
|
Line 276
|
* |
* |
KF = ((K-1)/NB)*NB+1 |
KF = ((K-1)/NB)*NB+1 |
DO I = KF, 1, -NB |
DO I = KF, 1, -NB |
IB = MIN( NB, K-I+1 ) |
IB = MIN( NB, K-I+1 ) |
CALL DLARFB( 'R', 'T', 'F', 'C', M, N-I+1, IB, |
CALL DLARFB( 'R', 'T', 'F', 'C', M, N-I+1, IB, |
$ V( I, I ), LDV, T( 1, I ), LDT, |
$ V( I, I ), LDV, T( 1, I ), LDT, |
$ C( 1, I ), LDC, WORK, LDWORK ) |
$ C( 1, I ), LDC, WORK, LDWORK ) |
END DO |
END DO |
* |
* |