QR  QR QR Decomposition of a Matrix


Usage
 
 Computes the QR factorization of a matrix.  The qr function has
 multiple forms, with and without pivoting.  The non-pivot version
 has two forms, a compact version and a full-blown decomposition
 version.  The compact version of the decomposition of a matrix 
 of size M x N is
 
   [q,r] = qr(a,0)
 
 where q is a matrix of size M x L and r is a matrix of
 size L x N and L = min(N,M), and q*r = a.  The QR decomposition is
 such that the columns of Q are orthonormal, and R is upper
 triangular.  The decomposition is computed using the LAPACK 
 routine xgeqrf, where x is the precision of the matrix.  Unlike
 MATLAB (and other MATLAB-compatibles), FreeMat supports decompositions
 of all four floating point types, float, complex, double, dcomplex.
 
 The second form of the non-pivot decomposition omits the second 0
 argument:
 
   [q,r] = qr(a)
 
 This second form differs from the previous form only for matrices
 with more rows than columns (M > N).  For these matrices, the
 full decomposition is of a matrix Q of size M x M and 
 a matrix R of size M x N.  The full decomposition is computed
 using the same LAPACK routines as the compact decomposition, but
 on an augmented matrix [a 0], where enough columns are added to
 form a square matrix.
 
 Generally, the QR decomposition will not return a matrix R with
 diagonal elements in any specific order.  The remaining two forms 
 of the qr command utilize permutations of the columns of a
 so that the diagonal elements of r are in decreasing magnitude.
 To trigger this form of the decomposition, a third argument is
 required, which records the permutation applied to the argument a.
 The compact version is
 
   [q,r,e] = qr(a,0)
 
 where e is an integer vector that describes the permutation of
 the columns of a necessary to reorder the diagonal elements of
 r.  This result is computed using the LAPACK routines (s,d)geqp3.
 In the non-compact version of the QR decomposition with pivoting,
 
   [q,r,e] = qr(a)
 
 the returned matrix e is a permutation matrix, such that 
 q*r*e' = a.
 