ESMF_DLAQPS Subroutine

subroutine ESMF_DLAQPS(M, N, OFFSET, NB, KB, A, LDA, JPVT, TAU, VN1, VN2, AUXV, F, LDF)

\brief \b ESMF_DLAQPS \htmlonly Download ESMF_DLAQPS + dependencies [TGZ] [ZIP] [TXT] \endhtmlonly \par Purpose:

\verbatim

ESMF_DLAQPS computes a step of QR factorization with column pivoting of a real M-by-N matrix A by using Blas-3. It tries to factorize NB columns from A starting from the row OFFSET+1, and updates all of the matrix with Blas-3 xGEMM.

In some cases, due to catastrophic cancellations, it cannot factorize NB columns. Hence, the actual number of factorized columns is returned in KB.

Block A(1:OFFSET,1:N) is accordingly pivoted, but not factorized. \endverbatim \param[in] M \verbatim M is INTEGER The number of rows of the matrix A. M >= 0. \endverbatim

\param[in] N \verbatim N is INTEGER The number of columns of the matrix A. N >= 0 \endverbatim

\param[in] OFFSET \verbatim OFFSET is INTEGER The number of rows of A that have been factorized in previous steps. \endverbatim

\param[in] NB \verbatim NB is INTEGER The number of columns to factorize. \endverbatim

\param[out] KB \verbatim KB is INTEGER The number of columns actually factorized. \endverbatim

\param[in,out] A \verbatim A is DOUBLE PRECISION array, dimension (LDA,N) On entry, the M-by-N matrix A. On exit, block A(OFFSET+1:M,1:KB) is the triangular factor obtained and block A(1:OFFSET,1:N) has been accordingly pivoted, but no factorized. The rest of the matrix, block A(OFFSET+1:M,KB+1:N) has been updated. \endverbatim

\param[in] LDA \verbatim LDA is INTEGER The leading dimension of the array A. LDA >= max(1,M). \endverbatim

\param[in,out] JPVT \verbatim JPVT is INTEGER array, dimension (N) JPVT(I) = K <==> Column K of the full matrix A has been permuted into position I in AP. \endverbatim

\param[out] TAU \verbatim TAU is DOUBLE PRECISION array, dimension (KB) The scalar factors of the elementary reflectors. \endverbatim

\param[in,out] VN1 \verbatim VN1 is DOUBLE PRECISION array, dimension (N) The vector with the partial column norms. \endverbatim

\param[in,out] VN2 \verbatim VN2 is DOUBLE PRECISION array, dimension (N) The vector with the exact column norms. \endverbatim

\param[in,out] AUXV \verbatim AUXV is DOUBLE PRECISION array, dimension (NB) Auxiliar vector. \endverbatim

\param[in,out] F \verbatim F is DOUBLE PRECISION array, dimension (LDF,NB) Matrix FT = L*YT*A. \endverbatim

\param[in] LDF \verbatim LDF is INTEGER The leading dimension of the array F. LDF >= max(1,N). \endverbatim \author Univ. of Tennessee \author Univ. of California Berkeley \author Univ. of Colorado Denver \author NAG Ltd. \date November 2011 \ingroup doubleOTHERauxiliary \par Contributors:

G. Quintana-Orti, Depto. de Informatica, Universidad Jaime I, Spain X. Sun, Computer Science Dept., Duke University, USA \n Partial column norm updating strategy modified on April 2011 Z. Drmac and Z. Bujanovic, Dept. of Mathematics, University of Zagreb, Croatia. \par References:

LAPACK Working Note 176 \htmlonly [PDF] \endhtmlonly

Arguments

Type IntentOptional Attributes Name
integer :: M
integer :: N
integer :: OFFSET
integer :: NB
integer :: KB
double precision :: A(LDA,*)
integer :: LDA
integer :: JPVT(*)
double precision :: TAU(*)
double precision :: VN1(*)
double precision :: VN2(*)
double precision :: AUXV(*)
double precision :: F(LDF,*)
integer :: LDF