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