This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / MINICERN / mathlib / gen / divon / ldlsol.F
1 *
2 * $Id$
3 *
4 * $Log$
5 * Revision 1.1.1.1  1996/04/01 15:03:27  mclareni
6 * Mathlib gen
7 *
8 *
9 #include "gen/pilot.h"
10       SUBROUTINE LDLSOL (N,NADIM,CHOL,B,X)
11       INTEGER N, NADIM
12       DOUBLE PRECISION CHOL(NADIM, N)
13       DOUBLE PRECISION B(N), X(N)
14       INTEGER I, IM1, J, JJ, JP1
15       DOUBLE PRECISION SUM
16       X(1)=B(1)
17       IF(N.EQ.1) GOTO 30
18       DO 20 I=2,N
19       SUM=B(I)
20       IM1=I-1
21       DO 10 J=1,IM1
22       SUM=SUM-CHOL(I,J)*X(J)
23  10   CONTINUE
24       X(I)=SUM
25  20   CONTINUE
26  30   IF(CHOL(N,N).LE.0.0D+0) RETURN
27       X(N)=X(N)/CHOL(N,N)
28       IF(N.EQ.1) RETURN
29       DO 50 JJ=2,N
30       J=N-JJ+1
31       IF(CHOL(J,J).LE.0.0D+0) RETURN
32       SUM=X(J)/CHOL(J,J)
33       JP1=J+1
34       DO 40 I=JP1,N
35       SUM=SUM-CHOL(I,J)*X(I)
36  40   CONTINUE
37       X(J)=SUM
38  50   CONTINUE
39       RETURN
40       END