function ldlt=alldlf(asm,mu1) % L-D-L(t) factorization of a symmetric positive definite matrix in % compressed diagonal storage mode. % function ldlt=alldlf(asm,mu1) % input parameters: % asm : coefficient matrix in compressed diagonal storage mode (row vector). % a(i,j)=asm(mu1(i)-i+j) if j.le.i and j.gt.i+mu1(i-1)-mu1(i) % =a(j,i) if i.lt.j % =0.0 else % dimension asm(mu1(n)-mu1(1)+1) where n is the order of the % coefficient matrix. % mu1 : position of each diagonal element in vector asm (row vector). % dimension mu1(n) % (c) 2006 Alain Hebert, Ecole Polytechnique de Montreal n=size(mu1,2) ; ldlt=asm ; ldlt(mu1(1))=1./ldlt(mu1(1)) ; for k=2:n k1=mu1(k)-k ; km=mu1(k-1)+1-k1 ; for i=km+1:k-1 r=ldlt(k1+i) ; ldlt(k1+i)=0. ; i1=mu1(i)-i ; imin=max(mu1(i-1)+1-i1,km) ; ldlt(k1+i)=r-sum(ldlt(k1+imin:k1+i).*ldlt(i1+imin:i1+i)) ; end s=0. ; for i=km:k-1 r=ldlt(k1+i) ; ldlt(k1+i)=r*ldlt(mu1(i)) ; s=s+r*ldlt(k1+i) ; end ldlt(mu1(k))=ldlt(mu1(k))-s ; ldlt(mu1(k))=1./ldlt(mu1(k)) ; end