[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
|
---|