C***********************************************************************
C     THIS SUBROUTINE CALCULATES AN ESTIMATE OF F(0) AND ITS VARIANCE
C     FOR A VARIETY OF ESTIMATORS.
C***********************************************************************
      SUBROUTINE CALC
C***********************************************************************
C     DECLARATIONS
C***********************************************************************
      INCLUDE 'PARMTR.INC'
      LOGICAL WARN
      INTEGER CNT
      DOUBLE PRECISION RF0, PRF0A, PRF0B, PF0A, PF0B
C***********************************************************************
C     COMMON STATEMENTS
C***********************************************************************
      DOUBLE PRECISION PAR, VCMAT, G, XLL
      COMMON /DPAR/ PAR(MAXPR2), VCMAT(MAXPAR,MAXPAR), G(MAXPAR),
     1    XLL, NPAR, INDEX
      COMMON /SOLN/ FZERO, VARF, FMAX, FMIN, FZ(100)
      COMMON /NUM/ XL(MAXLIN), WIDTH, N, CNT, CONV(3), VARN, IDF, WARN
      COMMON /INTEG/ RF0, PRF0A, PRF0B
C***********************************************************************
C     FOURIER SERIES ESTIMATOR FOR GROUPED DATA.
C***********************************************************************
      IF (INDEX.EQ.1) THEN
         FZERO=1./WIDTH
         VARF=0.0
         DO 10 I=1,NPAR
            VARF=VARF+VCMAT(I,I)
   10       FZERO=FZERO+PAR(I)
         IF (NPAR.GT.1) THEN
            DO 20 I=1,NPAR-1
               DO 20 J=I+1,NPAR
   20             VARF=VARF+2.*VCMAT(I,J)
         ENDIF
C***********************************************************************
C     EXPONENTIAL POWER SERIES, EXPONENTIAL POLYNOMIAL, NEGATIVE EXPONEN-
C     TIAL, AND HALF-NORMAL FOR GROUPED AND UNGROUPED DATA.
C***********************************************************************
      ELSE
         FZERO=1./RF0
         PF0A=PRF0A*FZERO*FZERO
         PF0B=PRF0B*FZERO*FZERO
         VARF=PF0A*PF0A*VCMAT(1,1)+PF0B*PF0B*VCMAT(2,2)
         VARF=VARF+2.*VCMAT(1,2)*PF0A*PF0B
      ENDIF
      RETURN
      END
