// g13dk Example Program Text // C# version, NAG Copyright 2008 using System; using NagLibrary; using System.Globalization; namespace NagDotNetExamples { public class G13DKE { static string datafile = "ExampleData/g13dke.d"; static void Main(String[] args) { if (args.Length == 1) { datafile = args[0]; } StartExample(); } public static void StartExample() { try { DataReader sr = new DataReader(datafile); double cgetol, rlogl; int i, idmax, idmin, ip, iprint, iq, ishow, j, k, lmax, lpar, m, maxcal, mlast, n, nd, niter; bool exact = false, meanl = false; string mean = ""; int[] id = new int[3]; int ifail; Console.WriteLine("g13dk Example Program Results"); // Skip heading in data file sr.Reset(); sr.Reset(); k = int.Parse(sr.Next()); n = int.Parse(sr.Next()); ip = int.Parse(sr.Next()); iq = int.Parse(sr.Next()); mean = sr.Next(); lmax = int.Parse(sr.Next()); meanl = false; lpar = (ip + iq) * k * k; if ((mean == "M") || (mean == "m")) { lpar = lpar + k; meanl = true; } double[,] cm = new double[lpar, lpar]; double[] g = new double[lpar]; double[] par = new double[lpar]; double[,] predz = new double[k, lmax]; double[,] qq = new double[k, k]; int lref = (lmax - 1) * k * k + 2 * k * lmax + k; double[] refn = new double[lref]; double[,] sefz = new double[k, lmax]; double[,] v = new double[k, n]; double[,] w = new double[k, n]; bool[] parhld = new bool[lpar]; sr.Reset(); for (i = 1; i <= k; i++) { id[i - 1] = int.Parse(sr.Next()); } idmax = 0; idmin = 0; for (i = 1; i <= k; i++) { idmin = Math.Min(id[i - 1], idmin); idmax = Math.Max(id[i - 1], idmax); } double[,] z = new double[k, n]; for (i = 1; i <= k; i++) { sr.Reset(); for (j = 1; j <= n; j++) { z[i - 1, j - 1] = double.Parse(sr.Next(), CultureInfo.InvariantCulture); } } string[] tr = new string[k]; sr.Reset(); for (i = 1; i <= k; i++) { tr[i - 1] = sr.Next(); } double[,] delta = new double[k, Math.Max(idmax,1)]; if (idmax > 0) { for (i = 1; i <= k; i++) { sr.Reset(); for (j = 1; j <= id[i - 1]; j++) { delta[i - 1, j - 1] = double.Parse(sr.Next(), CultureInfo.InvariantCulture); } } } // G13.g13dl(k, n, z, tr, id, delta, w, out nd, out ifail); // for (i = 1; i <= lpar; i++) { par[i - 1] = 0.00e0; parhld[i - 1] = false; } for (j = 1; j <= k; j++) { for (i = j; i <= k; i++) { qq[i - 1, j - 1] = 0.00e0; } } parhld[2] = true; exact = true; // Set iprint > 0 for no intermediate monitoring iprint = -1; cgetol = 0.00010e0; maxcal = 40 * lpar * (lpar + 5); // Set ishow = 0 for no results from g13dd ishow = 0; // G13.g13dd(k, nd, ip, iq, meanl, par, qq, w, parhld, exact, iprint, cgetol, maxcal, ishow, out niter, out rlogl, v, g, cm, out ifail); // if ((ifail == 0) || (ifail >= (4))) { // G13.g13dj(k, n, z, tr, id, delta, ip, iq, mean, par, qq, v, lmax, predz, sefz, refn, out ifail); // fprint(ref k, n, ref lmax, predz, sefz, k); m = 1; mlast = 0; z[0, 0] = 8.10e0; z[1, 0] = 10.20e0; // G13.g13dk(k, lmax, m, ref mlast, z, refn, v, predz, sefz, out ifail); // fprint(ref k, n + mlast, ref lmax, predz, sefz, k); m = 1; // Leave mlast unchanged from last call z[0, 0] = 8.50e0; z[1, 0] = 10.00e0; // G13.g13dk(k, lmax, m, ref mlast, z, refn, v, predz, sefz, out ifail); // fprint(ref k, n + mlast, ref lmax, predz, sefz, k); } } catch (Exception e) { Console.WriteLine(e.Message); Console.WriteLine("Exception Raised"); } } public static void fprint(ref int k, int nm, ref int lmax, double[,] predz, double[, ] sefz, int ldsefz) { int i, i2, j, l, l2, loop; Console.WriteLine(""); Console.WriteLine(" {0}", " FORECAST SUMMARY TABLE"); Console.WriteLine(" {0}", " ----------------------"); Console.WriteLine(""); Console.WriteLine(" {0}{1,4}", " Forecast origin is set at t = ", nm); Console.WriteLine(""); loop = lmax / 5; if ((lmax % 5) != 0) { loop = loop + 1; } for (j = 1; j <= loop; j++) { i2 = (j - 1) * 5; l2 = Math.Min(i2 + 5, lmax); Console.Write(" {0}", "Lead Time \t\t "); for (i = i2 + 1; i <= l2; i++) { Console.Write(" {0,8}", i); } Console.WriteLine(""); Console.WriteLine(""); i = 1; Console.Write(" {0}", "Series "); Console.Write(" {0}", i); Console.Write(" {0}", " : Forecast "); for (l = i2 + 1; l <= l2; l++) { Console.Write(" {0,8:f2}", predz[0, l - 1]); } Console.WriteLine(""); ; Console.Write(" {0}", " : Standard Error"); for (l = i2 + 1; l <= l2; l++) { Console.Write("{0,8:f2} ", sefz[0, l - 1]); } Console.WriteLine(""); for (i = 2; i <= k; i++) { Console.Write(" {0}", "Series "); Console.Write(" {0}", i); Console.Write(" {0}", " : Forecast "); for (l = i2 + 1; l <= l2; l++) { Console.Write(" {0,8:f2}", predz[i - 1, l - 1]); } Console.WriteLine(""); Console.Write(" {0}", " : Standard Error"); for (l = i2 + 1; l <= l2; l++) { Console.Write("{0,8:f2} ", sefz[i - 1, l - 1]); } Console.WriteLine(""); } Console.WriteLine(""); } // } } }