JIMMY first commit.
[u/mrichter/AliRoot.git] / HERWIG / jimmy / divon4 / modchl.F
1 *CMZ :          23/08/93  13.30.11  by  Jonathan Butterworth
2 *-- Author :
3       SUBROUTINE MODCHL (N,NADIM,AHESS,ALPHA,Z,IFAIL)
4       INTEGER N, NADIM, IFAIL
5       DOUBLE PRECISION ALPHA
6       DOUBLE PRECISION AHESS(NADIM,N), Z(N)
7       INTEGER I, IB, IP1, J, K
8       DOUBLE PRECISION A, BETA, DB, DI, GAMMA, P1, RMAX, T, W
9       SAVE
10       RMAX= 1.0D+37
11       IFAIL=0
12       A=ALPHA
13       K=0
14       DO 50 I=1,N
15       P1=Z(I)
16       DI=AHESS(I,I)
17       T=A*P1
18       DB=DI+T*P1
19       AHESS(I,I)=DB
20       IF(DB.GE.1.0D+0) GOTO 10
21       IF(DB.GT.0.0D+0.AND.DI.LE.RMAX*DB) GOTO 10
22       IFAIL=1
23       RETURN
24  10   GAMMA=DI/DB
25       BETA=T/DB
26       A=A*GAMMA
27       K=K+I
28       J=K
29       IF(I.EQ.N) GOTO 50
30       IP1=I+1
31       IF(GAMMA.GE.2.5D-1) GOTO 30
32       DO 20 IB=IP1,N
33       T=AHESS(IB,I)
34       AHESS(IB,I)=T*GAMMA+BETA*Z(IB)
35       Z(IB)=Z(IB)-P1*T
36  20   CONTINUE
37       GOTO 50
38  30   DO 40 IB=IP1,N
39       T=AHESS(IB,I)
40       W=Z(IB)-P1*T
41       Z(IB)=W
42       AHESS(IB,I)=BETA*W+T
43  40   CONTINUE
44  50   CONTINUE
45       RETURN
46       END