--- /dev/null
+*CMZ : 23/08/93 13.30.11 by Jonathan Butterworth
+*-- Author :
+ SUBROUTINE LDLSOL (N,NADIM,CHOL,B,X)
+ INTEGER N, NADIM
+ DOUBLE PRECISION CHOL(NADIM, N)
+ DOUBLE PRECISION B(N), X(N)
+ INTEGER I, IM1, J, JJ, JP1
+ DOUBLE PRECISION SUM
+ SAVE
+ X(1)=B(1)
+ IF(N.EQ.1) GOTO 30
+ DO 20 I=2,N
+ SUM=B(I)
+ IM1=I-1
+ DO 10 J=1,IM1
+ SUM=SUM-CHOL(I,J)*X(J)
+ 10 CONTINUE
+ X(I)=SUM
+ 20 CONTINUE
+ 30 IF(CHOL(N,N).LE.0.0D+0) RETURN
+ X(N)=X(N)/CHOL(N,N)
+ IF(N.EQ.1) RETURN
+ DO 50 JJ=2,N
+ J=N-JJ+1
+ IF(CHOL(J,J).LE.0.0D+0) RETURN
+ SUM=X(J)/CHOL(J,J)
+ JP1=J+1
+ DO 40 I=JP1,N
+ SUM=SUM-CHOL(I,J)*X(I)
+ 40 CONTINUE
+ X(J)=SUM
+ 50 CONTINUE
+ RETURN
+ END