/* nag_tsa_varma_estimate (g13ddc) Example Program. * * Copyright 2008, Numerical Algorithms Group. * * Mark 9, 2009. */ /* Pre-processor includes */ #include #include #include #include #include #include #include int main(int argc, char *argv[]) { FILE *fpin, *fpout; char *outfile = 0; /*Logical scalar and array declarations */ Nag_Boolean exact; Nag_IncludeMean mean; Nag_Boolean *parhld = 0; /*Integer scalar and array declarations */ Integer exit_status = 0; Integer i, ip, iprint, iq, ishow, j, k, kmax, maxcal, n; Integer niter, npar, pdcm, pdqq, pdv, pdw; /*Double scalar and array declarations */ double cgetol, rlogl; double *cm = 0, *g = 0, *par = 0, *qq = 0, *v = 0, *w = 0; /*Character scalar and array declarations */ char smean[16]; /*NAG Types */ NagError fail; INIT_FAIL(fail); /* Check for command-line IO options */ fpin = nag_example_file_io(argc, argv, "-data", NULL); fpout = nag_example_file_io(argc, argv, "-results", NULL); (void) nag_example_file_io(argc, argv, "-nag_write", &outfile); fprintf(fpout, "nag_tsa_varma_estimate (g13ddc) Example Program Results\n"); /* Skip heading in data file*/ fscanf(fpin, "%*[^\n] "); fscanf(fpin, "%ld%ld%ld%ld%s%*[^\n] ", &k, &ip, &iq, &n, smean); npar = (ip+iq)*k*k; kmax = 3; /* * nag_enum_name_to_value (x04nac). * Converts NAG enum member name to value */ mean = (Nag_IncludeMean) nag_enum_name_to_value(smean); if (mean == Nag_MeanInclude) npar = npar+k; fprintf(fpout, "\n"); pdcm = npar; #define CM(I, J) cm[(J-1)*pdcm + I-1] pdqq = kmax; #define QQ(I, J) qq[(J-1)*pdqq + I-1] pdv = kmax; #define V(I, J) v[(J-1)*pdv + I-1] pdw = kmax; #define W(I, J) w[(J-1)*pdw + I-1] if (!(cm = NAG_ALLOC(npar*npar, double)) || !(g = NAG_ALLOC(npar, double)) || !(par = NAG_ALLOC(npar, double)) || !(qq = NAG_ALLOC(kmax*k, double)) || !(v = NAG_ALLOC(kmax*n, double)) || !(w = NAG_ALLOC(kmax*n, double)) || !(parhld = NAG_ALLOC(npar, Nag_Boolean))) { fprintf(fpout, "Allocation failure\n"); exit_status = -1; goto END; } for (i = 0; i < npar; i++) { par[i] = 0.00e0; parhld[i] = Nag_FALSE; } /* 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 */ for (j = 1; j <= k; j++) { for (i = j; i <= k; i++) QQ(i, j) = 0.00e0; } for (i = 1; i <= k; i++) { for (j = 1; j <= n; j++) fscanf(fpin, "%lf ", &W(i, j)); } fscanf(fpin, "%*[^\n] "); parhld[2] = Nag_TRUE; exact = Nag_TRUE; iprint = (-(1)); cgetol = 0.00010e0; maxcal = 40*npar*(npar+5); ishow = 2; /* * nag_tsa_varma_estimate (g13ddc) * Multivariate time series, estimation of varma model */ if (outfile) fclose(fpout); nag_tsa_varma_estimate(k, n, ip, iq, mean, par, npar, qq, kmax, w, parhld, exact, iprint, cgetol, maxcal, ishow, outfile, &niter, &rlogl, v, g, cm, pdcm, &fail); if (outfile && !(fpout = fopen(outfile, "a"))) { exit_status = 2; goto END; } if (fail.code != NE_NOERROR) { fprintf(fpout, "Error from nag_tsa_varma_estimate (g13ddc).\n%s\n", fail.message); exit_status = 1; goto END; } END: if (fpin != stdin) fclose(fpin); if (fpout != stdout) fclose(fpout); if (cm) NAG_FREE(cm); if (g) NAG_FREE(g); if (par) NAG_FREE(par); if (qq) NAG_FREE(qq); if (v) NAG_FREE(v); if (w) NAG_FREE(w); if (parhld) NAG_FREE(parhld); return exit_status; }