QR Update

QR Update

QR Update


To update a QR factorization of a matrix when additional rows are added to the matrix. The software provided below may only be used for academic purposes. It is not tested thoroughly and should be understood as research code. Please contact Daniel Kressner before intending to include this software in academic production code or commercial libraries.

Block algorithms for updating QR factorizations

file dbqru.f (requires subroutines dbqru_appq.f, dbqru_larf.f, dbqru_larfb.f, dbqru_larft.f)
Updates a real QR factorization.

Example routine: testdbqru.f
Example data: testdbqru.dat testdbqru.res
Timing routine: timdbqru.f

file zbqru.f (requires subroutines dbqru_appq.f, zaxpyc.f, zbqru_larf.f, zbqru_larfb.f, zbqru_larft.f)
Updates a complex QR factorization.

Example routine: testzbqru.f
Example data: testzbqru.dat testzbqru.res
Timing routine: timzbqru.f

tar ball blockqrupdate.tar.gz
Contains all files listed above.

Warning: To compile any of the files above you need BLAS and LAPACK. Usually, the LAPACK routines DLARAN and DLARND are not included in distributions of LAPACK and you might have to invoke them explicitly.


  1. Section 2.3.2 in S. Hammarling and C. Lucas. Updating the QR factorization and the least squares problem. November 2008.
  2. D. Kressner. A note on using compact WY representations for updating QR decompositions. March 2009.


QR updating routines by Craig Lucas: