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

  1.       stanvy(lcx,lcm,lcn,nn,k,m,n,x,av,f,t)
  2.  
  3.       /* this function computes the analysis of variance table of a
  4.          youden square and the f-ratio for treatments. the sum of
  5.          squares for treatments is adjusted because of the incompleteness
  6.          of the experimental data.
  7.       */
  8.  
  9.       int lcx,lcm,lcn,nn,k,m[],n[];
  10.       float av[],t[],x[],*f;
  11.  
  12.    {
  13.       int i,j,ij,jim,jin,jix,kk,klrm,klrn,klrx;
  14.       float xk,xl,xn,xx,s,c,c1,r1,t1,p,en,q;
  15.  
  16.       xk = k;
  17.       xn = nn;
  18.       av[5] = nn - 1;
  19.       av[11] = k - 1;
  20.       xl = xk * av[11] / av[5];
  21.       av[0] = 0.;
  22.       av[1] = nn * k;
  23.       av[3] = 1.;
  24.       s = 0.;
  25.       c1 = 0.;
  26.       r1 = 0.;
  27.       t1 = 0.;
  28.  
  29.       for(i = 0; i <= nn-1; i++)
  30.         t[i] = 0.;
  31.       klrm = 0;
  32.       klrx = 0;
  33.  
  34.       for(i = 0; i <= k-1; i++)
  35.       {
  36.        c = 0.;
  37.  
  38.        for(j = 0; j <= nn-1; j++)
  39.        {
  40.         jim = klrm + j * lcm;
  41.         jix = klrx + j * lcx;
  42.         xx = x[jix];
  43.         c = c + xx;
  44.         kk = m[jim] - 1;
  45.         t[kk] = t[kk] + xx;
  46.         av[0] = av[0] + xx * xx;
  47.        }
  48.        klrx = klrx + 1;
  49.        klrm = klrm + 1;
  50.        s = s + c;
  51.        c1 = c1 + c * c;
  52.       }
  53.  
  54.       for(i = 0; i <= ((nn-1)*lcx); i += lcx)
  55.       {
  56.        ij = i + 1;
  57.        for(j = 1; j <= k-1; j++)
  58.        {
  59.         x[i] = x[i] + x[ij];
  60.         ij = ij + 1;
  61.        }
  62.        r1 = r1 + x[i] * x[i];
  63.       }
  64.       klrn = 0;
  65.  
  66.       for(i = 0; i <= nn-1; i++)
  67.       {
  68.        p = 0.;
  69.  
  70.        for(j = 0; j <= nn-1; j++)
  71.        {
  72.         jin = klrn + j * lcn;
  73.         en = n[jin];
  74.         p = p + en * x[j*lcx];
  75.        }
  76.        q = xk * t[i] - p;
  77.        klrn = klrn + 1;
  78.        t1 = t1 + q * q;
  79.       }
  80.       av[2] = s * s / av[1];
  81.       av[4] = t1 / (av[1] * xl);
  82.       av[7] = r1 / xk - av[2];
  83.       av[6] = av[4] / av[5];
  84.       av[9] = 9999.99;
  85.       av[10] = c1 / xn - av[2];
  86.       av[12] = av[10] / av[11];
  87.       av[8] = av[5];
  88.       av[13] = av[0] - av[7] - av[10] - av[4] - av[2];
  89.       av[14] = (nn - 1) * (k - 2);
  90.       av[15] = av[13]/av[14];
  91.       *f = av[4] / (av[5] * av[15]);
  92.    }
  93.