#include #include #define NVAR 5 #define MAX_TERM 1000 typedef struct { int nterm; int term[MAX_TERM][1+NVAR]; } mvpoly; void polyprint ( mvpoly f ) { int i, k; for (i=0; i=0)) printf("+"); if (f.term[i][0] != 1) printf("%d", f.term[i][0]); for (k=1; k<=NVAR; ++k) { if (f.term[i][k]) printf("%c",'a'+(char)(k-1)); if (f.term[i][k]>1) printf("^%d", f.term[i][k]); } } } mvpoly polyprod ( mvpoly f, mvpoly g ) { int i, j, k, l; mvpoly h; /* The output is computed here */ int deg[1+NVAR]; /* Temporary storage of degrees of product monomials */ int found; /* A flag to locate monomials already added to h */ h.nterm = 0; for (i=0; i