///////////////////////////////////////////////////////////////////
// Mladen Jurak
// Praktikum primijenjene matematike 2, ak. god. 2004/05
// FreeFEM++
//
//   Rutina za ispis L2 greske u latex formatu. 
////////////////////////////////////////////////////////////////////
//   Ispis je u obliku tabele 

func int ispis(real[int] & time, real[int] & errL2, real[int] & errRelL2,
               int noOfItems, bool zaglavlje, string & ime)
// Klasična C-style funkcija. Mora biti definirana prije svojeg 
// poziva.
//      time      = polje vremenskih trenutaka    
//      errL2     = polje pripadnih L2 grešaka
//      errRelL2  = polje pripadnih relativnih L2 grešaka
//      noOfItems = broj vrijednosti koje treba ispisati
//      zaglavlje = true ako treba ispisati latex zaglavlje, false ako ne.
//
//     Ako se vektori ne definiraju kao reference bivaju uništeni na izlazu iz funkcije
//     Kompilacija:    latex ime_datoteke.tex
//     Prikaz:         xdvi  ime_datoteke.dvi
{
      if( (noOfItems > errL2.n) || (noOfItems > time.n) || (noOfItems > errRelL2.n) )
      {
         cout << "Greska pri pozivu funkcije ispis. "
              << "Broj elemenata za ispis suvise velik.\n";
         cout << "Broj elemenata za ispis = "<< noOfItems << endl;
         cout << "Dimenzija polja time = "      << time.n    << endl;
         cout << "Dimenzija polja errL2 = "    << errL2.n   << endl;
         cout << "Dimenzija polja errRelL2 = "    << errRelL2.n   << endl;
         exit(-36);
      }
      ofstream ofile(ime);

      if(zaglavlje == true)
      {
        ofile << "\\documentclass[12pt]{article}\n";
        ofile << "\\usepackage{amsmath}\n";
        ofile << "\\usepackage{amssymb}\n";
        ofile << "\n";
        ofile << "\\begin{document}\n";
        ofile << "\n";
      }
      ofile << "\\begin{center}\n";
      ofile << "\\begin{tabular}{|c|c|c|}\\hline\n";
      ofile <<
      " t  \& $\\| u_e(t) -u_h(t) \\|_{L^2}$ \& $\\| u_e(t) -u_h(t) \\|_{L^2}/\\| u_e(t)\\|_{L^2}$  \\\\ \\hline\\hline\n";
      for(int i=0; i<noOfItems; ++i)
         ofile << time[i]<<   "  \& "<< errL2[i]<<  "  \& "<<errRelL2[i]<< " \\\\ \\hline\n";
      ofile << "\\end{tabular}\n";
      ofile << "\\end{center}\n";
      if(zaglavlje == true)
      {
         ofile << "\n";
         ofile << "\\end{document}\n";
      }

      return 1;
}