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

  1.    stmlrg(n,m,a,icol,x,icolx)
  2.  
  3.       /* purpose...stmlrg calculates the n multiple regression   */
  4.       /* coefficients for a set of m observations.               */
  5.  
  6.       int icol,icolx,m,n;
  7.       float a[],x[];
  8.  
  9.    {
  10.       int i,i1,iirow,index,iscrip,j,j1,jirow,jscrip,n1,n11;
  11.       float sum,xm;
  12.  
  13.       n1 = n + 1;
  14.       for(j = 0; j<= n; j++)
  15.       {
  16.        for(i = 0; i <= j; i++)
  17.        {
  18.        jscrip = j + (i * icol);
  19.        a[jscrip] = 0.;
  20.        }
  21.       }
  22.  
  23.       for(i = 0; i <= n; i++)
  24.       {
  25.        jscrip = i + (n * icol);
  26.        a[jscrip] = 0.;
  27.       }
  28.       jirow = n  + (n * icol);
  29.  
  30.       for(index = 0; index <= m-1; index++)
  31.       {
  32.  
  33.        for(j = 0; j <= n-1; j++)
  34.        {
  35.         jscrip = j + (n * icol);
  36.         j1 = j + (index * icolx);
  37.         a[jscrip] = a[jscrip] + x[j1];
  38.  
  39.         for(i = 0; i <= j; i++)
  40.         {
  41.          jscrip = j + (i * icol);
  42.          i1 = i + (index * icolx);
  43.          a[jscrip] = a[jscrip] + x[j1] * x[i1];
  44.         }
  45.        }
  46.        n11 = n + (index * icolx);
  47.        a[jirow] = a[jirow] + x[n11];
  48.  
  49.        for(i = 0; i <= n-1; i++)
  50.        {
  51.         iirow = n + (i * icol);
  52.         i1 = i + (index * icolx);
  53.         a[iirow] = a[iirow] + x[i1] * x[n11];
  54.        }
  55.       }
  56.       xm = m;
  57.       xm = 1. / xm;
  58.  
  59.       for(j = 0; j <= n; j++)
  60.       {
  61.        jirow = j + (n * icol);
  62.  
  63.        for(i = 0; i <= j; i++)
  64.        {
  65.         if(i == n) goto fil;
  66.         iirow = i + (n * icol);
  67.         jscrip = j + (i * icol);
  68.         a[jscrip] = a[jscrip] - a[jirow] * a[iirow] * xm;
  69.        }
  70.       }
  71. fil:  for( i = 1; i <= n; i++)
  72.       {
  73.        iscrip = (i - 1) * icol;
  74.        index = i - 1;
  75.  
  76.        for(j = 1; j <= index; j++)
  77.        {
  78.         jscrip = (i - 1) + (j- 1) * icol;
  79.         a[iscrip] = a[jscrip];
  80.         iscrip = iscrip + 1;
  81.        }
  82.       }
  83.       yenbob(a,icol,n);
  84.       sum = 0;
  85.  
  86.       for( i = 0; i <= n-1; i++)
  87.       {
  88.        iirow = n + (i * icol);
  89.        jirow = i + (n * icol);
  90.        sum = sum + a[iirow] * a[jirow];
  91.       }
  92.       iirow = n + (n * icol);
  93.       i = iirow;
  94.       a[i] = xm * (a[iirow] - sum);
  95.    }
  96.