int main (void) { struct poly *p0 = polySetCoefficient (polySetCoefficient (polySetCoefficient ( polyCreate() , 0, 4.0), 1, -1.0), 10, 2.0); struct poly *p1 = polyCopy (p0); struct poly *p2, *p3, *p4; printf ("%g\n", polyGetCoefficient (p0, 10)); printf ("%g\n", polyGetCoefficient (p0, 100)); printf ("%d\n", polyDegree (p0)); polyPrint (p0); polyPrint (p1); polySetCoefficient (p1, 2, 1.0/2.0); polyPrint (p1); p2 = polyAdd (p0, p1); polyPrint (p2); p3 = polyMultiply (p0, p1); polyPrint (p3); p4 = polyPrime (p0); polyPrint (p4); printf ("%g\n", polyEval (p0, 0.0)); printf ("%g\n", polyEval (p0, 1.0)); printf ("%g\n", polyEval (p0, 2.0)); p0 = polyDelete (p0); p1 = polyDelete (p1); p2 = polyDelete (p2); p3 = polyDelete (p3); p4 = polyDelete (p4); return 0; }
int main(int argc, char const *argv[]){ int i,a,b; int tmp; Poly li, lp, mulp, sump; li = newPoly(); lp = newPoly(); if ( NULL == li || NULL == lp) return 1; li->exp = 0; lp->exp = 0; srand( time(NULL) ); for(i = 0 ; i< LSIZE; i++){ a = rand()/(RAND_MAX/LSIZE); b = rand()/(RAND_MAX/LSIZE); addItem( a, b, li); addItem( b, a, lp); } //removeDup( li); //removeDup( lp); printPoly( li ); printPoly( lp ); mulp = polyMultiply2( li, lp); printf("\nmultiply : " ); printPoly( mulp ); deletePoly( mulp); sump = polyAdd( li, lp); printf("\nadd : " ); printPoly( sump ); deletePoly( sump ); printf("\n li ^2: "); printPoly( polyExp(li,2) ); //swapNext( first(li), li ); deletePoly( li ); deletePoly( lp ); return 0; }
int main(int argc,char *argv[]) { int i,N=atoi(argv[1]); double x=atof(argv[2]); poly_t p,y; p=polyAdd(polyTerm(1,1),polyTerm(1,0)); for(y=p,i=1;i<N;i++){ y=polyMult(p,y); } puts("binomial coefficients:"); polyShow(y); putchar('\n'); putchar('\n'); printf("(%.3f+1)^%d: %.3f\n",x,N,polyEval(y,x)); return(0); }
void main() { term a, b, sum; printf(" Enter 1st polynomial in form <coeff deg>: \n"); polyRead(&a); printf("\n Enter 2nd polynomial in form <coeff deg>: \n"); polyRead(&b); polyAdd(&a, &b, &sum); printf("\n"); polyDisplay(&a); printf(" + "); polyDisplay(&b); printf("\n = "); polyDisplay(&sum); printf("\n\n"); polyFree(&a); polyFree(&b); polyFree(&sum); }
void lagrange(byte table[], byte result[], int d) { int i, j, k; byte polyDeg1[2]; polyDeg1[1] = 0x1; for(i = 0; i <= d; i++) result[i] = 0; for(i = 0; i <= d; i++) { byte a = 1; byte lagrangePoly[d+1], tmpPoly[d+1]; #ifdef DEBUG_LAGRANGE printf("i = %d (d = %d)\n", i, d); #endif lagrangePoly[0] = 0x1; for(j = 1; j < d+1; j++) { lagrangePoly[j] = 0; } #ifdef DEBUG_LAGRANGE printf("\tLagrange poly = "); for(j = 0; j < d+1; j++) { if(lagrangePoly[j]) { printf("%#2.2x * X^%d + ", lagrangePoly[j], j); } } printf("\b\b \n"); #endif for(j = 0; j <= d; j++) { if(i != j) { polyDeg1[0] = j; #ifdef DEBUG_LAGRANGE printf("\tj = %d\n", j); printf("\t\tpolyDeg1 = "); for(k = 0; k < 2; k++) { if(polyDeg1[k]) { printf("%#2.2x * X^%d + ", polyDeg1[k], k); } } printf("\b\b \n"); #endif a = mult(i ^ j, a); polyProduct(lagrangePoly, polyDeg1, tmpPoly, d+1); for(k = 0; k < d+1; k++) { lagrangePoly[k] = tmpPoly[k]; } #ifdef DEBUG_LAGRANGE printf("\t\ta = %#2.2x\n", a); printf("\t\tlagrangePoly = "); for(k = 0; k < 2; k++) { if(lagrangePoly[k]) { printf("%#2.2x * X^%d + ", lagrangePoly[k], k); isZero = 0; } } if(isZero) printf("0\n"); else printf("\b\b\b \n"); #endif } } a = inverse(a); a = mult(table[i], a); polyScalMult(lagrangePoly, a, d); polyAdd(lagrangePoly, result, result, d); } }