* G13DDF Example Program Text * Mark 22 Release. NAG Copyright 2007. * .. Implicit None Statement .. IMPLICIT NONE * .. Parameters .. INTEGER NIN, NOUT PARAMETER (NIN=5,NOUT=6) INTEGER KMAX, IPMAX, IQMAX, NMAX, NPARMX, LDCM PARAMETER (KMAX=3,IPMAX=3,IQMAX=3,NMAX=100, + NPARMX=(IPMAX+IQMAX)*KMAX*KMAX+KMAX,LDCM=NPARMX) * .. Local Scalars .. DOUBLE PRECISION CGETOL, RLOGL INTEGER I, IFAIL, IP, IPRINT, IQ, ISHOW, J, K, MAXCAL, N, + NITER, NPAR, OUTCHN LOGICAL EXACT, MEAN * .. Local Arrays .. DOUBLE PRECISION CM(LDCM,NPARMX), G(NPARMX), PAR(NPARMX), + QQ(KMAX,KMAX), V(KMAX,NMAX), W(KMAX,NMAX) LOGICAL PARHLD(NPARMX) * .. External Subroutines .. EXTERNAL G13DDF, X04ABF * .. Executable Statements .. CONTINUE WRITE (NOUT,*) 'G13DDF Example Program Results' * * Skip heading in data file * READ (NIN,*) READ (NIN,*) K, IP, IQ, N, MEAN OUTCHN = NOUT NPAR = (IP+IQ)*K*K IF (MEAN) THEN NPAR = NPAR + K END IF * CALL X04ABF(1,OUTCHN) * WRITE (NOUT,*) * IF (K.LE.0 .OR. K.GT.KMAX .OR. IP.LT.0 .OR. IP.GT.IPMAX .OR. + IQ.LT.0 .OR. IQ.GT.IQMAX .OR. N.GT.NMAX .OR. NPAR.GT.NPARMX) + THEN WRITE (NOUT,99998) GO TO 100 END IF * DO 20 I = 1, NPAR PAR(I) = 0.0D0 PARHLD(I) = .FALSE. 20 CONTINUE * * Set all elements of Q to zero to use the covariance matrix * between the K time series as the initial estimate of the * covariance matrix DO 60 J = 1, K DO 40 I = J, K QQ(I,J) = 0.0D0 40 CONTINUE 60 CONTINUE * DO 80 I = 1, K READ (NIN,*) (W(I,J),J=1,N) 80 CONTINUE * PARHLD(3) = .TRUE. EXACT = .TRUE. * * Set IPRINT .GT. 0 to obtain intermediate output * IPRINT = -1 CGETOL = 0.0001D0 MAXCAL = 40*NPAR*(NPAR+5) ISHOW = 2 IFAIL = 1 CALL G13DDF(K,N,IP,IQ,MEAN,PAR,NPAR,QQ,KMAX,W,PARHLD,EXACT,IPRINT, + CGETOL,MAXCAL,ISHOW,NITER,RLOGL,V,G,CM,LDCM,IFAIL) IF (IFAIL.NE.0) THEN WRITE (NOUT,99999) IFAIL END IF * 100 CONTINUE * 99999 FORMAT (1X,/1X,' ** G13DDF returned with IFAIL = ',I5) 99998 FORMAT (1X,' ** Problem size too large, increase array limits') END