| [2403] | 1 | * | 
|---|
|  | 2 | * $Id: mnexcm.F,v 1.1.1.1 2003-06-11 14:18:27 cmv Exp $ | 
|---|
|  | 3 | * | 
|---|
|  | 4 | * $Log: not supported by cvs2svn $ | 
|---|
|  | 5 | * Revision 1.2  1996/03/15 18:02:45  james | 
|---|
|  | 6 | *     Modified Files: | 
|---|
|  | 7 | * mnderi.F eliminate possible division by zero | 
|---|
|  | 8 | * mnexcm.F suppress print on STOP when print flag=-1 | 
|---|
|  | 9 | *          set FVAL3 to flag if FCN already called with IFLAG=3 | 
|---|
|  | 10 | * mninit.F set version 96.03 | 
|---|
|  | 11 | * mnlims.F remove arguments, not needed | 
|---|
|  | 12 | * mnmigr.F VLEN -> LENV in debug print statement | 
|---|
|  | 13 | * mnparm.F move call to MNRSET to after NPAR redefined, to zero all | 
|---|
|  | 14 | * mnpsdf.F eliminate possible division by zero | 
|---|
|  | 15 | * mnscan.F suppress printout when print flag =-1 | 
|---|
|  | 16 | * mnset.F  remove arguments in call to MNLIMS | 
|---|
|  | 17 | * mnsimp.F fix CSTATU so status is PROGRESS only if new minimum | 
|---|
|  | 18 | * mnvert.F eliminate possible division by zero | 
|---|
|  | 19 | * | 
|---|
|  | 20 | * Revision 1.1.1.1  1996/03/07 14:31:29  mclareni | 
|---|
|  | 21 | * Minuit | 
|---|
|  | 22 | * | 
|---|
|  | 23 | * | 
|---|
|  | 24 | #include "minuit/pilot.h" | 
|---|
|  | 25 | SUBROUTINE MNEXCM(FCN,COMAND,PLIST,LLIST,IERFLG,FUTIL) | 
|---|
|  | 26 | #include "minuit/d506dp.inc" | 
|---|
|  | 27 | CC        Interprets a command and takes appropriate action, | 
|---|
|  | 28 | CC        either directly by skipping to the corresponding code in | 
|---|
|  | 29 | CC        MNEXCM, or by setting up a call to a subroutine | 
|---|
|  | 30 | CC | 
|---|
|  | 31 | #include "minuit/d506cm.inc" | 
|---|
|  | 32 | EXTERNAL FCN,FUTIL | 
|---|
|  | 33 | CHARACTER*(*) COMAND | 
|---|
|  | 34 | C   Cannot say DIMENSION PLIST(LLIST) since LLIST can be =0. | 
|---|
|  | 35 | DIMENSION PLIST(*) | 
|---|
|  | 36 | PARAMETER (MXPT=101) | 
|---|
|  | 37 | DIMENSION XPTU(MXPT), YPTU(MXPT) | 
|---|
|  | 38 | C  alphabetical order of command names! | 
|---|
|  | 39 | CHARACTER*10 CNAME(40), CNEWAY, CHWHY*18, C26*30, CVBLNK*2 | 
|---|
|  | 40 | LOGICAL LTOFIX, LFIXED, LFREED | 
|---|
|  | 41 | C | 
|---|
|  | 42 | CHARACTER COMD*4 | 
|---|
|  | 43 | CHARACTER CLOWER*26, CUPPER*26 | 
|---|
|  | 44 | DATA CLOWER/'abcdefghijklmnopqrstuvwxyz'/ | 
|---|
|  | 45 | DATA CUPPER/'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/ | 
|---|
|  | 46 | C | 
|---|
|  | 47 | C  recognized MINUIT commands: | 
|---|
|  | 48 | DATA CNAME( 1) / 'MINImize  ' / | 
|---|
|  | 49 | DATA CNAME( 2) / 'SEEk      ' / | 
|---|
|  | 50 | DATA CNAME( 3) / 'SIMplex   ' / | 
|---|
|  | 51 | DATA CNAME( 4) / 'MIGrad    ' / | 
|---|
|  | 52 | DATA CNAME( 5) / 'MINOs     ' / | 
|---|
|  | 53 | DATA CNAME( 6) / 'SET xxx   ' / | 
|---|
|  | 54 | DATA CNAME( 7) / 'SHOw xxx  ' / | 
|---|
|  | 55 | DATA CNAME( 8) / 'TOP of pag' / | 
|---|
|  | 56 | DATA CNAME( 9) / 'FIX       ' / | 
|---|
|  | 57 | DATA CNAME(10) / 'REStore   ' / | 
|---|
|  | 58 | DATA CNAME(11) / 'RELease   ' / | 
|---|
|  | 59 | DATA CNAME(12) / 'SCAn      ' / | 
|---|
|  | 60 | DATA CNAME(13) / 'CONtour   ' / | 
|---|
|  | 61 | DATA CNAME(14) / 'HESse     ' / | 
|---|
|  | 62 | DATA CNAME(15) / 'SAVe      ' / | 
|---|
|  | 63 | DATA CNAME(16) / 'IMProve   ' / | 
|---|
|  | 64 | DATA CNAME(17) / 'CALl fcn  ' / | 
|---|
|  | 65 | DATA CNAME(18) / 'STAndard  ' / | 
|---|
|  | 66 | DATA CNAME(19) / 'END       ' / | 
|---|
|  | 67 | DATA CNAME(20) / 'EXIt      ' / | 
|---|
|  | 68 | DATA CNAME(21) / 'RETurn    ' / | 
|---|
|  | 69 | DATA CNAME(22) / 'CLEar     ' / | 
|---|
|  | 70 | DATA CNAME(23) / 'HELP      ' / | 
|---|
|  | 71 | DATA CNAME(24) / 'MNContour ' / | 
|---|
|  | 72 | DATA CNAME(25) / 'STOp      ' / | 
|---|
|  | 73 | DATA CNAME(26) / 'JUMp      ' / | 
|---|
|  | 74 | DATA CNAME(27) / '          ' / | 
|---|
|  | 75 | DATA CNAME(28) / '          ' / | 
|---|
|  | 76 | DATA CNAME(29) / '          ' / | 
|---|
|  | 77 | DATA CNAME(30) / '          ' / | 
|---|
|  | 78 | DATA CNAME(31) / '          ' / | 
|---|
|  | 79 | DATA CNAME(32) / '          ' / | 
|---|
|  | 80 | DATA CNAME(33) / '          ' / | 
|---|
|  | 81 | C  obsolete commands: | 
|---|
|  | 82 | DATA CNAME(34) / 'COVARIANCE' / | 
|---|
|  | 83 | DATA CNAME(35) / 'PRINTOUT  ' / | 
|---|
|  | 84 | DATA CNAME(36) / 'GRADIENT  ' / | 
|---|
|  | 85 | DATA CNAME(37) / 'MATOUT    ' / | 
|---|
|  | 86 | DATA CNAME(38) / 'ERROR DEF ' / | 
|---|
|  | 87 | DATA CNAME(39) / 'LIMITS    ' / | 
|---|
|  | 88 | DATA CNAME(40) / 'PUNCH     ' / | 
|---|
|  | 89 | DATA NNTOT/40/ | 
|---|
|  | 90 | C      IERFLG is now (94.5) defined the same as ICONDN in MNCOMD | 
|---|
|  | 91 | CC            = 0: command executed normally | 
|---|
|  | 92 | CC              1: command is blank, ignored | 
|---|
|  | 93 | CC              2: command line unreadable, ignored | 
|---|
|  | 94 | CC              3: unknown command, ignored | 
|---|
|  | 95 | CC              4: abnormal termination (e.g., MIGRAD not converged) | 
|---|
|  | 96 | CC              9: reserved | 
|---|
|  | 97 | CC             10: END command | 
|---|
|  | 98 | CC             11: EXIT or STOP command | 
|---|
|  | 99 | CC             12: RETURN command | 
|---|
|  | 100 | LK = LEN(COMAND) | 
|---|
|  | 101 | IF (LK .GT. MAXCWD) LK=MAXCWD | 
|---|
|  | 102 | CWORD = COMAND(1:LK) | 
|---|
|  | 103 | C              get upper case | 
|---|
|  | 104 | DO 16 ICOL= 1, LK | 
|---|
|  | 105 | DO 15 LET= 1, 26 | 
|---|
|  | 106 | IF (CWORD(ICOL:ICOL) .EQ. CLOWER(LET:LET)) | 
|---|
|  | 107 | +      CWORD(ICOL:ICOL) = CUPPER(LET:LET) | 
|---|
|  | 108 | 15   CONTINUE | 
|---|
|  | 109 | 16 CONTINUE | 
|---|
|  | 110 | C           Copy the first MAXP arguments into COMMON (WORD7), making | 
|---|
|  | 111 | C           sure that WORD7(1)=0. if LLIST=0 | 
|---|
|  | 112 | DO 20 IW= 1, MAXP | 
|---|
|  | 113 | WORD7(IW) = ZERO | 
|---|
|  | 114 | IF (IW .LE. LLIST) WORD7(IW) = PLIST(IW) | 
|---|
|  | 115 | 20 CONTINUE | 
|---|
|  | 116 | ICOMND = ICOMND + 1 | 
|---|
|  | 117 | NFCNLC = NFCN | 
|---|
|  | 118 | IF (CWORD(1:7).NE.'SET PRI' .OR. WORD7(1).GE.0.)  THEN | 
|---|
|  | 119 | IF (ISW(5) .GE. 0) THEN | 
|---|
|  | 120 | LNOW = LLIST | 
|---|
|  | 121 | IF (LNOW .GT. 4)  LNOW=4 | 
|---|
|  | 122 | WRITE (ISYSWR,25) ICOMND,CWORD(1:LK),(PLIST(I),I=1,LNOW) | 
|---|
|  | 123 | 25    FORMAT (1H ,10(1H*)/' **',I5,' **',A,4G12.4) | 
|---|
|  | 124 | INONDE = 0 | 
|---|
|  | 125 | IF (LLIST .GT. LNOW) THEN | 
|---|
|  | 126 | KLL = LLIST | 
|---|
|  | 127 | IF (LLIST .GT. MAXP) THEN | 
|---|
|  | 128 | INONDE = 1 | 
|---|
|  | 129 | KLL = MAXP | 
|---|
|  | 130 | ENDIF | 
|---|
|  | 131 | WRITE (CVBLNK,'(I2)') LK | 
|---|
|  | 132 | C26 = '(11H **********,'//CVBLNK//'X,4G12.4)' | 
|---|
|  | 133 | WRITE (ISYSWR,C26) (PLIST(I),I=LNOW+1,KLL) | 
|---|
|  | 134 | ENDIF | 
|---|
|  | 135 | WRITE (ISYSWR, '(1H ,10(1H*))' ) | 
|---|
|  | 136 | IF (INONDE .GT. 0)  WRITE (ISYSWR, '(1H ,10(1H*),A,I3,A)') | 
|---|
|  | 137 | +        '  ERROR: ABOVE CALL TO MNEXCM TRIED TO PASS MORE THAN ', | 
|---|
|  | 138 | +        MAXP,' PARAMETERS.' | 
|---|
|  | 139 | ENDIF | 
|---|
|  | 140 | ENDIF | 
|---|
|  | 141 | NFCNMX = WORD7(1) | 
|---|
|  | 142 | IF (NFCNMX .LE. 0)  NFCNMX = 200 + 100*NPAR + 5*NPAR**2 | 
|---|
|  | 143 | EPSI = WORD7(2) | 
|---|
|  | 144 | IF (EPSI .LE. ZERO)  EPSI = 0.1 * UP | 
|---|
|  | 145 | LNEWMN = .FALSE. | 
|---|
|  | 146 | LPHEAD = .TRUE. | 
|---|
|  | 147 | ISW(1) = 0 | 
|---|
|  | 148 | IERFLG = 0 | 
|---|
|  | 149 | C                look for command in list CNAME . . . . . . . . . . | 
|---|
|  | 150 | DO 80 I= 1, NNTOT | 
|---|
|  | 151 | IF (CWORD(1:3) .EQ. CNAME(I)(1:3))  GO TO 90 | 
|---|
|  | 152 | 80 CONTINUE | 
|---|
|  | 153 | WRITE (ISYSWR,'(11X,''UNKNOWN COMMAND IGNORED:'',A)') COMAND | 
|---|
|  | 154 | IERFLG = 3 | 
|---|
|  | 155 | GO TO 5000 | 
|---|
|  | 156 | C                normal case: recognized MINUIT command . . . . . . . | 
|---|
|  | 157 | 90 CONTINUE | 
|---|
|  | 158 | IF (CWORD(1:4) .EQ. 'MINO') I = 5 | 
|---|
|  | 159 | IF (I.NE.6 .AND. I.NE.7 .AND. I.NE.8 .AND. I.NE.23)  THEN | 
|---|
|  | 160 | CFROM = CNAME(I) | 
|---|
|  | 161 | NFCNFR = NFCN | 
|---|
|  | 162 | ENDIF | 
|---|
|  | 163 | C              1    2    3    4    5    6    7    8    9   10 | 
|---|
|  | 164 | GO TO ( 400, 200, 300, 400, 500, 700, 700, 800, 900,1000, | 
|---|
|  | 165 | 1       1100,1200,1300,1400,1500,1600,1700,1800,1900,1900, | 
|---|
|  | 166 | 2       1900,2200,2300,2400,1900,2600,3300,3300,3300,3300, | 
|---|
|  | 167 | 3       3300,3300,3300,3400,3500,3600,3700,3800,3900,4000) , I | 
|---|
|  | 168 | C                                        . . . . . . . . . . seek | 
|---|
|  | 169 | 200 CALL MNSEEK(FCN,FUTIL) | 
|---|
|  | 170 | GO TO 5000 | 
|---|
|  | 171 | C                                        . . . . . . . . . . simplex | 
|---|
|  | 172 | 300 CALL MNSIMP(FCN,FUTIL) | 
|---|
|  | 173 | IF (ISW(4) .LT. 1)  IERFLG = 4 | 
|---|
|  | 174 | GO TO 5000 | 
|---|
|  | 175 | C                                        . . . . . . migrad, minimize | 
|---|
|  | 176 | 400 CONTINUE | 
|---|
|  | 177 | NF = NFCN | 
|---|
|  | 178 | APSI = EPSI | 
|---|
|  | 179 | CALL MNMIGR(FCN,FUTIL) | 
|---|
|  | 180 | CALL MNWERR | 
|---|
|  | 181 | IF (ISW(4) .GE. 1)         GO TO 5000 | 
|---|
|  | 182 | IERFLG = 4 | 
|---|
|  | 183 | IF (ISW(1) .EQ. 1)         GO TO 5000 | 
|---|
|  | 184 | IF (CWORD(1:3) .EQ. 'MIG') GO TO 5000 | 
|---|
|  | 185 | NFCNMX = NFCNMX + NF - NFCN | 
|---|
|  | 186 | NF = NFCN | 
|---|
|  | 187 | CALL MNSIMP(FCN,FUTIL) | 
|---|
|  | 188 | IF (ISW(1) .EQ. 1)  GO TO 5000 | 
|---|
|  | 189 | NFCNMX = NFCNMX + NF - NFCN | 
|---|
|  | 190 | CALL MNMIGR(FCN,FUTIL) | 
|---|
|  | 191 | IF (ISW(4) .GE. 1)  IERFLG = 0 | 
|---|
|  | 192 | CALL MNWERR | 
|---|
|  | 193 | GO TO 5000 | 
|---|
|  | 194 | C                                        . . . . . . . . . . minos | 
|---|
|  | 195 | 500 CONTINUE | 
|---|
|  | 196 | NSUPER = NFCN + 2*(NPAR+1)*NFCNMX | 
|---|
|  | 197 | C          possible loop over new minima | 
|---|
|  | 198 | EPSI = 0.1 * UP | 
|---|
|  | 199 | 510 CONTINUE | 
|---|
|  | 200 | CALL MNCUVE(FCN,FUTIL) | 
|---|
|  | 201 | CALL MNMNOS(FCN,FUTIL) | 
|---|
|  | 202 | IF (.NOT. LNEWMN)  GO TO 5000 | 
|---|
|  | 203 | CALL MNRSET(0) | 
|---|
|  | 204 | CALL MNMIGR(FCN,FUTIL) | 
|---|
|  | 205 | CALL MNWERR | 
|---|
|  | 206 | IF (NFCN .LT. NSUPER)  GO TO 510 | 
|---|
|  | 207 | WRITE (ISYSWR,'(/'' TOO MANY FUNCTION CALLS. MINOS GIVES UP''/)') | 
|---|
|  | 208 | IERFLG = 4 | 
|---|
|  | 209 | GO TO 5000 | 
|---|
|  | 210 | C                                        . . . . . . . . . .set, show | 
|---|
|  | 211 | 700 CALL MNSET(FCN,FUTIL) | 
|---|
|  | 212 | GO TO 5000 | 
|---|
|  | 213 | C                                        . . . . . . . . . . top of page | 
|---|
|  | 214 | 800 CONTINUE | 
|---|
|  | 215 | WRITE (ISYSWR,'(1H1)') | 
|---|
|  | 216 | GO TO 5000 | 
|---|
|  | 217 | C                                        . . . . . . . . . . fix | 
|---|
|  | 218 | 900 LTOFIX = .TRUE. | 
|---|
|  | 219 | C                                        . . (also release) .... | 
|---|
|  | 220 | 901 CONTINUE | 
|---|
|  | 221 | LFREED = .FALSE. | 
|---|
|  | 222 | LFIXED = .FALSE. | 
|---|
|  | 223 | IF (LLIST .EQ. 0)  THEN | 
|---|
|  | 224 | WRITE (ISYSWR,'(A,A)') CWORD,':  NO PARAMETERS REQUESTED ' | 
|---|
|  | 225 | GO TO 5000 | 
|---|
|  | 226 | ENDIF | 
|---|
|  | 227 | DO 950 ILIST= 1, LLIST | 
|---|
|  | 228 | IEXT = PLIST(ILIST) | 
|---|
|  | 229 | CHWHY = ' IS UNDEFINED.' | 
|---|
|  | 230 | IF (IEXT .LE. 0)         GO TO 930 | 
|---|
|  | 231 | IF (IEXT .GT. NU)        GO TO 930 | 
|---|
|  | 232 | IF (NVARL(IEXT) .LT. 0)  GO TO 930 | 
|---|
|  | 233 | CHWHY = ' IS CONSTANT.  ' | 
|---|
|  | 234 | IF (NVARL(IEXT) .EQ. 0)  GO TO 930 | 
|---|
|  | 235 | IINT = NIOFEX(IEXT) | 
|---|
|  | 236 | IF (LTOFIX) THEN | 
|---|
|  | 237 | CHWHY = ' ALREADY FIXED.' | 
|---|
|  | 238 | IF (IINT .EQ. 0)      GO TO 930 | 
|---|
|  | 239 | CALL MNFIXP(IINT,IERR) | 
|---|
|  | 240 | IF (IERR .EQ. 0) THEN | 
|---|
|  | 241 | LFIXED = .TRUE. | 
|---|
|  | 242 | ELSE | 
|---|
|  | 243 | IERFLG = 4 | 
|---|
|  | 244 | ENDIF | 
|---|
|  | 245 | ELSE | 
|---|
|  | 246 | CHWHY = ' ALREADY VARIABLE.' | 
|---|
|  | 247 | IF (IINT .GT. 0)      GO TO 930 | 
|---|
|  | 248 | KRL = -IABS(IEXT) | 
|---|
|  | 249 | CALL MNFREE(KRL) | 
|---|
|  | 250 | LFREED = .TRUE. | 
|---|
|  | 251 | ENDIF | 
|---|
|  | 252 | GO TO 950 | 
|---|
|  | 253 | 930 WRITE (ISYSWR,'(A,I4,A,A)') ' PARAMETER',IEXT,CHWHY,' IGNORED.' | 
|---|
|  | 254 | 950 CONTINUE | 
|---|
|  | 255 | IF (LFREED .OR. LFIXED)  CALL MNRSET(0) | 
|---|
|  | 256 | IF (LFREED)  THEN | 
|---|
|  | 257 | ISW(2) = 0 | 
|---|
|  | 258 | DCOVAR = 1. | 
|---|
|  | 259 | EDM = BIGEDM | 
|---|
|  | 260 | ISW(4) = 0 | 
|---|
|  | 261 | ENDIF | 
|---|
|  | 262 | CALL MNWERR | 
|---|
|  | 263 | IF (ISW(5) .GT. 1)  CALL MNPRIN(5,AMIN) | 
|---|
|  | 264 | GO TO 5000 | 
|---|
|  | 265 | C                                        . . . . . . . . . . restore | 
|---|
|  | 266 | 1000 IT = WORD7(1) | 
|---|
|  | 267 | IF (IT.GT.1 .OR. IT.LT.0)  GO TO 1005 | 
|---|
|  | 268 | LFREED = (NPFIX .GT. 0) | 
|---|
|  | 269 | CALL MNFREE(IT) | 
|---|
|  | 270 | IF (LFREED) THEN | 
|---|
|  | 271 | CALL MNRSET(0) | 
|---|
|  | 272 | ISW(2) = 0 | 
|---|
|  | 273 | DCOVAR = 1. | 
|---|
|  | 274 | EDM = BIGEDM | 
|---|
|  | 275 | ENDIF | 
|---|
|  | 276 | GO TO 5000 | 
|---|
|  | 277 | 1005 WRITE (ISYSWR,'(A,I4)') ' IGNORED.  UNKNOWN ARGUMENT:',IT | 
|---|
|  | 278 | IERFLG = 3 | 
|---|
|  | 279 | GO TO 5000 | 
|---|
|  | 280 | C                                        . . . . . . . . . . release | 
|---|
|  | 281 | 1100 LTOFIX = .FALSE. | 
|---|
|  | 282 | GO TO 901 | 
|---|
|  | 283 | C                                       . . . . . . . . . . scan . . . | 
|---|
|  | 284 | 1200 CONTINUE | 
|---|
|  | 285 | IEXT = WORD7(1) | 
|---|
|  | 286 | IF (IEXT .LE. 0)  GO TO 1210 | 
|---|
|  | 287 | IT2 = 0 | 
|---|
|  | 288 | IF (IEXT .LE. NU)  IT2 = NIOFEX(IEXT) | 
|---|
|  | 289 | IF (IT2 .LE. 0)  GO TO 1250 | 
|---|
|  | 290 | 1210 CALL MNSCAN(FCN,FUTIL) | 
|---|
|  | 291 | GO TO 5000 | 
|---|
|  | 292 | 1250 WRITE (ISYSWR,'(A,I4,A)') ' PARAMETER',IEXT,' NOT VARIABLE.' | 
|---|
|  | 293 | IERFLG = 3 | 
|---|
|  | 294 | GO TO 5000 | 
|---|
|  | 295 | C                                        . . . . . . . . . . contour | 
|---|
|  | 296 | 1300 CONTINUE | 
|---|
|  | 297 | KE1 = WORD7(1) | 
|---|
|  | 298 | KE2 = WORD7(2) | 
|---|
|  | 299 | IF (KE1 .EQ. 0)  THEN | 
|---|
|  | 300 | IF (NPAR .EQ. 2)  THEN | 
|---|
|  | 301 | KE1 = NEXOFI(1) | 
|---|
|  | 302 | KE2 = NEXOFI(2) | 
|---|
|  | 303 | ELSE | 
|---|
|  | 304 | WRITE (ISYSWR,'(A,A)') CWORD,':  NO PARAMETERS REQUESTED ' | 
|---|
|  | 305 | IERFLG = 3 | 
|---|
|  | 306 | GO TO 5000 | 
|---|
|  | 307 | ENDIF | 
|---|
|  | 308 | ENDIF | 
|---|
|  | 309 | NFCNMX = 1000 | 
|---|
|  | 310 | CALL MNCNTR(FCN,KE1,KE2,IERRF,FUTIL) | 
|---|
|  | 311 | IF (IERRF .GT. 0)  IERFLG = 3 | 
|---|
|  | 312 | GO TO 5000 | 
|---|
|  | 313 | C                                        . . . . . . . . . . hesse | 
|---|
|  | 314 | 1400 CONTINUE | 
|---|
|  | 315 | CALL MNHESS(FCN,FUTIL) | 
|---|
|  | 316 | CALL MNWERR | 
|---|
|  | 317 | IF (ISW(5) .GE. 0)  CALL MNPRIN(2, AMIN) | 
|---|
|  | 318 | IF (ISW(5) .GE. 1)  CALL MNMATU(1) | 
|---|
|  | 319 | GO TO 5000 | 
|---|
|  | 320 | C                                        . . . . . . . . . . save | 
|---|
|  | 321 | 1500 CONTINUE | 
|---|
|  | 322 | CALL MNSAVE | 
|---|
|  | 323 | GO TO 5000 | 
|---|
|  | 324 | C                                        . . . . . . . . . . improve | 
|---|
|  | 325 | 1600 CONTINUE | 
|---|
|  | 326 | CALL MNCUVE(FCN,FUTIL) | 
|---|
|  | 327 | CALL MNIMPR(FCN,FUTIL) | 
|---|
|  | 328 | IF (LNEWMN)  GO TO 400 | 
|---|
|  | 329 | IERFLG = 4 | 
|---|
|  | 330 | GO TO 5000 | 
|---|
|  | 331 | C                                        . . . . . . . . . . call fcn | 
|---|
|  | 332 | 1700 IFLAG = WORD7(1) | 
|---|
|  | 333 | NPARX = NPAR | 
|---|
|  | 334 | F = UNDEFI | 
|---|
|  | 335 | CALL FCN(NPARX,GIN,F,U,IFLAG,FUTIL) | 
|---|
|  | 336 | NFCN = NFCN + 1 | 
|---|
|  | 337 | NOWPRT = 0 | 
|---|
|  | 338 | IF (F .NE. UNDEFI)  THEN | 
|---|
|  | 339 | IF (AMIN .EQ. UNDEFI)  THEN | 
|---|
|  | 340 | AMIN = F | 
|---|
|  | 341 | NOWPRT = 1 | 
|---|
|  | 342 | ELSE IF (F .LT. AMIN)  THEN | 
|---|
|  | 343 | AMIN = F | 
|---|
|  | 344 | NOWPRT = 1 | 
|---|
|  | 345 | ENDIF | 
|---|
|  | 346 | IF (ISW(5).GE.0 .AND. IFLAG.LE.5 .AND. NOWPRT.EQ.1) | 
|---|
|  | 347 | +          CALL MNPRIN(5,AMIN) | 
|---|
|  | 348 | IF (IFLAG .EQ. 3)  FVAL3=F | 
|---|
|  | 349 | ENDIF | 
|---|
|  | 350 | IF (IFLAG .GT. 5)  CALL MNRSET(1) | 
|---|
|  | 351 | GO TO 5000 | 
|---|
|  | 352 | C                                        . . . . . . . . . . standard | 
|---|
|  | 353 | 1800 CALL STAND | 
|---|
|  | 354 | GO TO 5000 | 
|---|
|  | 355 | C                                       . . . return, stop, end, exit | 
|---|
|  | 356 | 1900 IT = WORD7(1) | 
|---|
|  | 357 | IF (FVAL3 .NE. AMIN .AND. IT .EQ. 0)  THEN | 
|---|
|  | 358 | IFLAG = 3 | 
|---|
|  | 359 | IF (ISW(5) .GE. 0) | 
|---|
|  | 360 | +WRITE (ISYSWR,'(/A/)') ' CALL TO USER FUNCTION WITH IFLAG = 3' | 
|---|
|  | 361 | NPARX = NPAR | 
|---|
|  | 362 | CALL FCN(NPARX,GIN,F,U,IFLAG,FUTIL) | 
|---|
|  | 363 | NFCN = NFCN + 1 | 
|---|
|  | 364 | FVAL3 = F | 
|---|
|  | 365 | ENDIF | 
|---|
|  | 366 | IERFLG = 11 | 
|---|
|  | 367 | IF (CWORD(1:3) .EQ. 'END')  IERFLG = 10 | 
|---|
|  | 368 | IF (CWORD(1:3) .EQ. 'RET')  IERFLG = 12 | 
|---|
|  | 369 | GO TO 5000 | 
|---|
|  | 370 | C                                        . . . . . . . . . . clear | 
|---|
|  | 371 | 2200 CONTINUE | 
|---|
|  | 372 | CALL MNCLER | 
|---|
|  | 373 | IF (ISW(5) .GE. 1)  WRITE (ISYSWR,'(A)') | 
|---|
|  | 374 | + ' MINUIT MEMORY CLEARED. NO PARAMETERS NOW DEFINED.' | 
|---|
|  | 375 | GO TO 5000 | 
|---|
|  | 376 | C                                        . . . . . . . . . . help | 
|---|
|  | 377 | 2300 CONTINUE | 
|---|
|  | 378 | CCCC      IF (INDEX(CWORD,'SHO') .GT. 0)  GO TO 700 | 
|---|
|  | 379 | CCCC      IF (INDEX(CWORD,'SET') .GT. 0)  GO TO 700 | 
|---|
|  | 380 | KCOL = 0 | 
|---|
|  | 381 | DO 2310 ICOL= 5,LK | 
|---|
|  | 382 | IF (CWORD(ICOL:ICOL) .EQ. ' ') GO TO 2310 | 
|---|
|  | 383 | KCOL = ICOL | 
|---|
|  | 384 | GO TO 2320 | 
|---|
|  | 385 | 2310 CONTINUE | 
|---|
|  | 386 | 2320 CONTINUE | 
|---|
|  | 387 | IF (KCOL .EQ. 0)  THEN | 
|---|
|  | 388 | COMD = '*   ' | 
|---|
|  | 389 | ELSE | 
|---|
|  | 390 | COMD = CWORD(KCOL:LK) | 
|---|
|  | 391 | ENDIF | 
|---|
|  | 392 | CALL MNHELP(COMD,ISYSWR) | 
|---|
|  | 393 | GO TO 5000 | 
|---|
|  | 394 | C                                       . . . . . . . . . . MNContour | 
|---|
|  | 395 | 2400 CONTINUE | 
|---|
|  | 396 | EPSI = 0.05 * UP | 
|---|
|  | 397 | KE1 = WORD7(1) | 
|---|
|  | 398 | KE2 = WORD7(2) | 
|---|
|  | 399 | IF (KE1.EQ.0 .AND. NPAR.EQ.2) THEN | 
|---|
|  | 400 | KE1 = NEXOFI(1) | 
|---|
|  | 401 | KE2 = NEXOFI(2) | 
|---|
|  | 402 | ENDIF | 
|---|
|  | 403 | NPTU = WORD7(3) | 
|---|
|  | 404 | IF (NPTU .LE. 0)  NPTU=20 | 
|---|
|  | 405 | IF (NPTU .GT. MXPT)  NPTU = MXPT | 
|---|
|  | 406 | NFCNMX =  100*(NPTU+5)*(NPAR+1) | 
|---|
|  | 407 | CALL MNCONT(FCN,KE1,KE2,NPTU,XPTU,YPTU,IERRF,FUTIL) | 
|---|
|  | 408 | IF (IERRF .LT. NPTU) IERFLG = 4 | 
|---|
|  | 409 | IF (IERRF .EQ. -1)   IERFLG = 3 | 
|---|
|  | 410 | GO TO 5000 | 
|---|
|  | 411 | C                                      . . . . . . . . . . jump | 
|---|
|  | 412 | 2600 CONTINUE | 
|---|
|  | 413 | STEP = WORD7(1) | 
|---|
|  | 414 | IF (STEP .LE. ZERO)  STEP = 2. | 
|---|
|  | 415 | RNO = 0. | 
|---|
|  | 416 | IZERO = 0 | 
|---|
|  | 417 | DO 2620 I= 1, NPAR | 
|---|
|  | 418 | CALL MNRN15(RNO,IZERO) | 
|---|
|  | 419 | RNO = 2.0*RNO - 1.0 | 
|---|
|  | 420 | 2620   X(I) = X(I) + RNO*STEP*WERR(I) | 
|---|
|  | 421 | CALL MNINEX(X) | 
|---|
|  | 422 | CALL MNAMIN(FCN,FUTIL) | 
|---|
|  | 423 | CALL MNRSET(0) | 
|---|
|  | 424 | GO TO 5000 | 
|---|
|  | 425 | C                                      . . . . . . . . . . blank line | 
|---|
|  | 426 | 3300 CONTINUE | 
|---|
|  | 427 | WRITE (ISYSWR,'(10X,A)') ' BLANK COMMAND IGNORED.' | 
|---|
|  | 428 | IERFLG = 1 | 
|---|
|  | 429 | GO TO 5000 | 
|---|
|  | 430 | C  . . . . . . . . obsolete commands     . . . . . . . . . . . . . . | 
|---|
|  | 431 | C                                      . . . . . . . . . . covariance | 
|---|
|  | 432 | 3400 CONTINUE | 
|---|
|  | 433 | WRITE (ISYSWR, '(A)') ' THE "COVARIANCE" COMMAND IS OSBSOLETE.', | 
|---|
|  | 434 | + ' THE COVARIANCE MATRIX IS NOW SAVED IN A DIFFERENT FORMAT', | 
|---|
|  | 435 | + ' WITH THE "SAVE" COMMAND AND READ IN WITH:"SET COVARIANCE"' | 
|---|
|  | 436 | IERFLG = 3 | 
|---|
|  | 437 | GO TO 5000 | 
|---|
|  | 438 | C                                        . . . . . . . . . . printout | 
|---|
|  | 439 | 3500 CONTINUE | 
|---|
|  | 440 | CNEWAY = 'SET PRInt ' | 
|---|
|  | 441 | GO TO 3100 | 
|---|
|  | 442 | C                                        . . . . . . . . . . gradient | 
|---|
|  | 443 | 3600 CONTINUE | 
|---|
|  | 444 | CNEWAY = 'SET GRAd  ' | 
|---|
|  | 445 | GO TO 3100 | 
|---|
|  | 446 | C                                        . . . . . . . . . . matout | 
|---|
|  | 447 | 3700 CONTINUE | 
|---|
|  | 448 | CNEWAY = 'SHOW COVar' | 
|---|
|  | 449 | GO TO 3100 | 
|---|
|  | 450 | C                                        . . . . . . . . . error def | 
|---|
|  | 451 | 3800 CONTINUE | 
|---|
|  | 452 | CNEWAY = 'SET ERRdef' | 
|---|
|  | 453 | GO TO 3100 | 
|---|
|  | 454 | C                                        . . . . . . . . . . limits | 
|---|
|  | 455 | 3900 CONTINUE | 
|---|
|  | 456 | CNEWAY = 'SET LIMits' | 
|---|
|  | 457 | GO TO 3100 | 
|---|
|  | 458 | C                                        . . . . . . . . . . punch | 
|---|
|  | 459 | 4000 CONTINUE | 
|---|
|  | 460 | CNEWAY = 'SAVE      ' | 
|---|
|  | 461 | C                                ....... come from obsolete commands | 
|---|
|  | 462 | 3100 WRITE (ISYSWR, 3101) CWORD,CNEWAY | 
|---|
|  | 463 | 3101 FORMAT (' OBSOLETE COMMAND:',1X,A10,5X,'PLEASE USE:',1X,A10) | 
|---|
|  | 464 | CWORD = CNEWAY | 
|---|
|  | 465 | IF (CWORD .EQ. 'SAVE      ') GO TO 1500 | 
|---|
|  | 466 | GO TO 700 | 
|---|
|  | 467 | C                                 . . . . . . . . . . . . . . . . . . | 
|---|
|  | 468 | 5000 RETURN | 
|---|
|  | 469 | END | 
|---|