Program g13dbfe ! G13DBF Example Program Text ! Mark 24 Release. NAG Copyright 2012. ! .. Use Statements .. Use nag_library, Only: g13dbf, nag_wp ! .. Implicit None Statement .. Implicit None ! .. Parameters .. Integer, Parameter :: nin = 5, nout = 6 ! .. Local Scalars .. Real (Kind=nag_wp) :: v0 Integer :: i, ifail, iwa, k, ldc0, nk, nl, ns, & nvp ! .. Local Arrays .. Real (Kind=nag_wp), Allocatable :: c(:,:,:), c0(:,:), d(:,:,:), & db(:,:), p(:), v(:), w(:,:,:), & wa(:), wb(:,:,:) ! .. Executable Statements .. Write (nout,*) 'G13DBF Example Program Results' Write (nout,*) ! Skip heading in data file Read (nin,*) ! Read series length, and numbers of lags Read (nin,*) ns, nl, nk ldc0 = ns iwa = (2*ns+1)*ns Allocate (c0(ldc0,ns),c(ldc0,ldc0,nl),p(nk),v(nk),d(ldc0,ldc0,nk), & w(ldc0,ldc0,nk),wb(ldc0,ldc0,nk),wa(iwa),db(ldc0,ns)) ! Read autocovariances Read (nin,*)(c0(i,1:ns),i=1,ns) Read (nin,*)((c(i,1:ns,k),i=1,ns),k=1,nl) ! Calculate multivariate partial autocorrelation function ifail = -1 Call g13dbf(c0,c,ldc0,ns,nl,nk,p,v0,v,d,db,w,wb,nvp,wa,iwa,ifail) If (ifail/=0) Then If (ifail/=3) Then Go To 100 End If End If ! Display results Write (nout,99999) 'Number of valid parameters =', nvp Write (nout,*) Write (nout,*) 'Multivariate partial autocorrelations' Write (nout,99998) p(1:nk) Write (nout,*) Write (nout,*) 'Zero lag predictor error variance determinant' Write (nout,*) 'followed by error variance ratios' Write (nout,99998) v0, v(1:nk) Write (nout,*) Write (nout,*) 'Prediction error variances' Do k = 1, nk Write (nout,*) Write (nout,99997) 'Lag =', k Do i = 1, ns Write (nout,99998) d(i,1:ns,k) End Do End Do Write (nout,*) Write (nout,*) 'Last backward prediction error variances' Write (nout,*) Write (nout,99997) 'Lag =', nvp Do i = 1, ns Write (nout,99998) db(i,1:ns) End Do Write (nout,*) Write (nout,*) 'Prediction coefficients' Do k = 1, nk Write (nout,*) Write (nout,99997) 'Lag =', k Do i = 1, ns Write (nout,99998) w(i,1:ns,k) End Do End Do Write (nout,*) Write (nout,*) 'Backward prediction coefficients' Do k = 1, nk Write (nout,*) Write (nout,99997) 'Lag =', k Do i = 1, ns Write (nout,99998) wb(i,1:ns,k) End Do End Do 100 Continue 99999 Format (1X,A,I10) 99998 Format (1X,5F12.5) 99997 Format (1X,A,I5) End Program g13dbfe