diff options
author | julie <julielangou@users.noreply.github.com> | 2011-10-06 06:53:11 +0000 |
---|---|---|
committer | julie <julielangou@users.noreply.github.com> | 2011-10-06 06:53:11 +0000 |
commit | e1d39294aee16fa6db9ba079b14442358217db71 (patch) | |
tree | 30e5aa04c1f6596991fda5334f63dfb9b8027849 /SRC/ztpmqrt.f | |
parent | 5fe0466a14e395641f4f8a300ecc9dcb8058081b (diff) | |
download | lapack-e1d39294aee16fa6db9ba079b14442358217db71.tar.gz lapack-e1d39294aee16fa6db9ba079b14442358217db71.tar.bz2 lapack-e1d39294aee16fa6db9ba079b14442358217db71.zip |
Integrating Doxygen in comments
Diffstat (limited to 'SRC/ztpmqrt.f')
-rw-r--r-- | SRC/ztpmqrt.f | 278 |
1 files changed, 168 insertions, 110 deletions
diff --git a/SRC/ztpmqrt.f b/SRC/ztpmqrt.f index ffb0ce25..8b2a55bd 100644 --- a/SRC/ztpmqrt.f +++ b/SRC/ztpmqrt.f @@ -1,132 +1,190 @@ - SUBROUTINE ZTPMQRT( SIDE, TRANS, M, N, K, L, NB, V, LDV, T, LDT, - $ A, LDA, B, LDB, WORK, INFO ) - IMPLICIT NONE +*> \brief \b ZTPMQRT * -* -- LAPACK routine (version 3.?) -- -* -- LAPACK is a software package provided by Univ. of Tennessee, -- -* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd. -- -* -- July 2011 -- +* =========== DOCUMENTATION =========== * -* .. Scalar Arguments .. - CHARACTER SIDE, TRANS - INTEGER INFO, K, LDV, LDA, LDB, M, N, L, NB, LDT -* .. -* .. Array Arguments .. - COMPLEX*16 V( LDV, * ), A( LDA, * ), B( LDB, * ), T( LDT, * ), - $ WORK( * ) -* .. +* Online html documentation available at +* http://www.netlib.org/lapack/explore-html/ +* +* Definition +* ========== * +* SUBROUTINE ZTPMQRT( SIDE, TRANS, M, N, K, L, NB, V, LDV, T, LDT, +* A, LDA, B, LDB, WORK, INFO ) +* +* .. Scalar Arguments .. +* CHARACTER SIDE, TRANS +* INTEGER INFO, K, LDV, LDA, LDB, M, N, L, NB, LDT +* .. +* .. Array Arguments .. +* COMPLEX*16 V( LDV, * ), A( LDA, * ), B( LDB, * ), T( LDT, * ), +* $ WORK( * ) +* .. +* * Purpose * ======= * -* ZTPMQRT applies a complex orthogonal matrix Q obtained from a -* "triangular-pentagonal" complex block reflector H to a general -* complex matrix C, which consists of two blocks A and B. +*>\details \b Purpose: +*>\verbatim +*> +*> ZTPMQRT applies a complex orthogonal matrix Q obtained from a +*> "triangular-pentagonal" complex block reflector H to a general +*> complex matrix C, which consists of two blocks A and B. +*> +*>\endverbatim * * Arguments * ========= * -* SIDE (input) CHARACTER*1 -* = 'L': apply Q or Q**H from the Left; -* = 'R': apply Q or Q**H from the Right. -* -* TRANS (input) CHARACTER*1 -* = 'N': No transpose, apply Q; -* = 'C': Transpose, apply Q**H. -* -* M (input) INTEGER -* The number of rows of the matrix B. M >= 0. -* -* N (input) INTEGER -* The number of columns of the matrix B. N >= 0. -* -* K (input) INTEGER -* The number of elementary reflectors whose product defines -* the matrix Q. -* -* L (input) INTEGER -* The order of the trapezoidal part of V. -* K >= L >= 0. See Further Details. -* -* NB (input) INTEGER -* The block size used for the storage of T. K >= NB >= 1. -* This must be the same value of NB used to generate T -* in CTPQRT. -* -* V (input) COMPLEX*16 array, dimension (LDA,K) -* The i-th column must contain the vector which defines the -* elementary reflector H(i), for i = 1,2,...,k, as returned by -* CTPQRT in B. See Further Details. -* -* LDA (input) INTEGER -* The leading dimension of the array A. -* If SIDE = 'L', LDA >= max(1,M); -* if SIDE = 'R', LDA >= max(1,N). -* -* T (input) COMPLEX*16 array, dimension (LDT,K) -* The upper triangular factors of the block reflectors -* as returned by CTPQRT, stored as a NB-by-K matrix. -* -* LDT (input) INTEGER -* The leading dimension of the array T. LDT >= NB. -* -* A (input/output) COMPLEX*16 array, dimension -* (LDA,N) if SIDE = 'L' or -* (LDA,K) if SIDE = 'R' -* On entry, the K-by-N or M-by-K matrix A. -* On exit, A is overwritten by the corresponding block of -* Q*C or Q**H*C or C*Q or C*Q**H. See Further Details. -* -* LDA (input) INTEGER -* The leading dimension of the array A. -* If SIDE = 'L', LDC >= max(1,K); -* If SIDE = 'R', LDC >= max(1,M). +*> \param[in] SIDE +*> \verbatim +*> SIDE is CHARACTER*1 +*> = 'L': apply Q or Q**H from the Left; +*> = 'R': apply Q or Q**H from the Right. +*> \endverbatim +*> +*> \param[in] TRANS +*> \verbatim +*> TRANS is CHARACTER*1 +*> = 'N': No transpose, apply Q; +*> = 'C': Transpose, apply Q**H. +*> \endverbatim +*> +*> \param[in] M +*> \verbatim +*> M is INTEGER +*> The number of rows of the matrix B. M >= 0. +*> \endverbatim +*> +*> \param[in] N +*> \verbatim +*> N is INTEGER +*> The number of columns of the matrix B. N >= 0. +*> +*> \param[in] K +*> \verbatim +*> K is INTEGER +*> The number of elementary reflectors whose product defines +*> the matrix Q. +*> \endverbatim +*> \endverbatim +*> +* +* Authors +* ======= * -* B (input/output) COMPLEX*16 array, dimension (LDB,N) -* On entry, the M-by-N matrix B. -* On exit, B is overwritten by the corresponding block of -* Q*C or Q**H*C or C*Q or C*Q**H. See Further Details. +*> \author Univ. of Tennessee +*> \author Univ. of California Berkeley +*> \author Univ. of Colorado Denver +*> \author NAG Ltd. * -* LDB (input) INTEGER -* The leading dimension of the array B. -* LDB >= max(1,M). +*> \date November 2011 * -* WORK (workspace/output) COMPLEX*16 array. The dimension of WORK is -* N*NB if SIDE = 'L', or M*NB if SIDE = 'R'. +*> \ingroup complex16OTHERcomputational * -* INFO (output) INTEGER -* = 0: successful exit -* < 0: if INFO = -i, the i-th argument had an illegal value * * Further Details * =============== +*>\details \b Further \b Details +*> \verbatim +* K >= L >= 0. See Further Details. +*> +*> NB (input) INTEGER +*> The block size used for the storage of T. K >= NB >= 1. +*> This must be the same value of NB used to generate T +*> in CTPQRT. +*> +*> V (input) COMPLEX*16 array, dimension (LDA,K) +*> The i-th column must contain the vector which defines the +*> elementary reflector H(i), for i = 1,2,...,k, as returned by +*> CTPQRT in B. See Further Details. +*> +*> LDA (input) INTEGER +*> The leading dimension of the array A. +*> If SIDE = 'L', LDA >= max(1,M); +*> if SIDE = 'R', LDA >= max(1,N). +*> +*> T (input) COMPLEX*16 array, dimension (LDT,K) +*> The upper triangular factors of the block reflectors +*> as returned by CTPQRT, stored as a NB-by-K matrix. +*> +*> LDT (input) INTEGER +*> The leading dimension of the array T. LDT >= NB. +*> +*> A (input/output) COMPLEX*16 array, dimension +*> (LDA,N) if SIDE = 'L' or +*> (LDA,K) if SIDE = 'R' +*> On entry, the K-by-N or M-by-K matrix A. +*> On exit, A is overwritten by the corresponding block of +*> Q*C or Q**H*C or C*Q or C*Q**H. See Further Details. +*> +*> LDA (input) INTEGER +*> The leading dimension of the array A. +*> If SIDE = 'L', LDC >= max(1,K); +*> If SIDE = 'R', LDC >= max(1,M). +*> +*> B (input/output) COMPLEX*16 array, dimension (LDB,N) +*> On entry, the M-by-N matrix B. +*> On exit, B is overwritten by the corresponding block of +*> Q*C or Q**H*C or C*Q or C*Q**H. See Further Details. +*> +*> LDB (input) INTEGER +*> The leading dimension of the array B. +*> LDB >= max(1,M). +*> +*> WORK (workspace/output) COMPLEX*16 array. The dimension of WORK is +*> N*NB if SIDE = 'L', or M*NB if SIDE = 'R'. +*> +*> INFO (output) INTEGER +*> = 0: successful exit +*> < 0: if INFO = -i, the i-th argument had an illegal value +*> +*> +*> The columns of the pentagonal matrix V contain the elementary reflectors +*> H(1), H(2), ..., H(K); V is composed of a rectangular block V1 and a +*> trapezoidal block V2: +*> +*> V = [V1] +*> [V2]. +*> +*> The size of the trapezoidal block V2 is determined by the parameter L, +*> where 0 <= L <= K; V2 is upper trapezoidal, consisting of the first L +*> rows of a K-by-K upper triangular matrix. If L=K, V2 is upper triangular; +*> if L=0, there is no trapezoidal block, hence V = V1 is rectangular. +*> +*> If SIDE = 'L': C = [A] where A is K-by-N, B is M-by-N and V is M-by-K. +*> [B] +*> +*> If SIDE = 'R': C = [A B] where A is M-by-K, B is M-by-N and V is N-by-K. +*> +*> The complex orthogonal matrix Q is formed from V and T. +*> +*> If TRANS='N' and SIDE='L', C is on exit replaced with Q * C. +*> +*> If TRANS='C' and SIDE='L', C is on exit replaced with Q**H * C. +*> +*> If TRANS='N' and SIDE='R', C is on exit replaced with C * Q. +*> +*> If TRANS='C' and SIDE='R', C is on exit replaced with C * Q**H. +*> +*> \endverbatim +*> +* ===================================================================== + SUBROUTINE ZTPMQRT( SIDE, TRANS, M, N, K, L, NB, V, LDV, T, LDT, + $ A, LDA, B, LDB, WORK, INFO ) * -* The columns of the pentagonal matrix V contain the elementary reflectors -* H(1), H(2), ..., H(K); V is composed of a rectangular block V1 and a -* trapezoidal block V2: -* -* V = [V1] -* [V2]. -* -* The size of the trapezoidal block V2 is determined by the parameter L, -* where 0 <= L <= K; V2 is upper trapezoidal, consisting of the first L -* rows of a K-by-K upper triangular matrix. If L=K, V2 is upper triangular; -* if L=0, there is no trapezoidal block, hence V = V1 is rectangular. -* -* If SIDE = 'L': C = [A] where A is K-by-N, B is M-by-N and V is M-by-K. -* [B] -* -* If SIDE = 'R': C = [A B] where A is M-by-K, B is M-by-N and V is N-by-K. -* -* The complex orthogonal matrix Q is formed from V and T. -* -* If TRANS='N' and SIDE='L', C is on exit replaced with Q * C. -* -* If TRANS='C' and SIDE='L', C is on exit replaced with Q**H * C. -* -* If TRANS='N' and SIDE='R', C is on exit replaced with C * Q. +* -- LAPACK computational routine (version 3.?) -- +* -- LAPACK is a software package provided by Univ. of Tennessee, -- +* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- +* November 2011 * -* If TRANS='C' and SIDE='R', C is on exit replaced with C * Q**H. +* .. Scalar Arguments .. + CHARACTER SIDE, TRANS + INTEGER INFO, K, LDV, LDA, LDB, M, N, L, NB, LDT +* .. +* .. Array Arguments .. + COMPLEX*16 V( LDV, * ), A( LDA, * ), B( LDB, * ), T( LDT, * ), + $ WORK( * ) +* .. * * ===================================================================== * |