JIMMY first commit.
[u/mrichter/AliRoot.git] / HERWIG / jimmy / divon4 / nmdchl.F
1 *CMZ :          23/08/93  13.30.11  by  Jonathan Butterworth
2 *-- Author :
3       SUBROUTINE NMDCHL (N,NADIM,AHESS,EPSMCH,Z,P)
4       INTEGER N, NADIM
5       DOUBLE PRECISION EPSMCH
6       DOUBLE PRECISION Z(N), AHESS(NADIM,N), P(N)
7 C*NS  INTEGER I, IB, IQ, J, JN1, JP1, K
8 C*NS  INTEGER I, IB,     J, JN1, JP1, K
9       DOUBLE PRECISION BETA, DJ, G, GAMMA, GAMMA1, PJ, T
10       SAVE
11       GAMMA=0.0D+0
12       J=1
13       DO 30 I=1,N
14       T=Z(I)
15       IF(I.EQ.1) GOTO 20
16       K=I-1
17       DO 10 IB=1,K
18       T=T-P(IB)*AHESS(I,IB)
19  10   CONTINUE
20  20   P(I)=T
21       GAMMA=GAMMA+T*T/AHESS(I,I)
22  30   CONTINUE
23       GAMMA1=1.0D+0-GAMMA
24       GAMMA=EPSMCH
25       IF(GAMMA1.GT.EPSMCH) GAMMA=GAMMA1
26       IF(-GAMMA1.GT.EPSMCH) GAMMA=-GAMMA1
27       JN1=N+1
28       DO 50 I=1,N
29       J=JN1-I
30       PJ=P(J)
31       DJ=AHESS(J,J)
32       T=PJ/DJ
33       Z(J)=PJ
34       BETA=-T/GAMMA
35       G=GAMMA+PJ*T
36       AHESS(J,J)=DJ*GAMMA/G
37       GAMMA=G
38       IF(J.EQ.N) GOTO 50
39       JP1=J+1
40       DO 40 IB=JP1,N
41       T=AHESS(IB,J)
42       AHESS(IB,J)=T+BETA*Z(IB)
43       Z(IB)=Z(IB)+PJ*T
44  40   CONTINUE
45  50   CONTINUE
46       RETURN
47       END