1 | *
|
---|
2 | * $Id: mninit.F,v 1.1.1.1 2003-06-11 14:18:28 cmv Exp $
|
---|
3 | *
|
---|
4 | * $Log: not supported by cvs2svn $
|
---|
5 | * Revision 1.4 1997/09/02 15:16:08 mclareni
|
---|
6 | * WINNT corrections
|
---|
7 | *
|
---|
8 | * Revision 1.3 1997/03/14 17:18:00 mclareni
|
---|
9 | * WNT mods
|
---|
10 | *
|
---|
11 | * Revision 1.2.2.1 1997/01/21 11:33:28 mclareni
|
---|
12 | * All mods for Winnt 96a on winnt branch
|
---|
13 | *
|
---|
14 | * Revision 1.2 1996/03/15 18:02:47 james
|
---|
15 | * Modified Files:
|
---|
16 | * mnderi.F eliminate possible division by zero
|
---|
17 | * mnexcm.F suppress print on STOP when print flag=-1
|
---|
18 | * set FVAL3 to flag if FCN already called with IFLAG=3
|
---|
19 | * mninit.F set version 96.03
|
---|
20 | * mnlims.F remove arguments, not needed
|
---|
21 | * mnmigr.F VLEN -> LENV in debug print statement
|
---|
22 | * mnparm.F move call to MNRSET to after NPAR redefined, to zero all
|
---|
23 | * mnpsdf.F eliminate possible division by zero
|
---|
24 | * mnscan.F suppress printout when print flag =-1
|
---|
25 | * mnset.F remove arguments in call to MNLIMS
|
---|
26 | * mnsimp.F fix CSTATU so status is PROGRESS only if new minimum
|
---|
27 | * mnvert.F eliminate possible division by zero
|
---|
28 | *
|
---|
29 | * Revision 1.1.1.1 1996/03/07 14:31:30 mclareni
|
---|
30 | * Minuit
|
---|
31 | *
|
---|
32 | *
|
---|
33 | #include "minuit/pilot.h"
|
---|
34 | SUBROUTINE MNINIT (I1,I2,I3)
|
---|
35 | #include "minuit/d506dp.inc"
|
---|
36 | CC This is the main initialization subroutine for MINUIT
|
---|
37 | CC It initializes some constants in common
|
---|
38 | CC (including the logical I/O unit nos.),
|
---|
39 | CC
|
---|
40 | #include "minuit/d506cm.inc"
|
---|
41 | C
|
---|
42 | CCC_CMV EXTERNAL INTRAC
|
---|
43 | CCC_CMV LOGICAL INTRAC
|
---|
44 | C I/O unit numbers
|
---|
45 | ISYSRD = I1
|
---|
46 | ISYSWR = I2
|
---|
47 | ISTKWR(1) = ISYSWR
|
---|
48 | NSTKWR = 1
|
---|
49 | ISYSSA = I3
|
---|
50 | NSTKRD = 0
|
---|
51 | C version identifier
|
---|
52 | CVRSN = '96.03 '
|
---|
53 | C some CONSTANT constants in COMMON
|
---|
54 | MAXINT=MNI
|
---|
55 | MAXEXT=MNE
|
---|
56 | UNDEFI = -54321.
|
---|
57 | BIGEDM = 123456.
|
---|
58 | CUNDEF = ')UNDEFINED'
|
---|
59 | COVMES(0) = 'NO ERROR MATRIX '
|
---|
60 | COVMES(1) = 'ERR MATRIX APPROXIMATE'
|
---|
61 | COVMES(2) = 'ERR MATRIX NOT POS-DEF'
|
---|
62 | COVMES(3) = 'ERROR MATRIX ACCURATE '
|
---|
63 | C some starting values in COMMON
|
---|
64 | NBLOCK = 0
|
---|
65 | ICOMND = 0
|
---|
66 | CTITL = CUNDEF
|
---|
67 | CFROM = 'INPUT '
|
---|
68 | NFCNFR = NFCN
|
---|
69 | CSTATU= 'INITIALIZE'
|
---|
70 | ISW(3) = 0
|
---|
71 | ISW(4) = 0
|
---|
72 | ISW(5) = 1
|
---|
73 | C ISW(6)=0 for batch jobs, =1 for interactive jobs
|
---|
74 | C =-1 for originally interactive temporarily batch
|
---|
75 | ISW(6) = 0
|
---|
76 | #ifndef CERNLIB_MSSTDCALL
|
---|
77 | CCC_CMV IF (INTRAC(DUMMY)) ISW(6) = 1
|
---|
78 | #else
|
---|
79 | CCC_CMV IF (INTRAC()) ISW(6) = 1
|
---|
80 | #endif
|
---|
81 | C DEBUG options set to default values
|
---|
82 | DO 10 IDB= 0, MAXDBG
|
---|
83 | 10 IDBG(IDB) = 0
|
---|
84 | LREPOR = .FALSE.
|
---|
85 | LWARN = .TRUE.
|
---|
86 | LIMSET = .FALSE.
|
---|
87 | LNEWMN = .FALSE.
|
---|
88 | ISTRAT = 1
|
---|
89 | ITAUR = 0
|
---|
90 | C default page dimensions and 'new page' carriage control integer
|
---|
91 | NPAGWD = 120
|
---|
92 | NPAGLN = 56
|
---|
93 | NEWPAG = 1
|
---|
94 | IF (ISW(6) .GT. 0) THEN
|
---|
95 | NPAGWD = 80
|
---|
96 | NPAGLN = 30
|
---|
97 | NEWPAG = 0
|
---|
98 | ENDIF
|
---|
99 | UP = 1.0
|
---|
100 | UPDFLT = UP
|
---|
101 | C determine machine accuracy epsmac
|
---|
102 | EPSTRY = 0.5
|
---|
103 | DO 33 I= 1, 100
|
---|
104 | EPSTRY = EPSTRY * 0.5
|
---|
105 | EPSP1 = ONE + EPSTRY
|
---|
106 | CALL MNTINY(EPSP1, EPSBAK)
|
---|
107 | IF (EPSBAK .LT. EPSTRY) GO TO 35
|
---|
108 | 33 CONTINUE
|
---|
109 | EPSTRY = 1.0E-7
|
---|
110 | EPSMAC = 4.0*EPSTRY
|
---|
111 | WRITE (ISYSWR,'(A,A,E10.2)') ' MNINIT UNABLE TO DETERMINE',
|
---|
112 | + ' ARITHMETIC PRECISION. WILL ASSUME:',EPSMAC
|
---|
113 | 35 EPSMAC = 8.0 * EPSTRY
|
---|
114 | EPSMA2 = 2.0 * SQRT(EPSMAC)
|
---|
115 | C the vlims are a non-negligible distance from pi/2
|
---|
116 | C used by MNPINT to set variables "near" the physical limits
|
---|
117 | PIBY2 = 2.0*ATAN(1.0)
|
---|
118 | DISTNN = 8.0*SQRT(EPSMA2)
|
---|
119 | VLIMHI = PIBY2 - DISTNN
|
---|
120 | VLIMLO = -PIBY2 + DISTNN
|
---|
121 | CALL MNCLER
|
---|
122 | WRITE (ISYSWR,'(3A,I3,A,I3,A,E10.2)') ' MINUIT RELEASE ',CVRSN,
|
---|
123 | +' INITIALIZED. DIMENSIONS ',MNE,'/',MNI,' EPSMAC=',EPSMAC
|
---|
124 | RETURN
|
---|
125 | END
|
---|