I am looking for some production-ready code to update dense QR and/or Cholesky factorizations (by adding / removing rows and columns or making small-rank updates -- yes, I need all these cases).
I have done my
- Matlab has this covered, but unfortunately this is for a C++ project, so it is not easy to interface with it. I'd much rather have C/C++ or Fortan, especially the "traditional" LAPACK-style code.
- LAPACK has nothing, as far as I can tell. There was something in LINPACK (LAPACK's precursor), but as far as I can tell it has not been updated in the last 30 years at least.
- There is some code by Craig Lucas for one of these subtasks (adding/deleting columns only for a QR factorization), and some code by Daniel Kressner for adding rows to a QR factorization only. Both of them are only limited to one of the subtasks that I need, and, to quote Kressner's page,
It is not tested thoroughly and should be understood as research code.
Surprisingly, there is mature code for the same task for sparse matrices, in Tim Davis' Suitesparse. I don't suppose that the code will be efficient on a dense matrix.
Michael Saunders' LUSOL has the corresponding code for a (sparse) LU factorization (unsymmetric case).
So it seems like there is plenty of code for doing similar and related tasks, but not exactly for this problem, which seems surprising.
Am I overlooking some obvious choice? Is there a library to do it?