CGEQP3  -  compute a QR factorization with column pivoting
       of a matrix A


SYNOPSIS

       SUBROUTINE CGEQP3( M, N, A, LDA, JPVT, TAU,  WORK,  LWORK,
                          RWORK, INFO )

           INTEGER        INFO, LDA, LWORK, M, N

           INTEGER        JPVT( * )

           REAL           RWORK( * )

           COMPLEX        A( LDA, * ), TAU( * ), WORK( * )


PURPOSE

       CGEQP3 computes a QR factorization with column pivoting of
       a matrix A: A*P = Q*R using Level 3 BLAS.


ARGUMENTS

       M       (input) INTEGER
               The number of rows of the matrix A. M >= 0.

       N       (input) INTEGER
               The number of columns of the matrix A.  N >= 0.

       A       (input/output) COMPLEX array, dimension (LDA,N)
               On entry, the M-by-N matrix A.  On exit, the upper
               triangle  of  the array contains the min(M,N)-by-N
               upper trapezoidal matrix R; the elements below the
               diagonal,  together  with the array TAU, represent
               the unitary matrix Q as a product of min(M,N) ele­
               mentary reflectors.

       LDA     (input) INTEGER
               The  leading  dimension  of  the  array  A. LDA >=
               max(1,M).

       JPVT    (input/output) INTEGER array, dimension (N)
               On entry, if JPVT(J).ne.0, the J-th column of A is
               permuted  to  the front of A*P (a leading column);
               if JPVT(J)=0, the J-th column of A is a free  col­
               umn.   On exit, if JPVT(J)=K, then the J-th column
               of A*P was the the K-th column of A.

       TAU     (output) COMPLEX array, dimension (min(M,N))
               The scalar factors of the elementary reflectors.

       WORK    (workspace/output) COMPLEX array, dimension
               (LWORK)
               On  exit,  if  INFO=0, WORK(1) returns the optimal
               LWORK.

               The dimension of the array  WORK.  LWORK  >=  N+1.
               For optimal performance LWORK >= ( N+1 )*NB, where
               NB is the optimal blocksize.

               If LWORK = -1, then a workspace query is  assumed;
               the  routine  only  calculates the optimal size of
               the WORK array, returns this value  as  the  first
               entry  of  the  WORK  array,  and no error message
               related to LWORK is issued by XERBLA.

       RWORK   (workspace) REAL array, dimension (2*N)

       INFO    (output) INTEGER
               = 0: successful exit.
               < 0: if INFO = -i, the i-th argument had an  ille­
               gal value.


FURTHER DETAILS

       The  matrix  Q  is  represented as a product of elementary
       reflectors

          Q = H(1) H(2) . . . H(k), where k = min(m,n).

       Each H(i) has the form

          H(i) = I - tau * v * v'

       where tau is a real/complex scalar, and v is  a  real/com­
       plex  vector  with  v(1:i-1) = 0 and v(i) = 1; v(i+1:m) is
       stored on exit in A(i+1:m,i), and tau in TAU(i).

       Based on contributions by
         G. Quintana-Orti,  Depto.  de  Informatica,  Universidad
       Jaime I, Spain
         X. Sun, Computer Science Dept., Duke University, USA


Man(1) output converted with man2html