C***********************************************************************
C     THIS SUBROUTINE PROVIDES FUNCTIONAL EVALUATIONS FOR PLOTTING
C     THE FUNCTION AGAINST THE HISTOGRAM OF THE DATA.
C***********************************************************************
      SUBROUTINE PLTMOD
C***********************************************************************
C     DECLARATIONS
C***********************************************************************
      INCLUDE 'PARMTR.INC'
      INTEGER CNT
      LOGICAL WARN
      DOUBLE PRECISION XX, A1, A2
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 /INTER/ KCUT, CUT(MAXCEL), F(MAXCEL), NCUT, NKC(5),
     1   NK(5), RFREQ(5,MAXCEL), CCUT(5,MAXCEL)
      COMMON /NUM/ XL(MAXLIN), WIDTH, N, CNT, CONV(3), VARN, IDF, WARN
C***********************************************************************
C     CALCULATE AND STORE FUNCTIONAL VALUES FOR THE FOURIER SERIES.
C***********************************************************************
      IF (INDEX.NE.1) GO TO 30
      FMAX=0.0
      FMIN=0.0
      IF (NPAR.EQ.0) FMAX=1./WIDTH
      DO 20 I=1,100
      XX=FLOAT(I)*CUT(KCUT)/65.
      FZ(I)=1./WIDTH
      IF (NPAR.EQ.0) GO TO 20
      DO 10 K=1,NPAR
   10 FZ(I)=FZ(I)+PAR(K)*DCOS(FLOAT(K)*3.14159*XX/WIDTH)
      IF (FZ(I).GT.FMAX) FMAX=FZ(I)
      IF (FZ(I).LT.FMIN) FMIN=FZ(I)
   20 CONTINUE
      RETURN
C***********************************************************************
C     CALCULATE AND STORE FUNCTIONAL VALUES FOR THE EXPONENTIAL POWER
C     SERIES.
C***********************************************************************
   30 IF (INDEX.NE.2) GO TO 50
      FMIN=0.0
      FMAX=FZERO
      DO 40 I=1,65
      XX=FLOAT(I)*CUT(KCUT)/65.
   40 FZ(I)=FZERO*DEXP(-(XX/PAR(1))**PAR(2))
      RETURN
C***********************************************************************
C     CALCULATE AND STORE FUNCTIOANL VALUES FOR THE EXPONENTIAL POLY-
C     NOMIAL.
C***********************************************************************
   50 IF (INDEX.NE.3) GO TO 80
      A1=PAR(1)
      A2=PAR(2)
   60 FMIN=0.0
      FMAX=FZERO
      DO 70 I=1,65
      XX=FLOAT(I)*CUT(KCUT)/65.
   70 FZ(I)=FZERO*DEXP(-A1*XX-A2*XX*XX)
      RETURN
C***********************************************************************
C     CALCULATE AND STORE FUNCTIONAL VALUES FOR THE NEGATIVE EXPONENTIAL
C***********************************************************************
   80 IF (INDEX.NE.4) GO TO 90
      A1=PAR(1)
      A2=0.0
      GO TO 60
C***********************************************************************
C     CALCULATE AND STORE FUNCTIONAL VALUES FOR THE HALF-NORMAL.
C***********************************************************************
   90 IF (INDEX.NE.5) RETURN
      A1=0.0
      A2=PAR(1)
      GO TO 60
      END
