]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MINICERN/mathlib/gen/d/fumili.F
Merging the VirtualMC branch to the main development branch (HEAD)
[u/mrichter/AliRoot.git] / MINICERN / mathlib / gen / d / fumili.F
diff --git a/MINICERN/mathlib/gen/d/fumili.F b/MINICERN/mathlib/gen/d/fumili.F
deleted file mode 100644 (file)
index 80078ed..0000000
+++ /dev/null
@@ -1,269 +0,0 @@
-*
-* $Id$
-*
-* $Log$
-* Revision 1.1.1.1  1996/04/01 15:02:21  mclareni
-* Mathlib gen
-*
-*
-#include "gen/pilot.h"
-      SUBROUTINE FUMILI (S,M,N1,N2,N3,EPS,AKAPPA,ALAMBD,IT,MC)
-C-----ENTRY FOR CHISQ MINIMISATION
-#include "d510pl.inc"
-#include "d510si.inc"
-#include "d510ui.inc"
-#include "d510uo.inc"
-C-----10.*MAXIMUM RELATIVE PRECISION ON CDC 6000
-      DATA RP/1.E-14/
-      INDFLG(3)=0
- 1    IF (IT.GE.0) WRITE(6,84)
-#if defined(CERNLIB_IBM)||defined(CERNLIB_CDC)
-      CALL VFILL(AMX,100,1.0E75)
-#endif
-#if (!defined(CERNLIB_CDC))&&(!defined(CERNLIB_IBM))
-      CALL VFILL(AMX,100,1.0E37)
-#endif
-      CALL VCOPYN(AMX,AMN,100)
-      NN2=0
-      N=M
-      FIXFLG=0.
-      ENDFLG=0.
-      INDFLG(2)=0
-      IFIX1=0.
-      FI=0.
-      NN3=0
-      DO 2 I=1,N
-      R(I)=0.
-      IF (EPS.GT.0.) SIGMA(I)=0.
- 2    PL(I)=PL0(I)
-C-----START NEW ITERATION
- 3    NN1=1
-      T1=1.
-C-----REPEAT ITERATION WITH SMALLER STEP
- 4    S=0.
-      N0=0
-      DO 7 I=1,N
-      G(I)=0.
-      IF (PL0(I)) 7,7,5
- 5    N0=N0+1
-      IF (PL(I)) 7,7,6
- 6    PL0(I)=PL(I)
- 7    CONTINUE
-      NN0=N0*(N0+1)/2
-      IF (NN0.LT.1) GO TO 9
-      DO 8 I=1,NN0
-      Z(I)=0.
- 8    CONTINUE
- 9    NA=M
-      INDFLG(1)=0
-C-----CALCULATE OBJECTIVE FUNCTION
-      CALL SGZ (M,S)
-      SP=RP*ABS(S)
-      IF (NN0.LT.1) GO TO 11
-      DO 10 I=1,NN0
-      Z0(I)=Z(I)
- 10   CONTINUE
- 11   IF (NN3) 19,19,12
- 12   IF (NN1-N1) 13,13,19
- 13   T=2.*(S-OLDS-GT)
-      IF (INDFLG(1)) 16,14,16
- 14   IF (ABS(S-OLDS).LE.SP.AND.-GT.LE.SP) GO TO 19
-      IF (0.59*T+GT) 19,15,15
- 15   T=-GT/T
-      IF (T-0.25) 16,17,17
- 16   T=0.25
- 17   GT=GT*T
-      T1=T1*T
-      NN2=0
-      DO 18 I=1,N
-      IF (PL(I).LE.0.) GO TO 18
-      A(I)=A(I)-DA(I)
-      PL(I)=PL(I)*T
-      DA(I)=DA(I)*T
-      A(I)=A(I)+DA(I)
- 18   CONTINUE
-      NN1=NN1+1
-      GO TO 4
-C-----REMOVE CONTRIBUTION OF FIXED PARAMETERS FROM Z
-   19 IF(INDFLG(1).EQ.0) GO TO 20
-      ENDFLG=-4.
-      GO TO 85
- 20   K1=1
-      K2=1
-      I1=1
-      DO 30 I=1,N
-      IF (PL0(I)) 30,30,21
- 21   IF (PL(I).EQ.0.) PL(I)=PL0(I)
-      IF (PL(I)) 23,23,24
- 22   PL(I)=0.
- 23   K1=K1+I1
-      GO TO 29
- 24   IF (A(I).GE.AMX(I).AND.G(I).LT.0.) GO TO 22
-      IF (A(I).LE.AMN(I).AND.G(I).GT.0.) GO TO 22
-      DO 28 J=1,I
-      IF (PL0(J)) 28,28,25
- 25   IF (PL(J)) 27,27,26
- 26   Z(K2)=Z0(K1)
-      K2=K2+1
- 27   K1=K1+1
- 28   CONTINUE
- 29   I1=I1+1
- 30   CONTINUE
-C-----INVERT Z
-      I1=1
-      L=I1
-      DO 32 I=1,N
-      IF (PL(I)) 32,32,31
- 31   R(I)=Z(L)
-      I1=I1+1
-      L=L+I1
- 32   CONTINUE
-      N0=I1-1
-      CALL MCONV (N0)
-      IF (INDFLG(1)) 33,34,33
- 33   INDFLG(1)=0
-      INDFLG(2)=1
-      GO TO 49
- 34   CONTINUE
-C-----CALCULATE THEORETICAL STEP TO MINIMUM
-      I1=1
-      DO 41 I=1,N
-      DA(I)=0.
-      IF (PL(I)) 41,41,35
- 35   L1=1
-      DO 40 L=1,N
-      IF (PL(L)) 40,40,36
- 36   IF (I1-L1) 37,37,38
- 37   K=L1*(L1-1)/2+I1
-      GO TO 39
- 38   K=I1*(I1-1)/2+L1
- 39   DA(I)=DA(I)-G(L)*Z(K)
-      L1=L1+1
- 40   CONTINUE
-      I1=I1+1
- 41   CONTINUE
-C-----CHECK FOR PARAMETERS ON BOUNDARY
-      AFIX=0.
-      IFIX=0
-      I1=1
-      L=I1
-      DO 47 I=1,N
-      IF (PL(I)) 47,47,42
- 42   SIGI=SQRT(ABS(Z(L)))
-      R(I)=R(I)*Z(L)
-      IF (EPS) 44,44,43
- 43   SIGMA(I)=SIGI
- 44   IF ((A(I).LT.AMX(I).OR.DA(I).LE.0.).AND.(A(I).GT.AMN(I).OR.DA(I).G
-     1E.0.)) GO TO 46
-      AKAP=ABS(DA(I)/SIGI)
-      IF (AKAP-AFIX) 46,46,45
- 45   AFIX=AKAP
-      IFIX=I
-      IFIX1=I
- 46   I1=I1+1
-      L=L+I1
- 47   CONTINUE
-      IF (IFIX) 48,50,48
- 48   PL(IFIX)=-1.
- 49   FIXFLG=FIXFLG+1.
-      FI=0.
-C-----REPEAT CALCULATION OF THEORETICAL STEP AFTER FIXING EACH PARAMETER
-      GO TO 19
-C-----CALCULATE STEP CORRECTION FACTOR
- 50   ALAMBD=1.
-      AKAPPA=0.
-      IMAX=0
-      DO 60 I=1,N
-      IF (PL(I)) 60,60,51
- 51   BM=AMX(I)-A(I)
-      ABI=A(I)+PL(I)
-      ABM=AMX(I)
-      IF (DA(I)) 52,52,53
- 52   BM=A(I)-AMN(I)
-      ABI=A(I)-PL(I)
-      ABM=AMN(I)
- 53   BI=PL(I)
-      IF (BI-BM) 55,55,54
- 54   BI=BM
-      ABI=ABM
- 55   IF (ABS(DA(I))-BI) 58,58,56
- 56   AL=ABS(BI/DA(I))
-      IF (ALAMBD-AL) 58,58,57
- 57   IMAX=I
-      AIMAX=ABI
-      ALAMBD=AL
- 58   AKAP=ABS(DA(I)/SIGMA(I))
-      IF (AKAP-AKAPPA) 60,60,59
- 59   AKAPPA=AKAP
- 60   CONTINUE
-C-----CALCULATE NEW CORRECTED STEP
-      GT=0.
-      AMB=1.E18
-      IF (ALAMBD) 62,62,61
- 61   AMB=0.25/ALAMBD
- 62   CONTINUE
-      DO 67 I=1,N
-      IF (PL(I)) 67,67,63
- 63   IF (NN2-N2) 66,66,64
- 64   IF (ABS(DA(I)/PL(I))-AMB) 66,65,65
- 65   PL(I)=4.*PL(I)
-      T1=4.
- 66   DA(I)=DA(I)*ALAMBD
-      GT=GT+DA(I)*G(I)
- 67   CONTINUE
-C-----CHECK IF MINIMUM ATTAINED AND SET EXIT MODE
-      IF (-GT.GT.SP.OR.T1.GE.1..OR.ALAMBD.GE.1.) GO TO 68
-      ENDFLG=-1.
- 68   IF (ENDFLG) 85,69,69
- 69   IF (AKAPPA-ABS(EPS)) 70,75,75
- 70   IF (FIXFLG) 72,71,72
- 71   ENDFLG=1.
-      GO TO 85
- 72   IF (ENDFLG) 85,77,73
- 73   IF (IFIX1) 85,85,76
- 74   IF (FI-FIXFLG) 76,76,77
- 75   IF (FIXFLG) 74,76,74
- 76   FI=FI+1.
-      ENDFLG=0.
- 85   IF(ENDFLG.EQ.0..AND.NN3.GE.N3) ENDFLG=-3.
-      IF(ENDFLG.GT.0..AND.INDFLG(2).GT.0) ENDFLG=-2.
-      CALL MONITO (S,M,NN3,IT,EPS,GT,AKAPPA,ALAMBD)
-      IF (ENDFLG) 83,79,83
-C-----CHECK IF FIXING ON BOUND IS CORRECT
- 77   ENDFLG=1.
-      FIXFLG=0.
-      IFIX1=0
-      DO 78 I=1,M
- 78   PL(I)=PL0(I)
-      INDFLG(2)=0
-      GO TO 19
-C-----NEXT ITERATION
- 79   ENDFLG=0.
-      DO 80 I=1,N
-      A(I)=A(I)+DA(I)
- 80   CONTINUE
-      IF (IMAX) 82,82,81
- 81   A(IMAX)=AIMAX
- 82   OLDS=S
-      NN2=NN2+1
-      NN3=NN3+1
-      GO TO 3
- 83   MC=ENDFLG
-      RETURN
-C-----ENTRY FOR MAXIMUM LIKLEHOOD
-#if (defined(CERNLIB_CDC))&&(defined(CERNLIB_F4))
-      ENTRY LIKELM
-#endif
-#if !defined(CERNLIB_CDC)||!defined(CERNLIB_F4)
-      ENTRY LIKELM(S,M,N1,N2,N3,EPS,AKAPPA,ALAMBD,IT,MC)
-#endif
-      INDFLG(3)=1
-      GO TO 1
-C
- 84   FORMAT('1',43X,'FUNCTION MINIMISATION BY SUBROUTINE FUMILI/LIKE',
-     +'LM'/'0',55X,'IN THE FOLLOWING PRINT-OUT'/
-     +     '0',27X,'S = VALUE OF OBJECTIVE FUNCTION,',
-     + 'EC = EXPECTED CHANGE IN S DURING NEXT ITERATION'/
-     +   '0',34X,'KAPPA = ESTIMATED DISTANCE TO MINIMUM,  LAMBDA =',
-     + 'STEP LENGTH MODIFIER'///)
-      END