1 | *
|
---|
2 | * $Id: mnemat.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 MNEMAT(EMAT,NDIM)
|
---|
11 | #include "minuit/d506dp.inc"
|
---|
12 | DIMENSION EMAT(NDIM,NDIM)
|
---|
13 | CC Calculates the external error matrix from the internal
|
---|
14 | CC to be called by user, who must dimension EMAT at (NDIM,NDIM)
|
---|
15 | #include "minuit/d506cm.inc"
|
---|
16 | IF (ISW(2) .LT. 1) RETURN
|
---|
17 | IF (ISW(5) .GE. 2) WRITE (ISYSWR,'(/A,I4,A,I3,A,G10.3)')
|
---|
18 | + ' EXTERNAL ERROR MATRIX. NDIM=',NDIM,' NPAR=',NPAR,
|
---|
19 | + ' ERR DEF=',UP
|
---|
20 | C size of matrix to be printed
|
---|
21 | NPARD = NPAR
|
---|
22 | IF (NDIM .LT. NPAR) THEN
|
---|
23 | NPARD = NDIM
|
---|
24 | IF (ISW(5) .GE. 0) WRITE (ISYSWR,'(A,A)') ' USER-DIMENSIONED ',
|
---|
25 | + ' ARRAY EMAT NOT BIG ENOUGH. REDUCED MATRIX CALCULATED.'
|
---|
26 | ENDIF
|
---|
27 | C NPERLN is the number of elements that fit on one line
|
---|
28 | NPERLN = (NPAGWD-5)/10
|
---|
29 | NPERLN = MIN(NPERLN,13)
|
---|
30 | IF (ISW(5).GE. 1 .AND. NPARD.GT.NPERLN) WRITE (ISYSWR,'(A)')
|
---|
31 | + ' ELEMENTS ABOVE DIAGONAL ARE NOT PRINTED.'
|
---|
32 | C I counts the rows of the matrix
|
---|
33 | DO 110 I= 1, NPARD
|
---|
34 | CALL MNDXDI(X(I),I,DXDI)
|
---|
35 | KGA = I*(I-1)/2
|
---|
36 | DO 100 J= 1, I
|
---|
37 | CALL MNDXDI(X(J),J,DXDJ)
|
---|
38 | KGB = KGA + J
|
---|
39 | EMAT(I,J) = DXDI * VHMAT(KGB) * DXDJ * UP
|
---|
40 | EMAT(J,I) = EMAT(I,J)
|
---|
41 | 100 CONTINUE
|
---|
42 | 110 CONTINUE
|
---|
43 | C IZ is number of columns to be printed in row I
|
---|
44 | IF (ISW(5) .GE. 2) THEN
|
---|
45 | DO 160 I= 1, NPARD
|
---|
46 | IZ = NPARD
|
---|
47 | IF (NPARD .GE. NPERLN) IZ = I
|
---|
48 | DO 150 K= 1, IZ, NPERLN
|
---|
49 | K2 = K + NPERLN - 1
|
---|
50 | IF (K2 .GT. IZ) K2=IZ
|
---|
51 | WRITE (ISYSWR,'(1X,13E10.3)') (EMAT(I,KK),KK=K,K2)
|
---|
52 | 150 CONTINUE
|
---|
53 | 160 CONTINUE
|
---|
54 | ENDIF
|
---|
55 | RETURN
|
---|
56 | END
|
---|