/* nag_tsa_transf_prelim_fit (g13bdc) Example Program. * * Copyright 2001 Numerical Algorithms Group. * * Mark 7, 2001. */ #include #include #include #include #include int main(int argc, char *argv[]) { FILE *fpin, *fpout; /* Scalars */ double r0, s; Integer exit_status, i, iwa, nl, nwds; /* Arrays */ double *r = 0, *wa = 0, *wds = 0; Integer isf[3]; Nag_TransfOrder transfv; 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); exit_status = 0; fprintf(fpout, "nag_tsa_transf_prelim_fit (g13bdc) Example Program Results\n"); /* Skip heading in data file */ fscanf(fpin, "%*[^\n] "); fscanf(fpin, "%ld%*[^\n] ", &nl); fscanf(fpin, "%lf%*[^\n] ", &r0); if (nl > 0) { /* Allocate array r */ if (!(r = NAG_ALLOC(nl, double))) { fprintf(fpout, "Allocation failure\n"); exit_status = -1; goto END; } for (i = 1; i <= nl; ++i) fscanf(fpin, "%lf", &r[i-1]); fscanf(fpin, "%*[^\n] "); fscanf(fpin, "%ld %ld %ld", &transfv.nag_b, &transfv.nag_q, &transfv.nag_p); fscanf(fpin, "%lf%*[^\n] ", &s); nwds = transfv.nag_q + transfv.nag_p + 1; iwa = transfv.nag_p * (transfv.nag_p + 1); /* Allocate arrays wa and wds */ if (!(wa = NAG_ALLOC(iwa, double)) || !(wds = NAG_ALLOC(nwds, double))) { fprintf(fpout, "Allocation failure\n"); exit_status = -1; goto END; } /* nag_tsa_transf_prelim_fit (g13bdc). * Multivariate time series, preliminary estimation of * transfer function model */ nag_tsa_transf_prelim_fit(r0, r, nl, &transfv, s, wds, isf, &fail); if (fail.code != NE_NOERROR) { fprintf(fpout, "Error from nag_tsa_transf_prelim_fit (g13bdc).\n%s\n", fail.message); exit_status = 1; goto END; } fprintf(fpout, "\n"); fprintf(fpout, "Success/failure indicator%4ld%4ld\n", isf[0], isf[1]); fprintf(fpout, "\n"); fprintf(fpout, "Transfer function model B, Q, P ="); fprintf(fpout, "%4ld %4ld %4ld\n", transfv.nag_b, transfv.nag_q, transfv.nag_p); fprintf(fpout, "\n"); fprintf(fpout, "Parameter initial estimates\n"); for (i = 1; i <= nwds; ++i) fprintf(fpout, "%10.4f", wds[i-1]); fprintf(fpout, "\n"); } END: if (fpin != stdin) fclose(fpin); if (fpout != stdout) fclose(fpout); if (r) NAG_FREE(r); if (wa) NAG_FREE(wa); if (wds) NAG_FREE(wds); return exit_status; }