version 1.7, 2010/12/21 13:53:35
|
version 1.8, 2011/07/22 07:38:09
|
Line 1
|
Line 1
|
SUBROUTINE DORMR3( SIDE, TRANS, M, N, K, L, A, LDA, TAU, C, LDC, |
SUBROUTINE DORMR3( SIDE, TRANS, M, N, K, L, A, LDA, TAU, C, LDC, |
$ WORK, INFO ) |
$ WORK, 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 .. |
CHARACTER SIDE, TRANS |
CHARACTER SIDE, TRANS |
Line 21
|
Line 21
|
* |
* |
* Q * C if SIDE = 'L' and TRANS = 'N', or |
* Q * C if SIDE = 'L' and TRANS = 'N', or |
* |
* |
* Q'* C if SIDE = 'L' and TRANS = 'T', or |
* Q**T* C if SIDE = 'L' and TRANS = 'C', or |
* |
* |
* C * Q if SIDE = 'R' and TRANS = 'N', or |
* C * Q if SIDE = 'R' and TRANS = 'N', or |
* |
* |
* C * Q' if SIDE = 'R' and TRANS = 'T', |
* C * Q**T if SIDE = 'R' and TRANS = 'C', |
* |
* |
* where Q is a real orthogonal matrix defined as the product of k |
* where Q is a real orthogonal matrix defined as the product of k |
* elementary reflectors |
* elementary reflectors |
Line 39
|
Line 39
|
* ========= |
* ========= |
* |
* |
* SIDE (input) CHARACTER*1 |
* SIDE (input) CHARACTER*1 |
* = 'L': apply Q or Q' from the Left |
* = 'L': apply Q or Q**T from the Left |
* = 'R': apply Q or Q' from the Right |
* = 'R': apply Q or Q**T from the Right |
* |
* |
* TRANS (input) CHARACTER*1 |
* TRANS (input) CHARACTER*1 |
* = 'N': apply Q (No transpose) |
* = 'N': apply Q (No transpose) |
* = 'T': apply Q' (Transpose) |
* = 'T': apply Q**T (Transpose) |
* |
* |
* M (input) INTEGER |
* M (input) INTEGER |
* The number of rows of the matrix C. M >= 0. |
* The number of rows of the matrix C. M >= 0. |
Line 80
|
Line 80
|
* |
* |
* C (input/output) DOUBLE PRECISION array, dimension (LDC,N) |
* C (input/output) DOUBLE PRECISION array, dimension (LDC,N) |
* On entry, the m-by-n matrix C. |
* On entry, the m-by-n matrix C. |
* On exit, C is overwritten by Q*C or Q'*C or C*Q' or C*Q. |
* On exit, C is overwritten by Q*C or Q**T*C or C*Q**T or C*Q. |
* |
* |
* LDC (input) INTEGER |
* LDC (input) INTEGER |
* The leading dimension of the array C. LDC >= max(1,M). |
* The leading dimension of the array C. LDC >= max(1,M). |
Line 181
|
Line 181
|
DO 10 I = I1, I2, I3 |
DO 10 I = I1, I2, I3 |
IF( LEFT ) THEN |
IF( LEFT ) THEN |
* |
* |
* H(i) or H(i)' is applied to C(i:m,1:n) |
* H(i) or H(i)**T is applied to C(i:m,1:n) |
* |
* |
MI = M - I + 1 |
MI = M - I + 1 |
IC = I |
IC = I |
ELSE |
ELSE |
* |
* |
* H(i) or H(i)' is applied to C(1:m,i:n) |
* H(i) or H(i)**T is applied to C(1:m,i:n) |
* |
* |
NI = N - I + 1 |
NI = N - I + 1 |
JC = I |
JC = I |
END IF |
END IF |
* |
* |
* Apply H(i) or H(i)' |
* Apply H(i) or H(i)**T |
* |
* |
CALL DLARZ( SIDE, MI, NI, L, A( I, JA ), LDA, TAU( I ), |
CALL DLARZ( SIDE, MI, NI, L, A( I, JA ), LDA, TAU( I ), |
$ C( IC, JC ), LDC, WORK ) |
$ C( IC, JC ), LDC, WORK ) |