00001 #include "utilf.h" 00002 #include "polynomial.h" 00003 00004 real polyeval(real *p, int n, real x) 00005 { 00006 real val = p[n-1]; 00007 int i; 00008 for (i = n - 2; i >= 0; i--) 00009 val = x*val + p[i]; 00010 return val; 00011 } 00012 00013 void polyderiv(real *p, int n, real *pderiv) 00014 { 00015 int i; 00016 for (i = 0; i < n - 1; i++) 00017 pderiv[i] = (real)(i + 1)*p[i+1]; 00018 } 00019 00020 void polyint(real *p, int n, real *pint) 00021 { 00022 int i; 00023 pint[0] = 0.0; 00024 for (i = 0; i < n; i++) 00025 pint[i+1] = p[i]/(real)(i + 1); 00026 } 00027 00028 void polymul(real *p1, int n1, real *p2, int n2, real *pmul) 00029 { 00030 int i, j; 00031 00032 for (i = 0; i < n1 + n2 - 1; i++) 00033 pmul[i] = 0.0; 00034 for (i = 0; i < n1; i++) 00035 for (j = 0; j < n2; j++) 00036 pmul[i + j] += p1[i]*p2[j]; 00037 } 00038 00039 void polyprint(real *p, int n) 00040 { 00041 int i; 00042 printf("[ "); 00043 for (i = 0; i < n; i++) 00044 printf("%g ", p[i]); 00045 printf("]"); 00046 } 00047 00048 00049 00050 00051