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