home *** CD-ROM | disk | FTP | other *** search
- stmlrg(n,m,a,icol,x,icolx)
-
- /* purpose...stmlrg calculates the n multiple regression */
- /* coefficients for a set of m observations. */
-
- int icol,icolx,m,n;
- float a[],x[];
-
- {
- int i,i1,iirow,index,iscrip,j,j1,jirow,jscrip,n1,n11;
- float sum,xm;
-
- n1 = n + 1;
- for(j = 0; j<= n; j++)
- {
- for(i = 0; i <= j; i++)
- {
- jscrip = j + (i * icol);
- a[jscrip] = 0.;
- }
- }
-
- for(i = 0; i <= n; i++)
- {
- jscrip = i + (n * icol);
- a[jscrip] = 0.;
- }
- jirow = n + (n * icol);
-
- for(index = 0; index <= m-1; index++)
- {
-
- for(j = 0; j <= n-1; j++)
- {
- jscrip = j + (n * icol);
- j1 = j + (index * icolx);
- a[jscrip] = a[jscrip] + x[j1];
-
- for(i = 0; i <= j; i++)
- {
- jscrip = j + (i * icol);
- i1 = i + (index * icolx);
- a[jscrip] = a[jscrip] + x[j1] * x[i1];
- }
- }
- n11 = n + (index * icolx);
- a[jirow] = a[jirow] + x[n11];
-
- for(i = 0; i <= n-1; i++)
- {
- iirow = n + (i * icol);
- i1 = i + (index * icolx);
- a[iirow] = a[iirow] + x[i1] * x[n11];
- }
- }
- xm = m;
- xm = 1. / xm;
-
- for(j = 0; j <= n; j++)
- {
- jirow = j + (n * icol);
-
- for(i = 0; i <= j; i++)
- {
- if(i == n) goto fil;
- iirow = i + (n * icol);
- jscrip = j + (i * icol);
- a[jscrip] = a[jscrip] - a[jirow] * a[iirow] * xm;
- }
- }
- fil: for( i = 1; i <= n; i++)
- {
- iscrip = (i - 1) * icol;
- index = i - 1;
-
- for(j = 1; j <= index; j++)
- {
- jscrip = (i - 1) + (j- 1) * icol;
- a[iscrip] = a[jscrip];
- iscrip = iscrip + 1;
- }
- }
- yenbob(a,icol,n);
- sum = 0;
-
- for( i = 0; i <= n-1; i++)
- {
- iirow = n + (i * icol);
- jirow = i + (n * icol);
- sum = sum + a[iirow] * a[jirow];
- }
- iirow = n + (n * icol);
- i = iirow;
- a[i] = xm * (a[iirow] - sum);
- }