/* nag_kalman_sqrt_filt_info_invar(g13edc) Example Program * * Copyright 1993 Numerical Algorithms Group * * Mark 3, 1993 * Mark 7 revised, 2001. * */ #include #include #include #include #include #include typedef enum {read, print} ioflag; static void ex1(void); static void ex2(void); int main(void) { ex1(); ex2(); return EXIT_SUCCESS; } #define NMAX 20 #define MMAX 20 #define PMAX 20 #define TRADIM 20 static void ex1(void) { double ainv[NMAX][TRADIM],qinv[MMAX][TRADIM],rinv[PMAX][TRADIM], t[NMAX][TRADIM],ainvb[NMAX][TRADIM]; double c[PMAX][TRADIM],x[NMAX],z[MMAX],rinvy[PMAX]; Integer i,j,m,n,p,istep; double tol; Integer nmax, mmax, pmax, tradim; Vprintf("g13edc Example 1 Program Results\n"); /* Skip the heading in the data file */ Vscanf("%*[^\n]"); nmax = NMAX; mmax = MMAX; pmax = PMAX; tradim = TRADIM; Vscanf("%ld%ld%ld%lf",&n,&m,&p,&tol); if (n<=0 || m<=0 || p<=0 || n>nmax || m>mmax || p>pmax) { Vfprintf(stderr, "One of n m or p is out of range " "n = %ld, m = %ld, p = %ld\n", n, m, p); exit(EXIT_FAILURE); } /* Read data */ for (i=0; inmax || m>mmax || p>pmax) { Vfprintf(stderr, "One of n m or p is out of range " "n = %ld, m = %ld, p = %ld\n", n, m, p); exit(EXIT_FAILURE); } /* Read data */ mat_io(n, n, &ainv[0][0], tradim, read, ""); mat_io(p, n, &c[0][0], tradim, read, ""); if (rinv) mat_io(p, p, &rinv[0][0], tradim, read,""); mat_io(n, m, &ainvb[0][0], tradim, read, ""); mat_io(m, m, &qinv[0][0], tradim, read, ""); mat_io(n, n, &t[0][0], tradim, read, ""); for (j=0; j