5 * Revision 1.1.1.1 1996/04/01 15:02:21 mclareni
10 SUBROUTINE FUMILI (S,M,N1,N2,N3,EPS,AKAPPA,ALAMBD,IT,MC)
11 C-----ENTRY FOR CHISQ MINIMISATION
16 C-----10.*MAXIMUM RELATIVE PRECISION ON CDC 6000
19 1 IF (IT.GE.0) WRITE(6,84)
20 #if defined(CERNLIB_IBM)||defined(CERNLIB_CDC)
21 CALL VFILL(AMX,100,1.0E75)
23 #if (!defined(CERNLIB_CDC))&&(!defined(CERNLIB_IBM))
24 CALL VFILL(AMX,100,1.0E37)
26 CALL VCOPYN(AMX,AMN,100)
37 IF (EPS.GT.0.) SIGMA(I)=0.
39 C-----START NEW ITERATION
42 C-----REPEAT ITERATION WITH SMALLER STEP
59 C-----CALCULATE OBJECTIVE FUNCTION
62 IF (NN0.LT.1) GO TO 11
67 12 IF (NN1-N1) 13,13,19
69 IF (INDFLG(1)) 16,14,16
70 14 IF (ABS(S-OLDS).LE.SP.AND.-GT.LE.SP) GO TO 19
71 IF (0.59*T+GT) 19,15,15
79 IF (PL(I).LE.0.) GO TO 18
87 C-----REMOVE CONTRIBUTION OF FIXED PARAMETERS FROM Z
88 19 IF(INDFLG(1).EQ.0) GO TO 20
96 21 IF (PL(I).EQ.0.) PL(I)=PL0(I)
101 24 IF (A(I).GE.AMX(I).AND.G(I).LT.0.) GO TO 22
102 IF (A(I).LE.AMN(I).AND.G(I).GT.0.) GO TO 22
105 25 IF (PL(J)) 27,27,26
123 IF (INDFLG(1)) 33,34,33
128 C-----CALCULATE THEORETICAL STEP TO MINIMUM
136 36 IF (I1-L1) 37,37,38
140 39 DA(I)=DA(I)-G(L)*Z(K)
145 C-----CHECK FOR PARAMETERS ON BOUNDARY
152 42 SIGI=SQRT(ABS(Z(L)))
156 44 IF ((A(I).LT.AMX(I).OR.DA(I).LE.0.).AND.(A(I).GT.AMN(I).OR.DA(I).G
159 IF (AKAP-AFIX) 46,46,45
170 C-----REPEAT CALCULATION OF THEORETICAL STEP AFTER FIXING EACH PARAMETER
172 C-----CALCULATE STEP CORRECTION FACTOR
189 55 IF (ABS(DA(I))-BI) 58,58,56
191 IF (ALAMBD-AL) 58,58,57
195 58 AKAP=ABS(DA(I)/SIGMA(I))
196 IF (AKAP-AKAPPA) 60,60,59
199 C-----CALCULATE NEW CORRECTED STEP
207 63 IF (NN2-N2) 66,66,64
208 64 IF (ABS(DA(I)/PL(I))-AMB) 66,65,65
211 66 DA(I)=DA(I)*ALAMBD
214 C-----CHECK IF MINIMUM ATTAINED AND SET EXIT MODE
215 IF (-GT.GT.SP.OR.T1.GE.1..OR.ALAMBD.GE.1.) GO TO 68
217 68 IF (ENDFLG) 85,69,69
218 69 IF (AKAPPA-ABS(EPS)) 70,75,75
219 70 IF (FIXFLG) 72,71,72
222 72 IF (ENDFLG) 85,77,73
223 73 IF (IFIX1) 85,85,76
224 74 IF (FI-FIXFLG) 76,76,77
225 75 IF (FIXFLG) 74,76,74
228 85 IF(ENDFLG.EQ.0..AND.NN3.GE.N3) ENDFLG=-3.
229 IF(ENDFLG.GT.0..AND.INDFLG(2).GT.0) ENDFLG=-2.
230 CALL MONITO (S,M,NN3,IT,EPS,GT,AKAPPA,ALAMBD)
232 C-----CHECK IF FIXING ON BOUND IS CORRECT
253 C-----ENTRY FOR MAXIMUM LIKLEHOOD
254 #if (defined(CERNLIB_CDC))&&(defined(CERNLIB_F4))
257 #if !defined(CERNLIB_CDC)||!defined(CERNLIB_F4)
258 ENTRY LIKELM(S,M,N1,N2,N3,EPS,AKAPPA,ALAMBD,IT,MC)
263 84 FORMAT('1',43X,'FUNCTION MINIMISATION BY SUBROUTINE FUMILI/LIKE',
264 +'LM'/'0',55X,'IN THE FOLLOWING PRINT-OUT'/
265 + '0',27X,'S = VALUE OF OBJECTIVE FUNCTION,',
266 + 'EC = EXPECTED CHANGE IN S DURING NEXT ITERATION'/
267 + '0',34X,'KAPPA = ESTIMATED DISTANCE TO MINIMUM, LAMBDA =',
268 + 'STEP LENGTH MODIFIER'///)