diff options
author | Julien Langou <julien.langou@ucdenver.edu> | 2017-03-23 15:56:18 -0400 |
---|---|---|
committer | Julien Langou <julien.langou@ucdenver.edu> | 2017-03-23 15:56:18 -0400 |
commit | 33b899f4eaff19eee091c0c0d81361b74923dc04 (patch) | |
tree | 431c9757d8ee9bcc2e7fc82b38283a5ffe23bbdf /SRC | |
parent | e38b42afcd22481b780cdccae45756dd3117edd8 (diff) | |
parent | 4506e47617765c0e13d9d9fb3c6458dbfeda8dbb (diff) | |
download | lapack-33b899f4eaff19eee091c0c0d81361b74923dc04.tar.gz lapack-33b899f4eaff19eee091c0c0d81361b74923dc04.tar.bz2 lapack-33b899f4eaff19eee091c0c0d81361b74923dc04.zip |
Merge branch 'master' of https://github.com/Reference-LAPACK/lapack
Diffstat (limited to 'SRC')
58 files changed, 284 insertions, 271 deletions
diff --git a/SRC/Makefile b/SRC/Makefile index d47f7308..5d6fe72c 100644 --- a/SRC/Makefile +++ b/SRC/Makefile @@ -44,7 +44,7 @@ include ../make.inc # and is created at the next higher directory level. # # To remove the object files after the library is created, enter -# make clean +# make cleanobj # On some systems, you can force the source files to be recompiled by # entering (for example) # make single FRC=FRC @@ -508,27 +508,23 @@ endif all: ../$(LAPACKLIB) ../$(LAPACKLIB): $(ALLOBJ) $(ALLXOBJ) $(DEPRECATED) - $(ARCH) $(ARCHFLAGS) $@ $(ALLOBJ) $(ALLXOBJ) $(DEPRECATED) + $(ARCH) $(ARCHFLAGS) $@ $^ $(RANLIB) $@ single: $(SLASRC) $(DSLASRC) $(SXLASRC) $(SCLAUX) $(ALLAUX) - $(ARCH) $(ARCHFLAGS) ../$(LAPACKLIB) $(SLASRC) $(DSLASRC) \ - $(SXLASRC) $(SCLAUX) $(ALLAUX) + $(ARCH) $(ARCHFLAGS) ../$(LAPACKLIB) $^ $(RANLIB) ../$(LAPACKLIB) complex: $(CLASRC) $(ZCLASRC) $(CXLASRC) $(SCLAUX) $(ALLAUX) - $(ARCH) $(ARCHFLAGS) ../$(LAPACKLIB) $(CLASRC) $(ZCLASRC) \ - $(CXLASRC) $(SCLAUX) $(ALLAUX) + $(ARCH) $(ARCHFLAGS) ../$(LAPACKLIB) $^ $(RANLIB) ../$(LAPACKLIB) double: $(DLASRC) $(DSLASRC) $(DXLASRC) $(DZLAUX) $(ALLAUX) - $(ARCH) $(ARCHFLAGS) ../$(LAPACKLIB) $(DLASRC) $(DSLASRC) \ - $(DXLASRC) $(DZLAUX) $(ALLAUX) + $(ARCH) $(ARCHFLAGS) ../$(LAPACKLIB) $^ $(RANLIB) ../$(LAPACKLIB) complex16: $(ZLASRC) $(ZCLASRC) $(ZXLASRC) $(DZLAUX) $(ALLAUX) - $(ARCH) $(ARCHFLAGS) ../$(LAPACKLIB) $(ZLASRC) $(ZCLASRC) \ - $(ZXLASRC) $(DZLAUX) $(ALLAUX) + $(ARCH) $(ARCHFLAGS) ../$(LAPACKLIB) $^ $(RANLIB) ../$(LAPACKLIB) $(ALLAUX): $(FRC) @@ -550,12 +546,14 @@ endif FRC: @FRC=$(FRC) -clean: +clean: cleanobj cleanlib +cleanobj: rm -f *.o DEPRECATED/*.o +cleanlib: + rm -f ../$(LAPACKLIB) .f.o: $(FORTRAN) $(OPTS) -c -o $@ $< - .F.o: $(FORTRAN) $(OPTS) -c -o $@ $< diff --git a/SRC/VARIANTS/Makefile b/SRC/VARIANTS/Makefile index 6db97e95..9f141075 100644 --- a/SRC/VARIANTS/Makefile +++ b/SRC/VARIANTS/Makefile @@ -17,8 +17,6 @@ include ../../make.inc # 1065-1081. http://dx.doi.org/10.1137/S0895479896297744 ####################################################################### -VARIANTSDIR = LIB - CHOLRL = cholesky/RL/cpotrf.o cholesky/RL/dpotrf.o cholesky/RL/spotrf.o cholesky/RL/zpotrf.o CHOLTOP = cholesky/TOP/cpotrf.o cholesky/TOP/dpotrf.o cholesky/TOP/spotrf.o cholesky/TOP/zpotrf.o @@ -32,36 +30,37 @@ LUREC = lu/REC/cgetrf.o lu/REC/dgetrf.o lu/REC/sgetrf.o lu/REC/zgetrf.o QRLL = qr/LL/cgeqrf.o qr/LL/dgeqrf.o qr/LL/sgeqrf.o qr/LL/zgeqrf.o qr/LL/sceil.o -all: cholrl choltop lucr lull lurec qrll +all: cholrl.a choltop.a lucr.a lull.a lurec.a qrll.a -cholrl: $(CHOLRL) - $(ARCH) $(ARCHFLAGS) $(VARIANTSDIR)/cholrl.a $(CHOLRL) - $(RANLIB) $(VARIANTSDIR)/cholrl.a +cholrl.a: $(CHOLRL) + $(ARCH) $(ARCHFLAGS) $@ $^ + $(RANLIB) $@ -choltop: $(CHOLTOP) - $(ARCH) $(ARCHFLAGS) $(VARIANTSDIR)/choltop.a $(CHOLTOP) - $(RANLIB) $(VARIANTSDIR)/choltop.a +choltop.a: $(CHOLTOP) + $(ARCH) $(ARCHFLAGS) $@ $^ + $(RANLIB) $@ -lucr: $(LUCR) - $(ARCH) $(ARCHFLAGS) $(VARIANTSDIR)/lucr.a $(LUCR) - $(RANLIB) $(VARIANTSDIR)/lucr.a +lucr.a: $(LUCR) + $(ARCH) $(ARCHFLAGS) $@ $^ + $(RANLIB) $@ -lull: $(LULL) - $(ARCH) $(ARCHFLAGS) $(VARIANTSDIR)/lull.a $(LULL) - $(RANLIB) $(VARIANTSDIR)/lull.a +lull.a: $(LULL) + $(ARCH) $(ARCHFLAGS) $@ $^ + $(RANLIB) $@ -lurec: $(LUREC) - $(ARCH) $(ARCHFLAGS) $(VARIANTSDIR)/lurec.a $(LUREC) - $(RANLIB) $(VARIANTSDIR)/lurec.a +lurec.a: $(LUREC) + $(ARCH) $(ARCHFLAGS) $@ $^ + $(RANLIB) $@ -qrll: $(QRLL) - $(ARCH) $(ARCHFLAGS) $(VARIANTSDIR)/qrll.a $(QRLL) - $(RANLIB) $(VARIANTSDIR)/qrll.a +qrll.a: $(QRLL) + $(ARCH) $(ARCHFLAGS) $@ $^ + $(RANLIB) $@ +clean: cleanobj cleanlib +cleanobj: + rm -f $(CHOLRL) $(CHOLTOP) $(LUCR) $(LULL) $(LUREC) $(QRLL) +cleanlib: + rm -f *.a .f.o: $(FORTRAN) $(OPTS) -c -o $@ $< - -clean: - rm -f $(CHOLRL) $(CHOLTOP) $(LUCR) $(LULL) $(LUREC) $(QRLL) \ - $(VARIANTSDIR)/*.a diff --git a/SRC/VARIANTS/README b/SRC/VARIANTS/README index c2062151..4d301cc6 100644 --- a/SRC/VARIANTS/README +++ b/SRC/VARIANTS/README @@ -1,5 +1,5 @@ - =============== - = README File = + =============== + = README File = =============== This README File is for the LAPACK driver variants. @@ -34,10 +34,10 @@ References:For a more detailed description please refer to ========= These variants are compiled by default in the build process but they are not tested by default. -The build process creates one new library per variants in the four arithmetics (singel/double/comple/double complex). -The libraries are in the SRC/VARIANTS/LIB directory. +The build process creates one new library per variants in the four arithmetics (single real/double real/single complex/double complex). +The libraries are in the SRC/VARIANTS directory. -Corresponding libraries created in SRC/VARIANTS/LIB: +Corresponding libraries created in SRC/VARIANTS: - LU Crout : lucr.a - LU Left Looking : lull.a - LU Sivan Toledo's recursive : lurec.a @@ -73,7 +73,7 @@ Default using LU Right Looking version: Using LU Left Looking version: $(FORTRAN) -c myprog.f - $(FORTRAN) -o myexe myprog.o $(PATH TO LAPACK/SRC/VARIANTS/LIB)/lull.a $(LAPACKLIB) $(BLASLIB) + $(FORTRAN) -o myexe myprog.o $(PATH TO LAPACK/SRC/VARIANTS)/lull.a $(LAPACKLIB) $(BLASLIB) =========== = SUPPORT = diff --git a/SRC/cgelqt.f b/SRC/cgelqt.f index 5bead535..8037ac59 100644 --- a/SRC/cgelqt.f +++ b/SRC/cgelqt.f @@ -101,8 +101,8 @@ *> *> \verbatim *> -*> The matrix V stores the elementary reflectors H(i) in the i-th column -*> below the diagonal. For example, if M=5 and N=3, the matrix V is +*> The matrix V stores the elementary reflectors H(i) in the i-th row +*> above the diagonal. For example, if M=5 and N=3, the matrix V is *> *> V = ( 1 v1 v1 v1 v1 ) *> ( 1 v2 v2 v2 ) @@ -111,11 +111,11 @@ *> *> where the vi's represent the vectors which define H(i), which are returned *> 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 -*> 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 -*> 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 +*> Let K=MIN(M,N). The number of blocks is B = ceiling(K/MB), where each +*> block is of order MB except for the last block, which is of order +*> IB = K - (B-1)*MB. For each of the B blocks, a upper triangular block +*> reflector factor is computed: T1, T2, ..., TB. The MB-by-MB (and IB-by-IB +*> for the last block) T's are stored in the MB-by-K matrix T as *> *> T = (T1 T2 ... TB). *> \endverbatim diff --git a/SRC/cgelqt3.f b/SRC/cgelqt3.f index 751cb613..48a0e74d 100644 --- a/SRC/cgelqt3.f +++ b/SRC/cgelqt3.f @@ -92,8 +92,8 @@ *> *> \verbatim *> -*> The matrix V stores the elementary reflectors H(i) in the i-th column -*> below the diagonal. For example, if M=5 and N=3, the matrix V is +*> The matrix V stores the elementary reflectors H(i) in the i-th row +*> above the diagonal. For example, if M=5 and N=3, the matrix V is *> *> V = ( 1 v1 v1 v1 v1 ) *> ( 1 v2 v2 v2 ) diff --git a/SRC/cgemlqt.f b/SRC/cgemlqt.f index e4c991a7..24319057 100644 --- a/SRC/cgemlqt.f +++ b/SRC/cgemlqt.f @@ -18,16 +18,16 @@ *> *> \verbatim *> -*> CGEMQRT overwrites the general real M-by-N matrix C with +*> CGEMLQT overwrites the general real M-by-N matrix C with *> *> SIDE = 'L' SIDE = 'R' *> TRANS = 'N': Q C C Q -*> TRANS = 'C': Q**C C C Q**C +*> TRANS = 'C': Q**H C C Q**H *> *> where Q is a complex orthogonal matrix defined as the product of K *> elementary reflectors: *> -*> Q = H(1) H(2) . . . H(K) = I - V C V**C +*> Q = H(1) H(2) . . . H(K) = I - V T V**H *> *> generated using the compact WY representation as returned by CGELQT. *> @@ -40,15 +40,15 @@ *> \param[in] SIDE *> \verbatim *> SIDE is CHARACTER*1 -*> = 'L': apply Q or Q**C from the Left; -*> = 'R': apply Q or Q**C from the Right. +*> = '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**C. +*> = 'C': Transpose, apply Q**H. *> \endverbatim *> *> \param[in] M @@ -82,7 +82,9 @@ *> *> \param[in] V *> \verbatim -*> V is COMPLEX array, dimension (LDV,K) +*> V is COMPLEX array, dimension +*> (LDV,M) if SIDE = 'L', +*> (LDV,N) if SIDE = 'R' *> The i-th row must contain the vector which defines the *> elementary reflector H(i), for i = 1,2,...,k, as returned by *> DGELQT in the first K rows of its array argument A. @@ -91,16 +93,14 @@ *> \param[in] LDV *> \verbatim *> LDV is INTEGER -*> The leading dimension of the array V. -*> If SIDE = 'L', LDA >= max(1,M); -*> if SIDE = 'R', LDA >= max(1,N). +*> The leading dimension of the array V. LDV >= max(1,K). *> \endverbatim *> *> \param[in] T *> \verbatim *> T is COMPLEX array, dimension (LDT,K) *> The upper triangular factors of the block reflectors -*> as returned by DGELQT, stored as a MB-by-M matrix. +*> as returned by DGELQT, stored as a MB-by-K matrix. *> \endverbatim *> *> \param[in] LDT @@ -113,7 +113,7 @@ *> \verbatim *> C is COMPLEX array, dimension (LDC,N) *> On entry, the M-by-N matrix C. -*> On exit, C is overwritten by Q C, Q**C C, C Q**C or C Q. +*> On exit, C is overwritten by Q C, Q**H C, C Q**H or C Q. *> \endverbatim *> *> \param[in] LDC diff --git a/SRC/cgeqrt.f b/SRC/cgeqrt.f index 2b8bb698..b6a31967 100644 --- a/SRC/cgeqrt.f +++ b/SRC/cgeqrt.f @@ -133,7 +133,7 @@ *> 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 *> 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-K matrix T as *> *> T = (T1 T2 ... TB). *> \endverbatim diff --git a/SRC/cgetsls.f b/SRC/cgetsls.f index 56fb8063..f5910b32 100644 --- a/SRC/cgetsls.f +++ b/SRC/cgetsls.f @@ -53,7 +53,7 @@ *> \verbatim *> TRANS is CHARACTER*1 *> = 'N': the linear system involves A; -*> = 'C': the linear system involves A**C. +*> = 'C': the linear system involves A**H. *> \endverbatim *> *> \param[in] M diff --git a/SRC/chbev_2stage.f b/SRC/chbev_2stage.f index ff115062..5ced8c97 100644 --- a/SRC/chbev_2stage.f +++ b/SRC/chbev_2stage.f @@ -247,7 +247,7 @@ EXTERNAL LSAME, SLAMCH, CLANHB, ILAENV * .. * .. External Subroutines .. - EXTERNAL SSCAL, SSTERF, XERBLA, CLASCL, CSTEQR + EXTERNAL SSCAL, SSTERF, XERBLA, CLASCL, CSTEQR, $ CHETRD_2STAGE * .. * .. Intrinsic Functions .. diff --git a/SRC/chetrs_aa.f b/SRC/chetrs_aa.f index f6640c50..94bd94ef 100644 --- a/SRC/chetrs_aa.f +++ b/SRC/chetrs_aa.f @@ -66,7 +66,7 @@ *> of the matrix B. NRHS >= 0. *> \endverbatim *> -*> \param[in,out] A +*> \param[in] A *> \verbatim *> A is COMPLEX array, dimension (LDA,N) *> Details of factors computed by CHETRF_AA. diff --git a/SRC/clamswlq.f b/SRC/clamswlq.f index fd19f0af..569397a7 100644 --- a/SRC/clamswlq.f +++ b/SRC/clamswlq.f @@ -23,7 +23,7 @@ *> *> SIDE = 'L' SIDE = 'R' *> TRANS = 'N': Q * C C * Q -*> TRANS = 'T': Q**T * C C * Q**T +*> TRANS = 'T': Q**H * C C * Q**H *> where Q is a real orthogonal matrix defined as the product of blocked *> elementary reflectors computed by short wide LQ *> factorization (CLASWLQ) @@ -35,21 +35,21 @@ *> \param[in] SIDE *> \verbatim *> SIDE is CHARACTER*1 -*> = 'L': apply Q or Q**T from the Left; -*> = 'R': apply Q or Q**T from the Right. +*> = '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; -*> = 'T': Transpose, apply Q**T. +*> = 'C': Transpose, apply Q**H. *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER -*> The number of rows of the matrix A. M >=0. +*> The number of rows of the matrix C. M >=0. *> \endverbatim *> *> \param[in] N @@ -88,12 +88,14 @@ *> *> \endverbatim *> -*> \param[in,out] A +*> \param[in] A *> \verbatim -*> A is COMPLEX array, dimension (LDA,K) +*> A is COMPLEX array, dimension +*> (LDA,M) if SIDE = 'L', +*> (LDA,N) if SIDE = 'R' *> The i-th row must contain the vector which defines the blocked *> elementary reflector H(i), for i = 1,2,...,k, as returned by -*> DLASWLQ in the first k rows of its array argument A. +*> CLASWLQ in the first k rows of its array argument A. *> \endverbatim *> *> \param[in] LDA @@ -123,7 +125,7 @@ *> \verbatim *> C is COMPLEX array, dimension (LDC,N) *> On entry, the M-by-N matrix C. -*> On exit, C is overwritten by Q*C or Q**T*C or C*Q**T or C*Q. +*> On exit, C is overwritten by Q*C or Q**H*C or C*Q**H or C*Q. *> \endverbatim *> *> \param[in] LDC @@ -219,7 +221,7 @@ * .. * .. Local Scalars .. LOGICAL LEFT, RIGHT, TRAN, NOTRAN, LQUERY - INTEGER I, II, KK, LW , CTR + INTEGER I, II, KK, LW, CTR * .. * .. External Functions .. LOGICAL LSAME diff --git a/SRC/clamtsqr.f b/SRC/clamtsqr.f index a787caab..69acac54 100644 --- a/SRC/clamtsqr.f +++ b/SRC/clamtsqr.f @@ -23,7 +23,7 @@ *> *> SIDE = 'L' SIDE = 'R' *> TRANS = 'N': Q * C C * Q -*> TRANS = 'C': Q**C * C C * Q**C +*> TRANS = 'C': Q**H * C C * Q**H *> where Q is a real orthogonal matrix defined as the product *> of blocked elementary reflectors computed by tall skinny *> QR factorization (CLATSQR) @@ -35,15 +35,15 @@ *> \param[in] SIDE *> \verbatim *> SIDE is CHARACTER*1 -*> = 'L': apply Q or Q**T from the Left; -*> = 'R': apply Q or Q**T from the Right. +*> = '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': Conjugate Transpose, apply Q**C. +*> = 'C': Conjugate Transpose, apply Q**H. *> \endverbatim *> *> \param[in] M @@ -81,7 +81,7 @@ *> N >= NB >= 1. *> \endverbatim *> -*> \param[in,out] A +*> \param[in] A *> \verbatim *> A is COMPLEX array, dimension (LDA,K) *> The i-th column must contain the vector which defines the @@ -117,7 +117,7 @@ *> \verbatim *> C is COMPLEX array, dimension (LDC,N) *> On entry, the M-by-N matrix C. -*> On exit, C is overwritten by Q*C or Q**T*C or C*Q**T or C*Q. +*> On exit, C is overwritten by Q*C or Q**H*C or C*Q**H or C*Q. *> \endverbatim *> *> \param[in] LDC diff --git a/SRC/claswlq.f b/SRC/claswlq.f index 8b77142d..4c23d3ba 100644 --- a/SRC/claswlq.f +++ b/SRC/claswlq.f @@ -55,7 +55,7 @@ *> \verbatim *> A is COMPLEX array, dimension (LDA,N) *> On entry, the M-by-N matrix A. -*> On exit, the elements on and bleow the diagonal +*> On exit, the elements on and below the diagonal *> of the array contain the N-by-N lower triangular matrix L; *> the elements above the diagonal represent Q by the rows *> of blocked V (see Further Details). diff --git a/SRC/claswp.f b/SRC/claswp.f index 8b5632c8..94fa7732 100644 --- a/SRC/claswp.f +++ b/SRC/claswp.f @@ -79,14 +79,15 @@ *> \verbatim *> IPIV is INTEGER array, dimension (K1+(K2-K1)*abs(INCX)) *> The vector of pivot indices. Only the elements in positions -*> K1 through K1+(K2-K1)*INCX of IPIV are accessed. -*> IPIV(K) = L implies rows K and L are to be interchanged. +*> K1 through K1+(K2-K1)*abs(INCX) of IPIV are accessed. +*> IPIV(K1+(K-K1)*abs(INCX)) = L implies rows K and L are to be +*> interchanged. *> \endverbatim *> *> \param[in] INCX *> \verbatim *> INCX is INTEGER -*> The increment between successive values of IPIV. If IPIV +*> The increment between successive values of IPIV. If INCX *> is negative, the pivots are applied in reverse order. *> \endverbatim * @@ -135,7 +136,8 @@ * .. * .. Executable Statements .. * -* Interchange row I with row IPIV(I) for each of rows K1 through K2. +* Interchange row I with row IPIV(K1+(I-K1)*abs(INCX)) for each of rows +* K1 through K2. * IF( INCX.GT.0 ) THEN IX0 = K1 diff --git a/SRC/csytrs_aa.f b/SRC/csytrs_aa.f index 6fedf912..2e2713d6 100644 --- a/SRC/csytrs_aa.f +++ b/SRC/csytrs_aa.f @@ -66,7 +66,7 @@ *> of the matrix B. NRHS >= 0. *> \endverbatim *> -*> \param[in,out] A +*> \param[in] A *> \verbatim *> A is REAL array, dimension (LDA,N) *> Details of factors computed by CSYTRF_AA. diff --git a/SRC/ctplqt.f b/SRC/ctplqt.f index 322b6dc5..4aa96499 100644 --- a/SRC/ctplqt.f +++ b/SRC/ctplqt.f @@ -56,8 +56,8 @@ *> *> \param[in,out] A *> \verbatim -*> A is COMPLEX array, dimension (LDA,N) -*> On entry, the lower triangular N-by-N matrix A. +*> A is COMPLEX array, dimension (LDA,M) +*> On entry, the lower triangular M-by-M matrix A. *> On exit, the elements on and below the diagonal of the array *> contain the lower triangular matrix L. *> \endverbatim @@ -65,7 +65,7 @@ *> \param[in] LDA *> \verbatim *> LDA is INTEGER -*> The leading dimension of the array A. LDA >= max(1,N). +*> The leading dimension of the array A. LDA >= max(1,M). *> \endverbatim *> *> \param[in,out] B @@ -129,26 +129,26 @@ *> C = [ A ] [ B ] *> *> -*> where A is an lower triangular N-by-N matrix, and B is M-by-N pentagonal +*> where A is an lower triangular M-by-M matrix, and B is M-by-N pentagonal *> matrix consisting of a M-by-(N-L) rectangular matrix B1 on left of a M-by-L *> upper trapezoidal matrix B2: *> [ B ] = [ B1 ] [ B2 ] *> [ B1 ] <- M-by-(N-L) rectangular -*> [ B2 ] <- M-by-L upper trapezoidal. +*> [ B2 ] <- M-by-L lower trapezoidal. *> *> The lower trapezoidal matrix B2 consists of the first L columns of a -*> N-by-N lower triangular matrix, where 0 <= L <= MIN(M,N). If L=0, +*> M-by-M lower triangular matrix, where 0 <= L <= MIN(M,N). If L=0, *> B is rectangular M-by-N; if M=L=N, B is lower triangular. *> *> The matrix W stores the elementary reflectors H(i) in the i-th row *> above the diagonal (of A) in the M-by-(M+N) input matrix C *> [ C ] = [ A ] [ B ] -*> [ A ] <- lower triangular N-by-N +*> [ A ] <- lower triangular M-by-M *> [ B ] <- M-by-N pentagonal *> *> so that W can be represented as *> [ W ] = [ I ] [ V ] -*> [ I ] <- identity, N-by-N +*> [ I ] <- identity, M-by-M *> [ V ] <- M-by-N, same form as B. *> *> Thus, all of information needed for W is contained on exit in B, which diff --git a/SRC/ctplqt2.f b/SRC/ctplqt2.f index 1c9b128e..d1e28849 100644 --- a/SRC/ctplqt2.f +++ b/SRC/ctplqt2.f @@ -48,7 +48,7 @@ *> *> \param[in,out] A *> \verbatim -*> A is COMPLEX array, dimension (LDA,N) +*> A is COMPLEX array, dimension (LDA,M) *> On entry, the lower triangular M-by-M matrix A. *> On exit, the elements on and below the diagonal of the array *> contain the lower triangular matrix L. @@ -57,7 +57,7 @@ *> \param[in] LDA *> \verbatim *> LDA is INTEGER -*> The leading dimension of the array A. LDA >= max(1,N). +*> The leading dimension of the array A. LDA >= max(1,M). *> \endverbatim *> *> \param[in,out] B @@ -116,7 +116,7 @@ *> C = [ A ][ B ] *> *> -*> where A is an lower triangular N-by-N matrix, and B is M-by-N pentagonal +*> where A is an lower triangular M-by-M matrix, and B is M-by-N pentagonal *> matrix consisting of a M-by-(N-L) rectangular matrix B1 left of a M-by-L *> upper trapezoidal matrix B2: *> @@ -132,13 +132,13 @@ *> above the diagonal (of A) in the M-by-(M+N) input matrix C *> *> C = [ A ][ B ] -*> [ A ] <- lower triangular N-by-N +*> [ A ] <- lower triangular M-by-M *> [ B ] <- M-by-N pentagonal *> *> so that W can be represented as *> *> W = [ I ][ V ] -*> [ I ] <- identity, N-by-N +*> [ I ] <- identity, M-by-M *> [ V ] <- M-by-N, same form as B. *> *> Thus, all of information needed for W is contained on exit in B, which diff --git a/SRC/ctpmlqt.f b/SRC/ctpmlqt.f index b326d6a2..76414fc0 100644 --- a/SRC/ctpmlqt.f +++ b/SRC/ctpmlqt.f @@ -19,9 +19,9 @@ *> *> \verbatim *> -*> CTPMQRT applies a complex orthogonal matrix Q obtained from a -*> "triangular-pentagonal" real block reflector H to a general -*> real matrix C, which consists of two blocks A and B. +*> CTPMLQT 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: @@ -30,15 +30,15 @@ *> \param[in] SIDE *> \verbatim *> SIDE is CHARACTER*1 -*> = 'L': apply Q or Q**C from the Left; -*> = 'R': apply Q or Q**C from the Right. +*> = '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**C. +*> = 'C': Transpose, apply Q**H. *> \endverbatim *> *> \param[in] M @@ -111,7 +111,7 @@ *> (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**C*C or C*Q or C*Q**C. See Further Details. +*> Q*C or Q**H*C or C*Q or C*Q**H. See Further Details. *> \endverbatim *> *> \param[in] LDA @@ -127,7 +127,7 @@ *> B is COMPLEX 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**C*C or C*Q or C*Q**C. See Further Details. +*> Q*C or Q**H*C or C*Q or C*Q**H. See Further Details. *> \endverbatim *> *> \param[in] LDB @@ -188,11 +188,11 @@ *> *> 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**C * 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**C. +*> If TRANS='C' and SIDE='R', C is on exit replaced with C * Q**H. *> \endverbatim *> * ===================================================================== diff --git a/SRC/dgelqt.f b/SRC/dgelqt.f index b11e9d6e..8f8d40c4 100644 --- a/SRC/dgelqt.f +++ b/SRC/dgelqt.f @@ -117,8 +117,8 @@ *> *> \verbatim *> -*> The matrix V stores the elementary reflectors H(i) in the i-th column -*> below the diagonal. For example, if M=5 and N=3, the matrix V is +*> The matrix V stores the elementary reflectors H(i) in the i-th row +*> above the diagonal. For example, if M=5 and N=3, the matrix V is *> *> V = ( 1 v1 v1 v1 v1 ) *> ( 1 v2 v2 v2 ) @@ -127,11 +127,11 @@ *> *> where the vi's represent the vectors which define H(i), which are returned *> 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 -*> 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 -*> 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 +*> Let K=MIN(M,N). The number of blocks is B = ceiling(K/MB), where each +*> block is of order MB except for the last block, which is of order +*> IB = K - (B-1)*MB. For each of the B blocks, a upper triangular block +*> reflector factor is computed: T1, T2, ..., TB. The MB-by-MB (and IB-by-IB +*> for the last block) T's are stored in the MB-by-K matrix T as *> *> T = (T1 T2 ... TB). *> \endverbatim diff --git a/SRC/dgelqt3.f b/SRC/dgelqt3.f index b0bb242a..9970b09e 100644 --- a/SRC/dgelqt3.f +++ b/SRC/dgelqt3.f @@ -109,8 +109,8 @@ *> *> \verbatim *> -*> The matrix V stores the elementary reflectors H(i) in the i-th column -*> below the diagonal. For example, if M=5 and N=3, the matrix V is +*> The matrix V stores the elementary reflectors H(i) in the i-th row +*> above the diagonal. For example, if M=5 and N=3, the matrix V is *> *> V = ( 1 v1 v1 v1 v1 ) *> ( 1 v2 v2 v2 ) diff --git a/SRC/dgemlqt.f b/SRC/dgemlqt.f index 41a517a2..fad4c453 100644 --- a/SRC/dgemlqt.f +++ b/SRC/dgemlqt.f @@ -6,7 +6,7 @@ * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly -*> Download DGEMQRT + dependencies +*> Download DGEMLQT + dependencies *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dgemlqt.f"> *> [TGZ]</a> *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dgemlqt.f"> @@ -35,7 +35,7 @@ *> *> \verbatim *> -*> DGEMQRT overwrites the general real M-by-N matrix C with +*> DGEMLQT overwrites the general real M-by-N matrix C with *> *> SIDE = 'L' SIDE = 'R' *> TRANS = 'N': Q C C Q @@ -99,7 +99,9 @@ *> *> \param[in] V *> \verbatim -*> V is DOUBLE PRECISION array, dimension (LDV,K) +*> V is DOUBLE PRECISION array, dimension +*> (LDV,M) if SIDE = 'L', +*> (LDV,N) if SIDE = 'R' *> The i-th row must contain the vector which defines the *> elementary reflector H(i), for i = 1,2,...,k, as returned by *> DGELQT in the first K rows of its array argument A. @@ -108,16 +110,14 @@ *> \param[in] LDV *> \verbatim *> LDV is INTEGER -*> The leading dimension of the array V. -*> If SIDE = 'L', LDA >= max(1,M); -*> if SIDE = 'R', LDA >= max(1,N). +*> The leading dimension of the array V. LDV >= max(1,K). *> \endverbatim *> *> \param[in] T *> \verbatim *> T is DOUBLE PRECISION array, dimension (LDT,K) *> The upper triangular factors of the block reflectors -*> as returned by DGELQT, stored as a MB-by-M matrix. +*> as returned by DGELQT, stored as a MB-by-K matrix. *> \endverbatim *> *> \param[in] LDT diff --git a/SRC/dgeqrt.f b/SRC/dgeqrt.f index 6856bac0..33d079e1 100644 --- a/SRC/dgeqrt.f +++ b/SRC/dgeqrt.f @@ -133,7 +133,7 @@ *> 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 *> 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-K matrix T as *> *> T = (T1 T2 ... TB). *> \endverbatim diff --git a/SRC/dlamswlq.f b/SRC/dlamswlq.f index 8dc6df8a..8430ca19 100644 --- a/SRC/dlamswlq.f +++ b/SRC/dlamswlq.f @@ -49,7 +49,7 @@ *> \param[in] M *> \verbatim *> M is INTEGER -*> The number of rows of the matrix A. M >=0. +*> The number of rows of the matrix C. M >=0. *> \endverbatim *> *> \param[in] N @@ -88,9 +88,11 @@ *> *> \endverbatim *> -*> \param[in,out] A +*> \param[in] A *> \verbatim -*> A is DOUBLE PRECISION array, dimension (LDA,K) +*> A is DOUBLE PRECISION array, dimension +*> (LDA,M) if SIDE = 'L', +*> (LDA,N) if SIDE = 'R' *> The i-th row must contain the vector which defines the blocked *> elementary reflector H(i), for i = 1,2,...,k, as returned by *> DLASWLQ in the first k rows of its array argument A. diff --git a/SRC/dlamtsqr.f b/SRC/dlamtsqr.f index 9ba45901..d4801645 100644 --- a/SRC/dlamtsqr.f +++ b/SRC/dlamtsqr.f @@ -81,7 +81,7 @@ *> N >= NB >= 1. *> \endverbatim *> -*> \param[in,out] A +*> \param[in] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,K) *> The i-th column must contain the vector which defines the diff --git a/SRC/dlaswlq.f b/SRC/dlaswlq.f index 2830711a..41f99992 100644 --- a/SRC/dlaswlq.f +++ b/SRC/dlaswlq.f @@ -55,7 +55,7 @@ *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) *> On entry, the M-by-N matrix A. -*> On exit, the elements on and bleow the diagonal +*> On exit, the elements on and below the diagonal *> of the array contain the N-by-N lower triangular matrix L; *> the elements above the diagonal represent Q by the rows *> of blocked V (see Further Details). diff --git a/SRC/dlaswp.f b/SRC/dlaswp.f index 2c526ffa..575b5c48 100644 --- a/SRC/dlaswp.f +++ b/SRC/dlaswp.f @@ -79,14 +79,15 @@ *> \verbatim *> IPIV is INTEGER array, dimension (K1+(K2-K1)*abs(INCX)) *> The vector of pivot indices. Only the elements in positions -*> K1 through K1+(K2-K1)*INCX of IPIV are accessed. -*> IPIV(K) = L implies rows K and L are to be interchanged. +*> K1 through K1+(K2-K1)*abs(INCX) of IPIV are accessed. +*> IPIV(K1+(K-K1)*abs(INCX)) = L implies rows K and L are to be +*> interchanged. *> \endverbatim *> *> \param[in] INCX *> \verbatim *> INCX is INTEGER -*> The increment between successive values of IPIV. If IPIV +*> The increment between successive values of IPIV. If INCX *> is negative, the pivots are applied in reverse order. *> \endverbatim * @@ -135,7 +136,8 @@ * .. * .. Executable Statements .. * -* Interchange row I with row IPIV(I) for each of rows K1 through K2. +* Interchange row I with row IPIV(K1+(I-K1)*abs(INCX)) for each of rows +* K1 through K2. * IF( INCX.GT.0 ) THEN IX0 = K1 diff --git a/SRC/dsbev_2stage.f b/SRC/dsbev_2stage.f index 12ce3337..c66b4049 100644 --- a/SRC/dsbev_2stage.f +++ b/SRC/dsbev_2stage.f @@ -239,7 +239,7 @@ EXTERNAL LSAME, DLAMCH, DLANSB, ILAENV * .. * .. External Subroutines .. - EXTERNAL DLASCL, DSCAL, DSTEQR, DSTERF, XERBLA + EXTERNAL DLASCL, DSCAL, DSTEQR, DSTERF, XERBLA, $ DSYTRD_SB2ST * .. * .. Intrinsic Functions .. diff --git a/SRC/dsytrs_aa.f b/SRC/dsytrs_aa.f index b572581e..0dafa895 100644 --- a/SRC/dsytrs_aa.f +++ b/SRC/dsytrs_aa.f @@ -66,7 +66,7 @@ *> of the matrix B. NRHS >= 0. *> \endverbatim *> -*> \param[in,out] A +*> \param[in] A *> \verbatim *> A is DOUBLE PRECISION array, dimension (LDA,N) *> Details of factors computed by DSYTRF_AA. diff --git a/SRC/dtplqt.f b/SRC/dtplqt.f index b312c501..a5a92744 100644 --- a/SRC/dtplqt.f +++ b/SRC/dtplqt.f @@ -73,8 +73,8 @@ *> *> \param[in,out] A *> \verbatim -*> A is DOUBLE PRECISION array, dimension (LDA,N) -*> On entry, the lower triangular N-by-N matrix A. +*> A is DOUBLE PRECISION array, dimension (LDA,M) +*> On entry, the lower triangular M-by-M matrix A. *> On exit, the elements on and below the diagonal of the array *> contain the lower triangular matrix L. *> \endverbatim @@ -82,7 +82,7 @@ *> \param[in] LDA *> \verbatim *> LDA is INTEGER -*> The leading dimension of the array A. LDA >= max(1,N). +*> The leading dimension of the array A. LDA >= max(1,M). *> \endverbatim *> *> \param[in,out] B @@ -146,26 +146,26 @@ *> C = [ A ] [ B ] *> *> -*> where A is an lower triangular N-by-N matrix, and B is M-by-N pentagonal +*> where A is an lower triangular M-by-M matrix, and B is M-by-N pentagonal *> matrix consisting of a M-by-(N-L) rectangular matrix B1 on left of a M-by-L *> upper trapezoidal matrix B2: *> [ B ] = [ B1 ] [ B2 ] *> [ B1 ] <- M-by-(N-L) rectangular -*> [ B2 ] <- M-by-L upper trapezoidal. +*> [ B2 ] <- M-by-L lower trapezoidal. *> *> The lower trapezoidal matrix B2 consists of the first L columns of a -*> N-by-N lower triangular matrix, where 0 <= L <= MIN(M,N). If L=0, +*> M-by-M lower triangular matrix, where 0 <= L <= MIN(M,N). If L=0, *> B is rectangular M-by-N; if M=L=N, B is lower triangular. *> *> The matrix W stores the elementary reflectors H(i) in the i-th row *> above the diagonal (of A) in the M-by-(M+N) input matrix C *> [ C ] = [ A ] [ B ] -*> [ A ] <- lower triangular N-by-N +*> [ A ] <- lower triangular M-by-M *> [ B ] <- M-by-N pentagonal *> *> so that W can be represented as *> [ W ] = [ I ] [ V ] -*> [ I ] <- identity, N-by-N +*> [ I ] <- identity, M-by-M *> [ V ] <- M-by-N, same form as B. *> *> Thus, all of information needed for W is contained on exit in B, which diff --git a/SRC/dtplqt2.f b/SRC/dtplqt2.f index 7e87e6c5..beb5ad6b 100644 --- a/SRC/dtplqt2.f +++ b/SRC/dtplqt2.f @@ -65,7 +65,7 @@ *> *> \param[in,out] A *> \verbatim -*> A is DOUBLE PRECISION array, dimension (LDA,N) +*> A is DOUBLE PRECISION array, dimension (LDA,M) *> On entry, the lower triangular M-by-M matrix A. *> On exit, the elements on and below the diagonal of the array *> contain the lower triangular matrix L. @@ -74,7 +74,7 @@ *> \param[in] LDA *> \verbatim *> LDA is INTEGER -*> The leading dimension of the array A. LDA >= max(1,N). +*> The leading dimension of the array A. LDA >= max(1,M). *> \endverbatim *> *> \param[in,out] B @@ -133,7 +133,7 @@ *> C = [ A ][ B ] *> *> -*> where A is an lower triangular N-by-N matrix, and B is M-by-N pentagonal +*> where A is an lower triangular M-by-M matrix, and B is M-by-N pentagonal *> matrix consisting of a M-by-(N-L) rectangular matrix B1 left of a M-by-L *> upper trapezoidal matrix B2: *> @@ -149,13 +149,13 @@ *> above the diagonal (of A) in the M-by-(M+N) input matrix C *> *> C = [ A ][ B ] -*> [ A ] <- lower triangular N-by-N +*> [ A ] <- lower triangular M-by-M *> [ B ] <- M-by-N pentagonal *> *> so that W can be represented as *> *> W = [ I ][ V ] -*> [ I ] <- identity, N-by-N +*> [ I ] <- identity, M-by-M *> [ V ] <- M-by-N, same form as B. *> *> Thus, all of information needed for W is contained on exit in B, which diff --git a/SRC/sgelqt.f b/SRC/sgelqt.f index 786255d1..f9b21098 100644 --- a/SRC/sgelqt.f +++ b/SRC/sgelqt.f @@ -100,8 +100,8 @@ *> *> \verbatim *> -*> The matrix V stores the elementary reflectors H(i) in the i-th column -*> below the diagonal. For example, if M=5 and N=3, the matrix V is +*> The matrix V stores the elementary reflectors H(i) in the i-th row +*> above the diagonal. For example, if M=5 and N=3, the matrix V is *> *> V = ( 1 v1 v1 v1 v1 ) *> ( 1 v2 v2 v2 ) @@ -110,11 +110,11 @@ *> *> where the vi's represent the vectors which define H(i), which are returned *> 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 -*> 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 -*> 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 +*> Let K=MIN(M,N). The number of blocks is B = ceiling(K/MB), where each +*> block is of order MB except for the last block, which is of order +*> IB = K - (B-1)*MB. For each of the B blocks, a upper triangular block +*> reflector factor is computed: T1, T2, ..., TB. The MB-by-MB (and IB-by-IB +*> for the last block) T's are stored in the MB-by-K matrix T as *> *> T = (T1 T2 ... TB). *> \endverbatim diff --git a/SRC/sgelqt3.f b/SRC/sgelqt3.f index b94fc278..9b888746 100644 --- a/SRC/sgelqt3.f +++ b/SRC/sgelqt3.f @@ -92,8 +92,8 @@ *> *> \verbatim *> -*> The matrix V stores the elementary reflectors H(i) in the i-th column -*> below the diagonal. For example, if M=5 and N=3, the matrix V is +*> The matrix V stores the elementary reflectors H(i) in the i-th row +*> above the diagonal. For example, if M=5 and N=3, the matrix V is *> *> V = ( 1 v1 v1 v1 v1 ) *> ( 1 v2 v2 v2 ) diff --git a/SRC/sgemlqt.f b/SRC/sgemlqt.f index 47074342..dc842244 100644 --- a/SRC/sgemlqt.f +++ b/SRC/sgemlqt.f @@ -18,7 +18,7 @@ *> *> \verbatim *> -*> DGEMQRT overwrites the general real M-by-N matrix C with +*> DGEMLQT overwrites the general real M-by-N matrix C with *> *> SIDE = 'L' SIDE = 'R' *> TRANS = 'N': Q C C Q @@ -82,7 +82,9 @@ *> *> \param[in] V *> \verbatim -*> V is REAL array, dimension (LDV,K) +*> V is REAL array, dimension +*> (LDV,M) if SIDE = 'L', +*> (LDV,N) if SIDE = 'R' *> The i-th row must contain the vector which defines the *> elementary reflector H(i), for i = 1,2,...,k, as returned by *> DGELQT in the first K rows of its array argument A. @@ -91,16 +93,14 @@ *> \param[in] LDV *> \verbatim *> LDV is INTEGER -*> The leading dimension of the array V. -*> If SIDE = 'L', LDA >= max(1,M); -*> if SIDE = 'R', LDA >= max(1,N). +*> The leading dimension of the array V. LDV >= max(1,K). *> \endverbatim *> *> \param[in] T *> \verbatim *> T is REAL array, dimension (LDT,K) *> The upper triangular factors of the block reflectors -*> as returned by DGELQT, stored as a MB-by-M matrix. +*> as returned by DGELQT, stored as a MB-by-K matrix. *> \endverbatim *> *> \param[in] LDT diff --git a/SRC/sgeqrt.f b/SRC/sgeqrt.f index d8b9fade..ed8bac49 100644 --- a/SRC/sgeqrt.f +++ b/SRC/sgeqrt.f @@ -133,7 +133,7 @@ *> 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 *> 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-K matrix T as *> *> T = (T1 T2 ... TB). *> \endverbatim diff --git a/SRC/slamswlq.f b/SRC/slamswlq.f index ccdddbb3..f3238b6d 100644 --- a/SRC/slamswlq.f +++ b/SRC/slamswlq.f @@ -18,7 +18,7 @@ *> *> \verbatim *> -*> DLAMQRTS overwrites the general real M-by-N matrix C with +*> SLAMSWLQ overwrites the general real M-by-N matrix C with *> *> *> SIDE = 'L' SIDE = 'R' @@ -26,7 +26,7 @@ *> TRANS = 'T': Q**T * C C * Q**T *> where Q is a real orthogonal matrix defined as the product of blocked *> elementary reflectors computed by short wide LQ -*> factorization (DLASWLQ) +*> factorization (SLASWLQ) *> \endverbatim * * Arguments: @@ -49,7 +49,7 @@ *> \param[in] M *> \verbatim *> M is INTEGER -*> The number of rows of the matrix A. M >=0. +*> The number of rows of the matrix C. M >=0. *> \endverbatim *> *> \param[in] N @@ -88,12 +88,14 @@ *> *> \endverbatim *> -*> \param[in,out] A +*> \param[in] A *> \verbatim -*> A is REAL array, dimension (LDA,K) +*> A is REAL array, dimension +*> (LDA,M) if SIDE = 'L', +*> (LDA,N) if SIDE = 'R' *> The i-th row must contain the vector which defines the blocked *> elementary reflector H(i), for i = 1,2,...,k, as returned by -*> DLASWLQ in the first k rows of its array argument A. +*> SLASWLQ in the first k rows of its array argument A. *> \endverbatim *> *> \param[in] LDA diff --git a/SRC/slamtsqr.f b/SRC/slamtsqr.f index 747481da..cbcace69 100644 --- a/SRC/slamtsqr.f +++ b/SRC/slamtsqr.f @@ -81,7 +81,7 @@ *> N >= NB >= 1. *> \endverbatim *> -*> \param[in,out] A +*> \param[in] A *> \verbatim *> A is REAL array, dimension (LDA,K) *> The i-th column must contain the vector which defines the diff --git a/SRC/slaswlq.f b/SRC/slaswlq.f index efd28a6b..565ce2b6 100644 --- a/SRC/slaswlq.f +++ b/SRC/slaswlq.f @@ -55,7 +55,7 @@ *> \verbatim *> A is REAL array, dimension (LDA,N) *> On entry, the M-by-N matrix A. -*> On exit, the elements on and bleow the diagonal +*> On exit, the elements on and below the diagonal *> of the array contain the N-by-N lower triangular matrix L; *> the elements above the diagonal represent Q by the rows *> of blocked V (see Further Details). diff --git a/SRC/slaswp.f b/SRC/slaswp.f index ad12a3a3..9a17fdfd 100644 --- a/SRC/slaswp.f +++ b/SRC/slaswp.f @@ -79,14 +79,15 @@ *> \verbatim *> IPIV is INTEGER array, dimension (K1+(K2-K1)*abs(INCX)) *> The vector of pivot indices. Only the elements in positions -*> K1 through K1+(K2-K1)*INCX of IPIV are accessed. -*> IPIV(K) = L implies rows K and L are to be interchanged. +*> K1 through K1+(K2-K1)*abs(INCX) of IPIV are accessed. +*> IPIV(K1+(K-K1)*abs(INCX)) = L implies rows K and L are to be +*> interchanged. *> \endverbatim *> *> \param[in] INCX *> \verbatim *> INCX is INTEGER -*> The increment between successive values of IPIV. If IPIV +*> The increment between successive values of IPIV. If INCX *> is negative, the pivots are applied in reverse order. *> \endverbatim * @@ -135,7 +136,8 @@ * .. * .. Executable Statements .. * -* Interchange row I with row IPIV(I) for each of rows K1 through K2. +* Interchange row I with row IPIV(K1+(I-K1)*abs(INCX)) for each of rows +* K1 through K2. * IF( INCX.GT.0 ) THEN IX0 = K1 diff --git a/SRC/ssbev_2stage.f b/SRC/ssbev_2stage.f index fc6360c5..f77368ab 100644 --- a/SRC/ssbev_2stage.f +++ b/SRC/ssbev_2stage.f @@ -239,7 +239,7 @@ EXTERNAL LSAME, SLAMCH, SLANSB, ILAENV * .. * .. External Subroutines .. - EXTERNAL SLASCL, SSCAL, SSTEQR, SSTERF, XERBLA + EXTERNAL SLASCL, SSCAL, SSTEQR, SSTERF, XERBLA, $ SSYTRD_SB2ST * .. * .. Intrinsic Functions .. diff --git a/SRC/ssytrs_aa.f b/SRC/ssytrs_aa.f index 6d084736..aa2f9cfc 100644 --- a/SRC/ssytrs_aa.f +++ b/SRC/ssytrs_aa.f @@ -66,7 +66,7 @@ *> of the matrix B. NRHS >= 0. *> \endverbatim *> -*> \param[in,out] A +*> \param[in] A *> \verbatim *> A is REAL array, dimension (LDA,N) *> Details of factors computed by SSYTRF_AA. diff --git a/SRC/stplqt.f b/SRC/stplqt.f index e3c37abf..482ce568 100644 --- a/SRC/stplqt.f +++ b/SRC/stplqt.f @@ -73,8 +73,8 @@ *> *> \param[in,out] A *> \verbatim -*> A is REAL array, dimension (LDA,N) -*> On entry, the lower triangular N-by-N matrix A. +*> A is REAL array, dimension (LDA,M) +*> On entry, the lower triangular M-by-M matrix A. *> On exit, the elements on and below the diagonal of the array *> contain the lower triangular matrix L. *> \endverbatim @@ -82,7 +82,7 @@ *> \param[in] LDA *> \verbatim *> LDA is INTEGER -*> The leading dimension of the array A. LDA >= max(1,N). +*> The leading dimension of the array A. LDA >= max(1,M). *> \endverbatim *> *> \param[in,out] B @@ -146,26 +146,26 @@ *> C = [ A ] [ B ] *> *> -*> where A is an lower triangular N-by-N matrix, and B is M-by-N pentagonal +*> where A is an lower triangular M-by-M matrix, and B is M-by-N pentagonal *> matrix consisting of a M-by-(N-L) rectangular matrix B1 on left of a M-by-L *> upper trapezoidal matrix B2: *> [ B ] = [ B1 ] [ B2 ] *> [ B1 ] <- M-by-(N-L) rectangular -*> [ B2 ] <- M-by-L upper trapezoidal. +*> [ B2 ] <- M-by-L lower trapezoidal. *> *> The lower trapezoidal matrix B2 consists of the first L columns of a -*> N-by-N lower triangular matrix, where 0 <= L <= MIN(M,N). If L=0, +*> M-by-M lower triangular matrix, where 0 <= L <= MIN(M,N). If L=0, *> B is rectangular M-by-N; if M=L=N, B is lower triangular. *> *> The matrix W stores the elementary reflectors H(i) in the i-th row *> above the diagonal (of A) in the M-by-(M+N) input matrix C *> [ C ] = [ A ] [ B ] -*> [ A ] <- lower triangular N-by-N +*> [ A ] <- lower triangular M-by-M *> [ B ] <- M-by-N pentagonal *> *> so that W can be represented as *> [ W ] = [ I ] [ V ] -*> [ I ] <- identity, N-by-N +*> [ I ] <- identity, M-by-M *> [ V ] <- M-by-N, same form as B. *> *> Thus, all of information needed for W is contained on exit in B, which diff --git a/SRC/stplqt2.f b/SRC/stplqt2.f index f1b8e030..b16738fb 100644 --- a/SRC/stplqt2.f +++ b/SRC/stplqt2.f @@ -65,7 +65,7 @@ *> *> \param[in,out] A *> \verbatim -*> A is REAL array, dimension (LDA,N) +*> A is REAL array, dimension (LDA,M) *> On entry, the lower triangular M-by-M matrix A. *> On exit, the elements on and below the diagonal of the array *> contain the lower triangular matrix L. @@ -74,7 +74,7 @@ *> \param[in] LDA *> \verbatim *> LDA is INTEGER -*> The leading dimension of the array A. LDA >= max(1,N). +*> The leading dimension of the array A. LDA >= max(1,M). *> \endverbatim *> *> \param[in,out] B @@ -133,7 +133,7 @@ *> C = [ A ][ B ] *> *> -*> where A is an lower triangular N-by-N matrix, and B is M-by-N pentagonal +*> where A is an lower triangular M-by-M matrix, and B is M-by-N pentagonal *> matrix consisting of a M-by-(N-L) rectangular matrix B1 left of a M-by-L *> upper trapezoidal matrix B2: *> @@ -149,13 +149,13 @@ *> above the diagonal (of A) in the M-by-(M+N) input matrix C *> *> C = [ A ][ B ] -*> [ A ] <- lower triangular N-by-N +*> [ A ] <- lower triangular M-by-M *> [ B ] <- M-by-N pentagonal *> *> so that W can be represented as *> *> W = [ I ][ V ] -*> [ I ] <- identity, N-by-N +*> [ I ] <- identity, M-by-M *> [ V ] <- M-by-N, same form as B. *> *> Thus, all of information needed for W is contained on exit in B, which diff --git a/SRC/zgelqt.f b/SRC/zgelqt.f index c8afd1c5..54da169b 100644 --- a/SRC/zgelqt.f +++ b/SRC/zgelqt.f @@ -117,8 +117,8 @@ *> *> \verbatim *> -*> The matrix V stores the elementary reflectors H(i) in the i-th column -*> below the diagonal. For example, if M=5 and N=3, the matrix V is +*> The matrix V stores the elementary reflectors H(i) in the i-th row +*> above the diagonal. For example, if M=5 and N=3, the matrix V is *> *> V = ( 1 v1 v1 v1 v1 ) *> ( 1 v2 v2 v2 ) @@ -127,11 +127,11 @@ *> *> where the vi's represent the vectors which define H(i), which are returned *> 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 -*> 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 -*> 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 +*> Let K=MIN(M,N). The number of blocks is B = ceiling(K/MB), where each +*> block is of order MB except for the last block, which is of order +*> IB = K - (B-1)*MB. For each of the B blocks, a upper triangular block +*> reflector factor is computed: T1, T2, ..., TB. The MB-by-MB (and IB-by-IB +*> for the last block) T's are stored in the MB-by-K matrix T as *> *> T = (T1 T2 ... TB). *> \endverbatim diff --git a/SRC/zgelqt3.f b/SRC/zgelqt3.f index 14063544..438238a1 100644 --- a/SRC/zgelqt3.f +++ b/SRC/zgelqt3.f @@ -109,8 +109,8 @@ *> *> \verbatim *> -*> The matrix V stores the elementary reflectors H(i) in the i-th column -*> below the diagonal. For example, if M=5 and N=3, the matrix V is +*> The matrix V stores the elementary reflectors H(i) in the i-th row +*> above the diagonal. For example, if M=5 and N=3, the matrix V is *> *> V = ( 1 v1 v1 v1 v1 ) *> ( 1 v2 v2 v2 ) diff --git a/SRC/zgemlqt.f b/SRC/zgemlqt.f index 569713c7..e75b24b0 100644 --- a/SRC/zgemlqt.f +++ b/SRC/zgemlqt.f @@ -6,7 +6,7 @@ * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly -*> Download DGEMQRT + dependencies +*> Download DGEMLQT + dependencies *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/zgemlqt.f"> *> [TGZ]</a> *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/zgemlqt.f"> @@ -35,16 +35,16 @@ *> *> \verbatim *> -*> ZGEMQRT overwrites the general real M-by-N matrix C with +*> ZGEMLQT overwrites the general real M-by-N matrix C with *> *> SIDE = 'L' SIDE = 'R' *> TRANS = 'N': Q C C Q -*> TRANS = 'C': Q**C C C Q**C +*> TRANS = 'C': Q**H C C Q**H *> *> where Q is a complex orthogonal matrix defined as the product of K *> elementary reflectors: *> -*> Q = H(1) H(2) . . . H(K) = I - V C V**C +*> Q = H(1) H(2) . . . H(K) = I - V T V**H *> *> generated using the compact WY representation as returned by ZGELQT. *> @@ -57,15 +57,15 @@ *> \param[in] SIDE *> \verbatim *> SIDE is CHARACTER*1 -*> = 'L': apply Q or Q**C from the Left; -*> = 'R': apply Q or Q**C from the Right. +*> = '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**C. +*> = 'C': Transpose, apply Q**H. *> \endverbatim *> *> \param[in] M @@ -99,7 +99,9 @@ *> *> \param[in] V *> \verbatim -*> V is COMPLEX*16 array, dimension (LDV,K) +*> V is COMPLEX*16 array, dimension +*> (LDV,M) if SIDE = 'L', +*> (LDV,N) if SIDE = 'R' *> The i-th row must contain the vector which defines the *> elementary reflector H(i), for i = 1,2,...,k, as returned by *> DGELQT in the first K rows of its array argument A. @@ -108,16 +110,14 @@ *> \param[in] LDV *> \verbatim *> LDV is INTEGER -*> The leading dimension of the array V. -*> If SIDE = 'L', LDA >= max(1,M); -*> if SIDE = 'R', LDA >= max(1,N). +*> The leading dimension of the array V. LDV >= max(1,K). *> \endverbatim *> *> \param[in] T *> \verbatim *> T is COMPLEX*16 array, dimension (LDT,K) *> The upper triangular factors of the block reflectors -*> as returned by DGELQT, stored as a MB-by-M matrix. +*> as returned by DGELQT, stored as a MB-by-K matrix. *> \endverbatim *> *> \param[in] LDT @@ -130,7 +130,7 @@ *> \verbatim *> C is COMPLEX*16 array, dimension (LDC,N) *> On entry, the M-by-N matrix C. -*> On exit, C is overwritten by Q C, Q**C C, C Q**C or C Q. +*> On exit, C is overwritten by Q C, Q**H C, C Q**H or C Q. *> \endverbatim *> *> \param[in] LDC diff --git a/SRC/zgeqrt.f b/SRC/zgeqrt.f index 4f872c5b..910f803e 100644 --- a/SRC/zgeqrt.f +++ b/SRC/zgeqrt.f @@ -133,7 +133,7 @@ *> 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 *> 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-K matrix T as *> *> T = (T1 T2 ... TB). *> \endverbatim diff --git a/SRC/zgetsls.f b/SRC/zgetsls.f index 40ad10e8..e9ff84fd 100644 --- a/SRC/zgetsls.f +++ b/SRC/zgetsls.f @@ -53,7 +53,7 @@ *> \verbatim *> TRANS is CHARACTER*1 *> = 'N': the linear system involves A; -*> = 'C': the linear system involves A**C. +*> = 'C': the linear system involves A**H. *> \endverbatim *> *> \param[in] M diff --git a/SRC/zhbev_2stage.f b/SRC/zhbev_2stage.f index e30162dc..bb0faefd 100644 --- a/SRC/zhbev_2stage.f +++ b/SRC/zhbev_2stage.f @@ -247,7 +247,7 @@ EXTERNAL LSAME, DLAMCH, ZLANHB, ILAENV * .. * .. External Subroutines .. - EXTERNAL DSCAL, DSTERF, XERBLA, ZLASCL, ZSTEQR + EXTERNAL DSCAL, DSTERF, XERBLA, ZLASCL, ZSTEQR, $ ZHETRD_2STAGE * .. * .. Intrinsic Functions .. diff --git a/SRC/zhetrs_aa.f b/SRC/zhetrs_aa.f index 044bf4cf..af8e6762 100644 --- a/SRC/zhetrs_aa.f +++ b/SRC/zhetrs_aa.f @@ -67,7 +67,7 @@ *> of the matrix B. NRHS >= 0. *> \endverbatim *> -*> \param[in,out] A +*> \param[in] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> Details of factors computed by ZHETRF_AA. diff --git a/SRC/zlamswlq.f b/SRC/zlamswlq.f index 8068114b..9cd529bf 100644 --- a/SRC/zlamswlq.f +++ b/SRC/zlamswlq.f @@ -23,7 +23,7 @@ *> *> SIDE = 'L' SIDE = 'R' *> TRANS = 'N': Q * C C * Q -*> TRANS = 'T': Q**T * C C * Q**T +*> TRANS = 'C': Q**H * C C * Q**H *> where Q is a real orthogonal matrix defined as the product of blocked *> elementary reflectors computed by short wide LQ *> factorization (ZLASWLQ) @@ -35,21 +35,21 @@ *> \param[in] SIDE *> \verbatim *> SIDE is CHARACTER*1 -*> = 'L': apply Q or Q**T from the Left; -*> = 'R': apply Q or Q**T from the Right. +*> = '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; -*> = 'T': Transpose, apply Q**T. +*> = 'C': Conjugate Transpose, apply Q**H. *> \endverbatim *> *> \param[in] M *> \verbatim *> M is INTEGER -*> The number of rows of the matrix A. M >=0. +*> The number of rows of the matrix C. M >=0. *> \endverbatim *> *> \param[in] N @@ -88,12 +88,14 @@ *> *> \endverbatim *> -*> \param[in,out] A +*> \param[in] A *> \verbatim -*> A is COMPLEX*16 array, dimension (LDA,K) +*> A is COMPLEX*16 array, dimension +*> (LDA,M) if SIDE = 'L', +*> (LDA,N) if SIDE = 'R' *> The i-th row must contain the vector which defines the blocked *> elementary reflector H(i), for i = 1,2,...,k, as returned by -*> DLASWLQ in the first k rows of its array argument A. +*> ZLASWLQ in the first k rows of its array argument A. *> \endverbatim *> *> \param[in] LDA @@ -123,7 +125,7 @@ *> \verbatim *> C is COMPLEX*16 array, dimension (LDC,N) *> On entry, the M-by-N matrix C. -*> On exit, C is overwritten by Q*C or Q**T*C or C*Q**T or C*Q. +*> On exit, C is overwritten by Q*C or Q**H*C or C*Q**H or C*Q. *> \endverbatim *> *> \param[in] LDC @@ -207,7 +209,7 @@ * * .. Scalar Arguments .. CHARACTER SIDE, TRANS - INTEGER INFO, LDA, M, N, K, MB, NB, LDT, LWORK, LDC, LW + INTEGER INFO, LDA, M, N, K, MB, NB, LDT, LWORK, LDC * .. * .. Array Arguments .. COMPLEX*16 A( LDA, * ), WORK( * ), C(LDC, * ), @@ -219,7 +221,7 @@ * .. * .. Local Scalars .. LOGICAL LEFT, RIGHT, TRAN, NOTRAN, LQUERY - INTEGER I, II, KK, CTR + INTEGER I, II, KK, LW, CTR * .. * .. External Functions .. LOGICAL LSAME diff --git a/SRC/zlamtsqr.f b/SRC/zlamtsqr.f index 855083a6..79370017 100644 --- a/SRC/zlamtsqr.f +++ b/SRC/zlamtsqr.f @@ -23,7 +23,7 @@ *> *> SIDE = 'L' SIDE = 'R' *> TRANS = 'N': Q * C C * Q -*> TRANS = 'C': Q**C * C C * Q**C +*> TRANS = 'C': Q**H * C C * Q**H *> where Q is a real orthogonal matrix defined as the product *> of blocked elementary reflectors computed by tall skinny *> QR factorization (ZLATSQR) @@ -35,15 +35,15 @@ *> \param[in] SIDE *> \verbatim *> SIDE is CHARACTER*1 -*> = 'L': apply Q or Q**T from the Left; -*> = 'R': apply Q or Q**T from the Right. +*> = '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': Conjugate Transpose, apply Q**C. +*> = 'C': Conjugate Transpose, apply Q**H. *> \endverbatim *> *> \param[in] M @@ -81,7 +81,7 @@ *> N >= NB >= 1. *> \endverbatim *> -*> \param[in,out] A +*> \param[in] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,K) *> The i-th column must contain the vector which defines the @@ -117,7 +117,7 @@ *> \verbatim *> C is COMPLEX*16 array, dimension (LDC,N) *> On entry, the M-by-N matrix C. -*> On exit, C is overwritten by Q*C or Q**T*C or C*Q**T or C*Q. +*> On exit, C is overwritten by Q*C or Q**H*C or C*Q**H or C*Q. *> \endverbatim *> *> \param[in] LDC diff --git a/SRC/zlaswlq.f b/SRC/zlaswlq.f index cd7bcc3a..96f86f18 100644 --- a/SRC/zlaswlq.f +++ b/SRC/zlaswlq.f @@ -55,7 +55,7 @@ *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> On entry, the M-by-N matrix A. -*> On exit, the elements on and bleow the diagonal +*> On exit, the elements on and below the diagonal *> of the array contain the N-by-N lower triangular matrix L; *> the elements above the diagonal represent Q by the rows *> of blocked V (see Further Details). diff --git a/SRC/zlaswp.f b/SRC/zlaswp.f index 81ceba2c..1333e26f 100644 --- a/SRC/zlaswp.f +++ b/SRC/zlaswp.f @@ -79,14 +79,15 @@ *> \verbatim *> IPIV is INTEGER array, dimension (K1+(K2-K1)*abs(INCX)) *> The vector of pivot indices. Only the elements in positions -*> K1 through K1+(K2-K1)*INCX of IPIV are accessed. -*> IPIV(K) = L implies rows K and L are to be interchanged. +*> K1 through K1+(K2-K1)*abs(INCX) of IPIV are accessed. +*> IPIV(K1+(K-K1)*abs(INCX)) = L implies rows K and L are to be +*> interchanged. *> \endverbatim *> *> \param[in] INCX *> \verbatim *> INCX is INTEGER -*> The increment between successive values of IPIV. If IPIV +*> The increment between successive values of IPIV. If INCX *> is negative, the pivots are applied in reverse order. *> \endverbatim * @@ -135,7 +136,8 @@ * .. * .. Executable Statements .. * -* Interchange row I with row IPIV(I) for each of rows K1 through K2. +* Interchange row I with row IPIV(K1+(I-K1)*abs(INCX)) for each of rows +* K1 through K2. * IF( INCX.GT.0 ) THEN IX0 = K1 diff --git a/SRC/zsytrs_aa.f b/SRC/zsytrs_aa.f index b3c9b9ec..fc7f31e6 100644 --- a/SRC/zsytrs_aa.f +++ b/SRC/zsytrs_aa.f @@ -66,7 +66,7 @@ *> of the matrix B. NRHS >= 0. *> \endverbatim *> -*> \param[in,out] A +*> \param[in] A *> \verbatim *> A is COMPLEX*16 array, dimension (LDA,N) *> Details of factors computed by ZSYTRF_AA. diff --git a/SRC/ztplqt.f b/SRC/ztplqt.f index 28740208..a9a035ef 100644 --- a/SRC/ztplqt.f +++ b/SRC/ztplqt.f @@ -73,8 +73,8 @@ *> *> \param[in,out] A *> \verbatim -*> A is COMPLEX*16 array, dimension (LDA,N) -*> On entry, the lower triangular N-by-N matrix A. +*> A is COMPLEX*16 array, dimension (LDA,M) +*> On entry, the lower triangular M-by-M matrix A. *> On exit, the elements on and below the diagonal of the array *> contain the lower triangular matrix L. *> \endverbatim @@ -82,7 +82,7 @@ *> \param[in] LDA *> \verbatim *> LDA is INTEGER -*> The leading dimension of the array A. LDA >= max(1,N). +*> The leading dimension of the array A. LDA >= max(1,M). *> \endverbatim *> *> \param[in,out] B @@ -146,26 +146,26 @@ *> C = [ A ] [ B ] *> *> -*> where A is an lower triangular N-by-N matrix, and B is M-by-N pentagonal +*> where A is an lower triangular M-by-M matrix, and B is M-by-N pentagonal *> matrix consisting of a M-by-(N-L) rectangular matrix B1 on left of a M-by-L *> upper trapezoidal matrix B2: *> [ B ] = [ B1 ] [ B2 ] *> [ B1 ] <- M-by-(N-L) rectangular -*> [ B2 ] <- M-by-L upper trapezoidal. +*> [ B2 ] <- M-by-L lower trapezoidal. *> *> The lower trapezoidal matrix B2 consists of the first L columns of a -*> N-by-N lower triangular matrix, where 0 <= L <= MIN(M,N). If L=0, +*> M-by-M lower triangular matrix, where 0 <= L <= MIN(M,N). If L=0, *> B is rectangular M-by-N; if M=L=N, B is lower triangular. *> *> The matrix W stores the elementary reflectors H(i) in the i-th row *> above the diagonal (of A) in the M-by-(M+N) input matrix C *> [ C ] = [ A ] [ B ] -*> [ A ] <- lower triangular N-by-N +*> [ A ] <- lower triangular M-by-M *> [ B ] <- M-by-N pentagonal *> *> so that W can be represented as *> [ W ] = [ I ] [ V ] -*> [ I ] <- identity, N-by-N +*> [ I ] <- identity, M-by-M *> [ V ] <- M-by-N, same form as B. *> *> Thus, all of information needed for W is contained on exit in B, which diff --git a/SRC/ztplqt2.f b/SRC/ztplqt2.f index 733f9dcc..a1d96dba 100644 --- a/SRC/ztplqt2.f +++ b/SRC/ztplqt2.f @@ -65,7 +65,7 @@ *> *> \param[in,out] A *> \verbatim -*> A is COMPLEX*16 array, dimension (LDA,N) +*> A is COMPLEX*16 array, dimension (LDA,M) *> On entry, the lower triangular M-by-M matrix A. *> On exit, the elements on and below the diagonal of the array *> contain the lower triangular matrix L. @@ -74,7 +74,7 @@ *> \param[in] LDA *> \verbatim *> LDA is INTEGER -*> The leading dimension of the array A. LDA >= max(1,N). +*> The leading dimension of the array A. LDA >= max(1,M). *> \endverbatim *> *> \param[in,out] B @@ -133,7 +133,7 @@ *> C = [ A ][ B ] *> *> -*> where A is an lower triangular N-by-N matrix, and B is M-by-N pentagonal +*> where A is an lower triangular M-by-M matrix, and B is M-by-N pentagonal *> matrix consisting of a M-by-(N-L) rectangular matrix B1 left of a M-by-L *> upper trapezoidal matrix B2: *> @@ -149,13 +149,13 @@ *> above the diagonal (of A) in the M-by-(M+N) input matrix C *> *> C = [ A ][ B ] -*> [ A ] <- lower triangular N-by-N +*> [ A ] <- lower triangular M-by-M *> [ B ] <- M-by-N pentagonal *> *> so that W can be represented as *> *> W = [ I ][ V ] -*> [ I ] <- identity, N-by-N +*> [ I ] <- identity, M-by-M *> [ V ] <- M-by-N, same form as B. *> *> Thus, all of information needed for W is contained on exit in B, which diff --git a/SRC/ztpmlqt.f b/SRC/ztpmlqt.f index f9540e11..e6c611e0 100644 --- a/SRC/ztpmlqt.f +++ b/SRC/ztpmlqt.f @@ -6,7 +6,7 @@ * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly -*> Download DTPMQRT + dependencies +*> Download ZTPMLQT + dependencies *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/ztpmlqt.f"> *> [TGZ]</a> *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/ztpmlqt.f"> @@ -36,9 +36,9 @@ *> *> \verbatim *> -*> ZTPMQRT applies a complex orthogonal matrix Q obtained from a -*> "triangular-pentagonal" real block reflector H to a general -*> real matrix C, which consists of two blocks A and B. +*> ZTPMLQT 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: @@ -47,15 +47,15 @@ *> \param[in] SIDE *> \verbatim *> SIDE is CHARACTER*1 -*> = 'L': apply Q or Q**C from the Left; -*> = 'R': apply Q or Q**C from the Right. +*> = '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**C. +*> = 'C': Transpose, apply Q**H. *> \endverbatim *> *> \param[in] M @@ -128,7 +128,7 @@ *> (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**C*C or C*Q or C*Q**C. See Further Details. +*> Q*C or Q**H*C or C*Q or C*Q**H. See Further Details. *> \endverbatim *> *> \param[in] LDA @@ -144,7 +144,7 @@ *> B is 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**C*C or C*Q or C*Q**C. See Further Details. +*> Q*C or Q**H*C or C*Q or C*Q**H. See Further Details. *> \endverbatim *> *> \param[in] LDB @@ -205,11 +205,11 @@ *> *> 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**C * 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**C. +*> If TRANS='C' and SIDE='R', C is on exit replaced with C * Q**H. *> \endverbatim *> * ===================================================================== diff --git a/SRC/ztrevc3.f b/SRC/ztrevc3.f index 9ab8b42b..ef833117 100644 --- a/SRC/ztrevc3.f +++ b/SRC/ztrevc3.f @@ -287,7 +287,7 @@ EXTERNAL LSAME, ILAENV, IZAMAX, DLAMCH, DZASUM * .. * .. External Subroutines .. - EXTERNAL XERBLA, ZCOPY, ZDSCAL, ZGEMV, ZLATRS + EXTERNAL XERBLA, ZCOPY, ZDSCAL, ZGEMV, ZLATRS, $ ZGEMM, DLABAD, ZLASET * .. * .. Intrinsic Functions .. |