home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / Samples / C-SSP.ARJ / STANVG.C < prev    next >
Encoding:
Text File  |  1984-08-21  |  2.2 KB  |  101 lines

  1.       stanvg(lcx,lcmt,lcmg,n,mt,mg,x,av,t)
  2.  
  3.       /*this subroutine computes the analysis of variance table for a*/
  4.       /*simple graeco-latin square design.*/
  5.  
  6.       float mt[], mg[], x[], av[], t[];
  7.       int lcx,lcmt,lcmg,n;
  8.  
  9.      {
  10.  
  11.       float sumx,sumx2,sumc2,sumr2,r,c,xn;
  12.       int klrx,i,ijx,ijmt,j,ji,kt,ijmg,kg;
  13.  
  14.       sumx = 0.0;
  15.       sumx2 = 0.0;
  16.       sumc2 = 0.0;
  17.       sumr2 = 0.0;
  18.       av[12] = 0.0;
  19.       av[8] = 0.0;
  20.  
  21.       for (i = 0; i <= n-1; i++)
  22.         t[i] = 0.0;
  23.  
  24.       klrx = 0;
  25.  
  26.       for (i = 0; i <= n-1; i++)
  27.       {
  28.         r = 0.0;
  29.         c = 0.0;
  30.         ijx = i*lcx;
  31.         ijmt = i*lcmt;
  32.  
  33.         for (j = 0; j <= n-1; j++)
  34.         {
  35.           ji = klrx + j*lcx;
  36.           sumx2 = sumx2 + x[ijx]*x[ijx];
  37.           r = r + x[ijx];
  38.           c = c + x[ji];
  39.           kt = mt[ijmt] - 1;
  40.           t[kt] = t[kt] + x[ijx];
  41.           ijx = ijx + 1;
  42.           ijmt = ijmt + 1;
  43.         }
  44.         klrx = klrx + 1;
  45.         sumx = sumx + r;
  46.         sumc2 = sumc2 + c*c;
  47.         sumr2 = sumr2 + r*r;
  48.       }
  49.  
  50.       for (i = 0; i <= n-1; i++)
  51.         av[8] = av[8] + t[i]*t[i];
  52.  
  53.       for (i = 0; i <= n-1; i++)
  54.         t[i] = 0.0;
  55.  
  56.       for (i = 0; i <= n-1; i++)
  57.       {
  58.         ijx = i*lcx;
  59.         ijmg = i*lcmg;
  60.  
  61.         for (j = 0; j <= n-1; j++)
  62.         {
  63.           kg = mg[ijmg] - 1;
  64.           t[kg] = t[kg] + x[ijx];
  65.           ijmg = ijmg + 1;
  66.           ijx = ijx + 1;
  67.         }
  68.       }
  69.  
  70.       for (i = 0; i <= n-1; i++)
  71.         av[12] = av[12] + t[i]*t[i];
  72.  
  73.       xn = n;
  74.       c = sumx*sumx/(xn*xn);
  75.  
  76.       av[0] = sumr2/xn - c;
  77.       av[4] = sumc2/xn - c;
  78.       av[8] = av[8]/xn - c;
  79.       av[12] = av[12]/xn - c;
  80.       av[1] = n - 1;
  81.       av[17] = av[1]*(xn - 3.0);
  82.       av[16] = sumx2-c-av[0]-av[4]-av[8]-av[12];
  83.       av[18] = av[16]/av[17];
  84.       av[2] = av[0]/av[1];
  85.       av[3] = av[2]/av[18];
  86.       av[5] = av[1];
  87.       av[6] = av[4]/av[5];
  88.       av[7] = av[6]/av[18];
  89.       av[9] = av[5];
  90.       av[10] = av[8]/av[9];
  91.       av[11] = av[10]/av[18];
  92.       av[13] = av[9];
  93.       av[14] = av[12]/av[13];
  94.       av[15] = av[14]/av[18];
  95.       av[19] = c;
  96.       av[20] = 1.;
  97.       av[21] = sumx2;
  98.       av[22] = xn*xn;
  99.  
  100.      }
  101.