]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MINICERN/mathlib/gen/d/minsq.F
Merging the VirtualMC branch to the main development branch (HEAD)
[u/mrichter/AliRoot.git] / MINICERN / mathlib / gen / d / minsq.F
diff --git a/MINICERN/mathlib/gen/d/minsq.F b/MINICERN/mathlib/gen/d/minsq.F
deleted file mode 100644 (file)
index 0f4153a..0000000
+++ /dev/null
@@ -1,347 +0,0 @@
-*
-* $Id$
-*
-* $Log$
-* Revision 1.1.1.1  1996/04/01 15:02:20  mclareni
-* Mathlib gen
-*
-*
-#include "gen/pilot.h"
-      SUBROUTINE MINSQ (M,N,F,X,E,IPRINT,NFUN ,NW,W,COV,XSTEP)
-      DIMENSION F(M),X(N),E(N),W(NW)
-      IFLAG=1
-      ESCALE=1.
-      MAXFUN=NFUN
-      MPLUSN=M+N
-      KST=N+MPLUSN
-      NPLUS=N+1
-      KINV=NPLUS*(MPLUSN+1)
-      KSTORE=KINV-MPLUSN-1
-      CALL FCN1(M,N,F,X,IFLAG,NW,W,KEND,KEND2N)
-      IFLAG=4
-      NN=N+N
-      K=NN
-      DO 1 I=1,M
-      K=K+1
-      W(K)=F(I)
-    1 CONTINUE
-      IINV=2
-      K=KST
-      I=1
-    2 X(I)=X(I)+E(I)
-      CALL FCN1(M,N,F,X,IFLAG,NW,W,KEND,KEND2N)
-      X(I)=X(I)-E(I)
-      DO 3 J=1,N
-      K=K+1
-      W(K)=0.
-      W(J)=0.
-    3 CONTINUE
-      SUM=0.
-      KK=NN
-      DO 4 J=1,M
-      KK=KK+1
-      F(J)=F(J)-W(KK)
-      SUM=SUM+F(J)*F(J)
-    4 CONTINUE
-      IF (SUM) 5,5,6
-    5 WRITE(6,7)I
-    7 FORMAT(5X,'E(',I3,') UNREASONABLY SMALL')
-      RETURN
-    6 SUM=1./SQRT (SUM)
-      J=K-N+I
-      W(J)=E(I)*SUM
-      DO 9 J=1,M
-      K=K+1
-      W(K)=F(J)*SUM
-      KK=NN+J
-      DO 11 II=1,I
-      KK=KK+MPLUSN
-      W(II)=W(II)+W(KK)*W(K)
-   11 CONTINUE
-    9 CONTINUE
-      ILESS=I-1
-      IGAMAX=N+I-1
-      INCINV=N-ILESS
-      INCINP=INCINV+1
-      IF (ILESS) 13,13,14
-   13 W(KINV)=1.
-      GO TO 15
-   14 B=1.
-      DO 16 J=NPLUS,IGAMAX
-      W(J)=0.
-   16 CONTINUE
-      KK=KINV
-      DO 17 II=1,ILESS
-      IIP=II+N
-      W(IIP)=W(IIP)+W(KK)*W(II)
-      JL=II+1
-      IF (JL-ILESS) 18,18,19
-   18 DO 20 JJ=JL,ILESS
-      KK=KK+1
-      JJP=JJ+N
-      W(IIP)=W(IIP)+W(KK)*W(JJ)
-      W(JJP)=W(JJP)+W(KK)*W(II)
-   20 CONTINUE
-   19 B=B-W(II)*W(IIP)
-      KK=KK+INCINP
-   17 CONTINUE
-      B=1./B
-      KK=KINV
-      DO 21 II=NPLUS,IGAMAX
-      BB=-B*W(II)
-      DO 22 JJ=II,IGAMAX
-      W(KK)=W(KK)-BB*W(JJ)
-      KK=KK+1
-   22 CONTINUE
-      W(KK)=BB
-      KK=KK+INCINV
-   21 CONTINUE
-      W(KK)=B
-   15 GO TO (27,24),IINV
-   24 I=I+1
-      IF (I-N) 2,2,25
-   25 IINV=1
-      FF=0.
-      KL=NN
-      DO 26 I=1,M
-      KL=KL+1
-      F(I)=W(KL)
-      FF=FF+F(I)*F(I)
-   26 CONTINUE
-      ICONT = 1
-      ISS=1
-      MC=N+1
-      IPP=IPRINT*(IPRINT-1)
-      ITC=0
-      IPS=1
-      IPC=0
-   27 IPC=IPC-IPRINT
-      IF (IPC) 28,29,29
-   28 WRITE(6,30)ITC,MC,FF
-   30 FORMAT(//5X,'ITERATION',I4,I9,' CALLS OF FCN   ',5X,'F=',E24.14)
-      WRITE(6,31)(X(I),I=1,N)
-   31 FORMAT(5X,'VARIABLES',/(5E24.14))
-      WRITE(6,32)(F(I),I=1,M)
-   32 FORMAT(5X,'FUNCTIONS',/(5E24.14))
-      IPC=IPP
-      GO TO (29,33),IPS
-   29 GO TO (34,35),ICONT
-   35 IF (CHANGE-1.) 10,10,36
-   10 CONTINUE
-C*UL   37 WRITE(6,38)
-      WRITE(6,38)
-   38 FORMAT(//5X,'      FINAL VALUES OF FUNCTIONS AND VARIABLES')
-      IPS=2
-      GO TO 28
-   33 IFLAG=3
-      CALL FCN1(M,N,F,X,IFLAG,NW,W,KEND,KEND2N)
-      IF(COV.EQ.0.) RETURN
-      IWC1 = 2*N+N*(N+M)
-      IWC=IWC1
-      DO 91 I=1,N
-      DO 91 J=1,I
-      IWC=IWC+1
-      W(IWC)=0.
-      DO 90 MR=1,N
-      JCOV=N+J+MR*(N+M)
-      ICOV=N+I+MR*(N+M)
-   90 W(IWC)=W(IWC)+W(ICOV)*W(JCOV)
-   91 CONTINUE
-      WRITE(6,1000)
- 1000 FORMAT(///40X,'VARIANCE-COVARIANCE MATRIX'///)
-      IB=IWC1
-      DO 92 I=1,N
-      IA=IB+1
-      IB=IB+I
-   92 WRITE(6,1001)(W(J),J=IA,IB)
- 1001 FORMAT(10X,5G20.6//)
-      RETURN
-   36 ICONT=1
-   34 ITC=ITC+1
-      K=N
-      KK=KST
-      DO 39 I=1,N
-      K=K+1
-      W(K)=0.
-      KK=KK+N
-      W(I)=0.
-      DO 40 J=1,M
-      KK=KK+1
-      W(I)=W(I)+W(KK)*F(J)
-   40 CONTINUE
-   39 CONTINUE
-      DM=0.
-      K=KINV
-      DO 41 II=1,N
-      IIP=II+N
-      W(IIP)=W(IIP)+W(K)*W(II)
-      JL=II+1
-      IF (JL-N) 42,42,43
-   42 DO 44 JJ=JL,N
-      JJP=JJ+N
-      K=K+1
-      W(IIP)=W(IIP)+W(K)*W(JJ)
-      W(JJP)=W(JJP)+W(K)*W(II)
-   44 CONTINUE
-      K=K+1
-   43 IF (DM-ABS (W(II)*W(IIP))) 45,41,41
-   45 DM=ABS (W(II)*W(IIP))
-      KL=II
-   41 CONTINUE
-      II=N+MPLUSN*KL
-      CHANGE=0.
-      DO 46 I=1,N
-      JL=N+I
-      W(I)=0.
-      DO 47 J=NPLUS,NN
-      JL=JL+MPLUSN
-      W(I)=W(I)+W(J)*W(JL)
-   47 CONTINUE
-      II=II+1
-      W(II)=W(JL)
-      W(JL)=X(I)
-      IF (ABS (E(I)*CHANGE)-ABS (W(I))) 48,48,46
-   48 CHANGE=ABS (W(I)/E(I))
-   46 CONTINUE
-      DO 49 I=1,M
-      II=II+1
-      JL=JL+1
-      W(II)=W(JL)
-      W(JL)=F(I)
-   49 CONTINUE
-      FC=FF
-      ACC=0.1/CHANGE
-      IT=3
-      XC=0.
-      XL=0.
-      IS=3
-      IF (CHANGE-1.) 50,50,51
-   50 ICONT=2
-   51 CALL VD01A (IT,XC,FC,20,ACC,0.1,XSTEP)
-      GO TO (52,53,53,53),IT
-   52 MC=MC+1
-      IF (MC-MAXFUN) 54,54,55
-   55 WRITE(6,56)MAXFUN
-   56 FORMAT(5X,I6,' CALLS OF FCN')
-      ISS=2
-      GO TO 53
-   54 XL=XC-XL
-      DO 57 J=1,N
-      X(J)=X(J)+XL*W(J)
-   57 CONTINUE
-      XL=XC
-      CALL FCN1(M,N,F,X,IFLAG,NW,W,KEND,KEND2N)
-      FC=0.
-      DO 58 J=1,M
-      FC=FC+F(J)*F(J)
-   58 CONTINUE
-      GO TO (59,59,60),IS
-   60 K=N
-      IF (FC-FF) 61,51,62
-   61 IS=2
-      FMIN=FC
-      FSEC=FF
-      GO TO 63
-   62 IS=1
-      FMIN=FF
-      FSEC=FC
-      GO TO 63
-   59 IF (FC-FSEC) 64,51,51
-   64 K=KSTORE
-      GO TO (75,74),IS
-   75 K=N
-   74 IF (FC-FMIN) 65,51,66
-   66 FSEC=FC
-      GO TO 63
-   65 IS=3-IS
-      FSEC=FMIN
-      FMIN=FC
-   63 DO 67 J=1,N
-      K=K+1
-      W(K)=X(J)
-   67 CONTINUE
-      DO 68 J=1,M
-      K=K+1
-      W(K)=F(J)
-   68 CONTINUE
-      GO TO 51
-   53 K=KSTORE
-      KK=N
-      GO TO (69,70,69),IS
-   70 K=N
-      KK=KSTORE
-   69 SUM=0.
-      DM=0.
-      JJ=KSTORE
-      DO 71 J=1,N
-      K=K+1
-      KK=KK+1
-      JJ=JJ+1
-      X(J)=W(K)
-      W(JJ)=W(K)-W(KK)
-   71 CONTINUE
-      DO 72 J=1,M
-      K=K+1
-      KK=KK+1
-      JJ=JJ+1
-      F(J)=W(K)
-      W(JJ)=W(K)-W(KK)
-      SUM=SUM+W(JJ)*W(JJ)
-      DM=DM+F(J)*W(JJ)
-   72 CONTINUE
-      GO TO (73,10),ISS
-   73 J=KINV
-      KK=NPLUS-KL
-      DO 76 I=1,KL
-      K=J+KL-I
-      J=K+KK
-      W(I)=W(K)
-      W(K)=W(J-1)
-   76 CONTINUE
-      IF (KL-N) 77,78,78
-   77 KL=KL+1
-      JJ=K
-      DO 79 I=KL,N
-      K=K+1
-      J=J+NPLUS-I
-      W(I)=W(K)
-      W(K)=W(J-1)
-   79 CONTINUE
-      W(JJ)=W(K)
-      B=1./W(KL-1)
-      W(KL-1)=W(N)
-      GO TO 88
-   78 B=1./W(N)
-   88 K=KINV
-      DO 80 I=1,ILESS
-      BB=B*W(I)
-      DO 81 J=I,ILESS
-      W(K)=W(K)-BB*W(J)
-      K=K+1
-   81 CONTINUE
-      K=K+1
-   80 CONTINUE
-      IF (FMIN-FF) 82,83,83
-   83 CHANGE=0.
-      GO TO 84
-   82 FF=FMIN
-      CHANGE=ABS (XC)*CHANGE
-   84 XL=-DM/FMIN
-      SUM=1./SQRT (SUM+DM*XL)
-      K=KSTORE
-      DO 85 I=1,N
-      K=K+1
-      W(K)=SUM*W(K)
-      W(I)=0.
-   85 CONTINUE
-      DO 86 I=1,M
-      K=K+1
-      W(K)=SUM*(W(K)+XL*F(I))
-      KK=NN+I
-      DO 87 J=1,N
-      KK=KK+MPLUSN
-      W(J)=W(J)+W(KK)*W(K)
-   87 CONTINUE
-   86 CONTINUE
-      GO TO 14
-      END