GEQP3
QR Factorization of a Rectangular Matrix
GEQP3
is a FORTRAN77 library which
contains the portion of the LAPACK library that carries out the
QR factorization, with column pivoting, of an M by N rectangular matrix,
with N <= M.
The factorization can be written as
A = Q * R0 * P'
= Q * (R) * P',
(0)
where

Q is an M by M orthogonal matrix;

R0 is an M by N upper trapezoidal matrix, which
is guaranteed to include a final MN by N block of zeros.

R is an N by N upper triangular matrix, whose diagonal elements
are in descending magnitude, and some of which may be zero if the
system does not have full column rank N.

P is an N by N permutation matrix that reflects the column pivoting;
The rank of A can be estimated by the rank of R, which, in turn,
can be estimated by taking a tolerance T, and comparing the consecutive
diagonal elements of R to T * R(1,1). If K is the last diagonal element
which is at least T * R(1,1) in magnitude, we estimate the rank as K.
Thereafter, a least squares soluation of the linear system A*X=B can be
determined by:
X = P * ( inv ( R(1:k,1:k) ) * ( Q' * B )(1:k,1:k) )
( 0 )
Licensing:
The computer code and data files described and made available on this web page
are distributed under
the GNU LGPL license.
Languages:
GEQP3 is available in
a FORTRAN77 version and
a FORTRAN90 version.
Related Programs:
BAND_QR,
a FORTRAN77 library which
computes the QR factorization of a banded matrix, and can solve
related linear systems,
by Alfredo Remon, Enrique QuintanaOrti, Gregorio QuintanaOrti.
LAPACK_EXAMPLES,
a FORTRAN77 program which
demonstrates the use of the LAPACK linear algebra library.
LINPACK,
a FORTRAN77 library which
solves linear systems for a variety of matrix storage schemes,
real or complex arithmetic, and single or double precision.
It includes a routine for computing the singular value decomposition (SVD)
of a rectangular matrix.
The original version of this library is
by Jack Dongarra, Jim Bunch, Cleve Moler, Pete Stewart.
QR_SOLVE,
a FORTRAN77 library which
computes the least squares solution of a linear system A*x=b.
References:

Edward Anderson, Zhaojun Bai, Christian Bischof, Susan Blackford,
James Demmel, Jack Dongarra, Jeremy DuCroz, Anne Greenbaum,
Sven Hammarling, Alan McKenney, Danny Sorensen,
LAPACK User's Guide,
Third Edition,
SIAM, 1999,
ISBN: 0898714478,
LC: QA76.73.F25L36
Source Code:
Examples and Tests:
List of Routines:

DCOPY copies a vector X to a vector Y.

DGEMM performs C = alpha*A*B + beta*C or C = alpha*A*B' + beta*C
or C = alpha*A'*B + beta*C or C = alpha*A'*B' + beta*C.

DGEMV performs y := alpha*A*x + beta*y, or y := alpha*A'*x + beta*y.

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

DGEQR2 computes a QR factorization of a real m by n matrix A: A = Q * R.

DGEQRF computes a QR factorization of a real MbyN matrix A: A = Q * R.

DGER performs the rank 1 operation A := alpha*x*y' + A,

DLAMCH determines double precision machine parameters.

DLAMC3 forces A and B to be stored prior to doing the addition of A and B.

DLAPY2 returns sqrt(x^2+y^2), taking care not to cause unnecessary overflow.

DLAQP2 computes a QR factorization with column pivoting of
the block A(OFFSET+1:M,1:N).

DLAQPS computes a step of QR factorization with column pivoting
of a real MbyN matrix A by using Blas3.

DLARF applies a real elementary reflector H to a real m by n matrix
C, from either the left or the right.

DLARFB applies a real block reflector H or its transpose H' to a
real m by n matrix C, from either the left or the right.

DLARFG generates a real elementary reflector H of order n.

DLARFT forms the triangular factor T of a real block reflector H
of order n.

DNRM2 returns the euclidean norm of a vector.

DORM2R overwrites the general real m by n matrix C with
Q*C, Q'*C, C*Q, or C*Q'.

DORMQR overwrites the general real MbyN matrix C with
Q*C, C*Q, Q'*C or C*Q'.

DSCAL scales a vector by a constant.

DSWAP interchanges two vectors.

DTRMM performs one of the operations B := alpha*A*B, or B=alpha*A'*B
or B := alpha*B*A or B:=alpha*B*A', where A is a triangular matrix.

DTRMV performs one of the operations x =A*x, or x=A'*x
where A is a triangular matrix.

DTRSM solves A*X = alpha*B, or A'*X=alpha*B, or X*A = alpha*B, or
X*A' = alpha*B where A is a triangular matrix.

IDAMAX finds the index of the vector element having the maximum absolute value.

IEEECK is called from the ILAENV to verify that Infinity and
possibly NaN arithmetic is safe (i.e. will not trap).

ILADLC scans A for its last nonzero column.

ILADLR scans A for its last nonzero row.

ILAENV is called from the LAPACK routines to choose problemdependent
parameters for the local environment.

IPARMQ sets problem and machine dependent parameters
useful for xHSEQR and its subroutines

LSAME returns .TRUE. if CA is the same letter as CB regardless of case.

XERBLA is an error handler for the LAPACK routines.
You can go up one level to
the FORTRAN77 source codes.
Last revised on 19 March 2014.