[2403] | 1 | *
|
---|
| 2 | * $Id: mnfree.F,v 1.1.1.1 2003-06-11 14:18:27 cmv Exp $
|
---|
| 3 | *
|
---|
| 4 | * $Log: not supported by cvs2svn $
|
---|
| 5 | * Revision 1.1.1.1 1996/03/07 14:31:29 mclareni
|
---|
| 6 | * Minuit
|
---|
| 7 | *
|
---|
| 8 | *
|
---|
| 9 | #include "minuit/pilot.h"
|
---|
| 10 | SUBROUTINE MNFREE(K)
|
---|
| 11 | #include "minuit/d506dp.inc"
|
---|
| 12 | CC Restores one or more fixed parameter(s) to variable status
|
---|
| 13 | CC by inserting it into the internal parameter list at the
|
---|
| 14 | CC appropriate place.
|
---|
| 15 | CC
|
---|
| 16 | #include "minuit/d506cm.inc"
|
---|
| 17 | C-- K = 0 means restore all parameters
|
---|
| 18 | C-- K = 1 means restore the last parameter fixed
|
---|
| 19 | C-- K = -I means restore external parameter I (if possible)
|
---|
| 20 | C-- IQ = fix-location where internal parameters were stored
|
---|
| 21 | C-- IR = external number of parameter being restored
|
---|
| 22 | C-- IS = internal number of parameter being restored
|
---|
| 23 | IF (K .GT. 1) WRITE (ISYSWR,510)
|
---|
| 24 | IF (NPFIX .LT. 1) WRITE (ISYSWR,500)
|
---|
| 25 | IF (K.EQ.1 .OR. K.EQ.0) GO TO 40
|
---|
| 26 | C release parameter with specified external number
|
---|
| 27 | KA = IABS(K)
|
---|
| 28 | IF (NIOFEX(KA) .EQ. 0) GO TO 15
|
---|
| 29 | WRITE (ISYSWR,540)
|
---|
| 30 | 540 FORMAT (' IGNORED. PARAMETER SPECIFIED IS ALREADY VARIABLE.')
|
---|
| 31 | RETURN
|
---|
| 32 | 15 IF (NPFIX .LT. 1) GO TO 21
|
---|
| 33 | DO 20 IK= 1, NPFIX
|
---|
| 34 | IF (IPFIX(IK) .EQ. KA) GO TO 24
|
---|
| 35 | 20 CONTINUE
|
---|
| 36 | 21 WRITE (ISYSWR,530) KA
|
---|
| 37 | 530 FORMAT (' PARAMETER',I4,' NOT FIXED. CANNOT BE RELEASED.')
|
---|
| 38 | RETURN
|
---|
| 39 | 24 IF (IK .EQ. NPFIX) GO TO 40
|
---|
| 40 | C move specified parameter to end of list
|
---|
| 41 | IPSAV = KA
|
---|
| 42 | XV = XS(IK)
|
---|
| 43 | XTV = XTS(IK)
|
---|
| 44 | DIRINV = DIRINS(IK)
|
---|
| 45 | GRDV = GRDS(IK)
|
---|
| 46 | G2V = G2S(IK)
|
---|
| 47 | GSTEPV = GSTEPS(IK)
|
---|
| 48 | DO 30 I= IK+1,NPFIX
|
---|
| 49 | IPFIX(I-1) = IPFIX(I)
|
---|
| 50 | XS(I-1) = XS(I)
|
---|
| 51 | XTS(I-1) = XTS(I)
|
---|
| 52 | DIRINS(I-1) = DIRINS(I)
|
---|
| 53 | GRDS(I-1) = GRDS(I)
|
---|
| 54 | G2S(I-1) = G2S(I)
|
---|
| 55 | GSTEPS(I-1) = GSTEPS(I)
|
---|
| 56 | 30 CONTINUE
|
---|
| 57 | IPFIX(NPFIX) = IPSAV
|
---|
| 58 | XS(NPFIX) = XV
|
---|
| 59 | XTS(NPFIX) = XTV
|
---|
| 60 | DIRINS(NPFIX) = DIRINV
|
---|
| 61 | GRDS(NPFIX) = GRDV
|
---|
| 62 | G2S(NPFIX) = G2V
|
---|
| 63 | GSTEPS(NPFIX) = GSTEPV
|
---|
| 64 | C restore last parameter in fixed list -- IPFIX(NPFIX)
|
---|
| 65 | 40 CONTINUE
|
---|
| 66 | IF (NPFIX .LT. 1) GO TO 300
|
---|
| 67 | IR = IPFIX(NPFIX)
|
---|
| 68 | IS = 0
|
---|
| 69 | DO 100 IK= NU, IR, -1
|
---|
| 70 | IF (NIOFEX(IK) .GT. 0) THEN
|
---|
| 71 | LC = NIOFEX(IK) + 1
|
---|
| 72 | IS = LC - 1
|
---|
| 73 | NIOFEX(IK) = LC
|
---|
| 74 | NEXOFI(LC) = IK
|
---|
| 75 | X(LC) = X(LC-1)
|
---|
| 76 | XT(LC) = XT(LC-1)
|
---|
| 77 | DIRIN(LC) = DIRIN(LC-1)
|
---|
| 78 | WERR(LC) = WERR(LC-1)
|
---|
| 79 | GRD(LC) = GRD(LC-1)
|
---|
| 80 | G2(LC) = G2(LC-1)
|
---|
| 81 | GSTEP(LC) = GSTEP(LC-1)
|
---|
| 82 | ENDIF
|
---|
| 83 | 100 CONTINUE
|
---|
| 84 | NPAR = NPAR + 1
|
---|
| 85 | IF (IS .EQ. 0) IS = NPAR
|
---|
| 86 | NIOFEX(IR) = IS
|
---|
| 87 | NEXOFI(IS) = IR
|
---|
| 88 | IQ = NPFIX
|
---|
| 89 | X(IS) = XS(IQ)
|
---|
| 90 | XT(IS) = XTS(IQ)
|
---|
| 91 | DIRIN(IS) = DIRINS(IQ)
|
---|
| 92 | WERR(IS) = DIRINS(IQ)
|
---|
| 93 | GRD(IS) = GRDS(IQ)
|
---|
| 94 | G2(IS) = G2S(IQ)
|
---|
| 95 | GSTEP(IS) = GSTEPS(IQ)
|
---|
| 96 | NPFIX = NPFIX - 1
|
---|
| 97 | ISW(2) = 0
|
---|
| 98 | DCOVAR = 1.
|
---|
| 99 | IF (ISW(5)-ITAUR .GE. 1) WRITE(ISYSWR,520) IR,CPNAM(IR)
|
---|
| 100 | IF (K.EQ.0) GO TO 40
|
---|
| 101 | 300 CONTINUE
|
---|
| 102 | C if different from internal, external values are taken
|
---|
| 103 | CALL MNEXIN(X)
|
---|
| 104 | 400 RETURN
|
---|
| 105 | 500 FORMAT (' CALL TO MNFREE IGNORED. THERE ARE NO FIXED PA',
|
---|
| 106 | + 'RAMETERS'/)
|
---|
| 107 | 510 FORMAT (' CALL TO MNFREE IGNORED. ARGUMENT GREATER THAN ONE'/)
|
---|
| 108 | 520 FORMAT (20X, 9HPARAMETER,I4,2H, ,A10,' RESTORED TO VARIABLE.')
|
---|
| 109 | END
|
---|