is a positive integer input variable set to the number of rows of a.
is a positive integer input variable set to the number of columns of a.
is an m by n array. on input a contains the matrix for which the qr factorization is to be computed. on output the strict upper trapezoidal part of a contains the strict upper trapezoidal part of r, and the lower trapezoidal part of a contains a factored form of q (the non-trivial elements of the u vectors described above).
is a logical input variable. if pivot is set true, then column pivoting is enforced. if pivot is set false, then no column pivoting is done.
is an integer output array of length lipvt. ipvt defines the permutation matrix p such that ap = qr. column j of p is column ipvt(j) of the identity matrix. if pivot is false, ipvt is not referenced.
is an output array of length n which contains the diagonal elements of r.
is an output array of length n which contains the norms of the corresponding columns of the input matrix a. if this information is not needed, then acnorm can coincide with rdiag.
is a work array of length n. if pivot is false, then wa can coincide with rdiag.
subprograms called
minpack-supplied ... dpmpar,enorm
fortran-supplied ... dmax1,dsqrt,min0
argonne national laboratory. minpack project. march 1980. burton s. garbow, kenneth e. hillstrom, jorge j. more
subroutine qrfac
this subroutine uses householder transformations with column pivoting (optional) to compute a qr factorization of the m by n matrix a. that is, qrfac determines an orthogonal matrix q, a permutation matrix p, and an upper trapezoidal matrix r with diagonal elements of nonincreasing magnitude, such that ap = qr. the householder transformation for column k, k = 1,2,...,min(m,n), is of the form
t
i - (1/u(k))uu
where u has zeros in the first k-1 positions. the form of this transformation and the method of pivoting first appeared in the corresponding linpack subroutine.
the subroutine statement is
subroutine qrfac(m,n,a,lda,pivot,ipvt,lipvt,rdiag,acnorm,wa)
where