home *** CD-ROM | disk | FTP | other *** search
- plyadd (a,nda,b,ndb,c,ndc)
-
- /*this function performs polynomial addition, c = a + b.*/
-
- int nda,ndb,*ndc;
- float a[],b[],c[];
-
- {
- int n, ndif,ndcp1,i,j,k;
- float x,y;
-
- ndif = abs(nda-ndb);
- n = nda;
- if(nda < ndb) n = ndb;
- ndcp1 = n + 1;
- j = n ;
-
- for(i = 0; i <= ndcp1-1; i++)
- {
- k = j - ndif;
- x = a[j];
- if(nda < ndb) x = b[j];
- if(j > (ndif-1))
- {
- y = b[k];
- if(nda < ndb) y = a[k];
- x = x + y;
- }
- c[j] = x;
- j = j - 1;
- }
- *ndc = n;
- for(i = 0; i <= ndcp1-1; i++)
- if(c[i] != 0.0) goto a10;
- *ndc = 0;
- return;
- a10: *ndc = *ndc - i;
- for(j = 0; j <= *ndc; j++)
- {
- c[j] = c[i];
- i = i + 1;
- }
- }