#include void add_poly(double *z, double *x, double *y, int n) { int i; for (i = 0; i <= n; i++) z[i] = x[i] + y[i]; } /* * The x and y arrays are of size n+1 (so that the maximum array index is n), * but the z array is of size 2n+1 to hold the product. */ void mult_poly(double *z, double *x, double *y, int n) { int i, j; for (i = 0; i <= 2*n; i++) z[i] = 0; for (i = 0; i <= n; i++) for (j = 0; j <= n; j++) z[i+j] += x[i] * y[j]; } void print_poly(double *x, int n) { int i, printed_something = 0; for (i = n; i >= 0; i--) { if (x[i]) { if (printed_something) printf(" + "); printf("%gx**%d", x[i], i); printed_something = 1; } } if (!printed_something) printf("0"); printf("\n"); } int main() { static double x[] = { 7, 0, 3, 1 }; static double y[] = { 6, 2, 0, 0 }; static double z[] = { 9, 5, 0, 4 }; static double w[] = { 7, 0, 0, 8 }; static double prod1[7], prod2[7]; mult_poly(prod1, x, y, 3); mult_poly(prod2, z, w, 3); add_poly(prod1, prod1, prod2, 6); print_poly(prod1, 6); return 0; }