Given an matrix , we seek the factorization , where is an orthogonal matrix, and is an upper triangular matrix. At the -th step of the computation, we partition this factorization to the submatrix of as
where the block is , is , is , and is . is an matrix, containing the first columns of the matrix , and is an matrix, containing the last columns of (that is, and ). is a upper triangular matrix.
A QR factorization is performed on the first panel of (i.e., ). In practice, is computed by applying a series of Householder transformations to of the form, where . The vector is of length with 0's for the first entries and 1 for the -th entry, and . During the QR factorization, the vector overwrites the entries of below the diagonal, and is stored in a vector. Furthermore, it can be shown that , where is upper triangular and the -th column of equals . This is indeed a block version of the QR factorization [22][4], and is rich in matrix-matrix operations.
Figure 4: A snapshot of block QR factorization.
The block equation can be rearranged as
A snapshot of the block QR factorization is shown in Figure 4. During the computation, the sequence of the Householder vectors is computed, and the row panel and , and the trailing submatrix are updated. The factorization can be done by recursively applying the steps outlined above to the matrix .
The computation of the above steps of the LAPACK routine, DGEQRF, involves the following operations:
The corresponding steps of the ScaLAPACK routine, PDGEQRF, are as follows: