On Sunday, June 10, 2012 8:48:02 AM UTC-5, Alan Edelman wrote:
most of these updates, i recall, are fairly easy formulas
The Cholesky update functions in Linpack were based on Given's rotations. A rank-1 update of the Cholesky decomposition (given A = R'R, determine S in A + xx' = S'S) is straightforward and stable (imagine you have formed vcat(R, x) and use Givens rotations on the k'th row of R and the 'x' row to zero out the k'th element of x, k = 1:n). Successive rank-1 downdates, which in essence reverse the preceding process) can become numerically unstable. There was also a clever way in Linpack of forming the Cholesky decomposition of the same matrix after a cyclic shift of some or all of the columns.
One thing that could easily have been incorporated from Linpack into Lapack but wasn't, and I'm not sure why, is a pivoted Cholesky decomposition, similar to the pivoted QR decomposition. It may again have been a question of numerical stability.
These types of operations would only be a big win for large, dense positive-definite systems. In my experience large positive-definite systems are often sparse. The CHOLMOD code provides for both the Cholesky decomposition and for updates (MODifications) of sparse positive-definite systems.