1function L = choldn (Lold,w)
2%CHOLDN Cholesky downdate
3% given Lold and w, compute L so that L*L' = Lold*Lold' - w*w'
4%
5% Example:
6%   L = cholnd (Lold,w)
7% See also: testall
8
9% Copyright 2006-2012, Timothy A. Davis, http://www.suitesparse.com
10
11n = size (Lold,1) ;
12L = Lold ;
13
14alpha = 1 ;
15beta = 1 ;
16
17wold = w ;
18wnew = zeros (n,1) ;
19
20for i = 1:n
21
22    a = w (i) / L(i,i) ;
23    alpha = alpha - a^2 ;
24    if (alpha <= 0)
25        error ('not pos def') ;
26    end
27    beta_new = sqrt (alpha) ;
28    b = beta_new / beta ;
29    c = (a / (beta*beta_new)) ;
30    beta = beta_new ;
31
32    % L (i,i) = b * L (i,i) ;
33
34    wnew (i) = a ;
35
36    for k = i:n
37        w (k)   = w (k) - a * L (k,i) ;
38        L (k,i) = b * L (k,i) - c * w(k) ;
39    end
40
41end
42
43% w
44% wnew
45disp (wnew - Lold\wold)
46