// gcc test_poly_calc.c poly_calc.c #include #include #include "poly_calc.h" void tests(); void test1(); void test2(); void test3(); void test4(); void test5(); int main() { tests(); return 0; } void test5() { printf("TEST 5: UINT DEGREE\n"); // (-6x^4+3x+1)^5 = -7776x^20+19440x^17+6480x^16-19440x^14-12960x^13-2160x^12+9720x^11+9720x^10+3240x^9-2070x^8-3240x^7-1620x^6-117x^5+375x^4+270x^3+90x^2+15x^1+1 Polynomial p; init_polynomial(&p); add_term(&p, 1, 0); add_term(&p, -6, 4); add_term(&p, 3, 1); Polynomial res = deg_poly(&p, 5); sort_polynomial(&res); printf("EXPECTED:\n-7776x^20+19440x^17+6480x^16-19440x^14-12960x^13-2160x^12+9720x^11+9720x^10+3240x^9-2070x^8-3240x^7-1620x^6-117x^5+375x^4+270x^3+90x^2+15x^1+1\n"); printf("OUTPUT:\n"); print_polynomial(&res); free_polynomial(&p); free_polynomial(&res); } void test4() { printf("TEST 4: MUL\n"); // (-6x^4+3x+1) * (3x^4+2x^2-10) = -18x^8-12x^6+9x^5+63x^4+6x^3+2x^2-30x^1-10 Polynomial p1, p2; init_polynomial(&p1); add_term(&p1, 1, 0); add_term(&p1, -6, 4); add_term(&p1, 3, 1); init_polynomial(&p2); add_term(&p2, -10, 0); add_term(&p2, 2, 2); add_term(&p2, 3, 4); Polynomial res = mul_polynomials(&p1, &p2); sort_polynomial(&res); printf("EXPECTED:\n-18x^8-12x^6+9x^5+63x^4+6x^3+2x^2-30x^1-10\n"); printf("OUTPUT:\n"); print_polynomial(&res); free_polynomial(&p1); free_polynomial(&p2); free_polynomial(&res); } void test3() { printf("TEST 3: SUB\n"); // (-6x^4+3x+5x+10+1) - (3x^4+2x^2-10) = -9x^4-2x^2+8x^1+21 Polynomial p1, p2; init_polynomial(&p1); add_term(&p1, 1, 0); add_term(&p1, -6, 4); add_term(&p1, 3, 1); add_term(&p1, 5, 1); add_term(&p1, 10, 0); init_polynomial(&p2); add_term(&p2, -10, 0); add_term(&p2, 2, 2); add_term(&p2, 3, 4); Polynomial res = sub_polynomials(&p1, &p2); sort_polynomial(&res); printf("EXPECTED:\n-9x^4-2x^2+8x^1+21\n"); printf("OUTPUT:\n"); print_polynomial(&res); free_polynomial(&p1); free_polynomial(&p2); free_polynomial(&res); } void test2() { printf("TEST 2: ADD\n"); // (-6x^4+3x+1) + (3x^4+2x^2-10) = -3x^4+2x^2+3x-9 Polynomial p1, p2; init_polynomial(&p1); add_term(&p1, 1, 0); add_term(&p1, -6, 4); add_term(&p1, 3, 1); init_polynomial(&p2); add_term(&p2, -10, 0); add_term(&p2, 2, 2); add_term(&p2, 3, 4); Polynomial res = add_polynomials(&p1, &p2); sort_polynomial(&res); printf("EXPECTED:\n-3x^4+2x^2+3x^1-9\n"); printf("OUTPUT:\n"); print_polynomial(&res); free_polynomial(&p1); free_polynomial(&p2); free_polynomial(&res); } void test1() { printf("TEST 1: INIT\n"); Polynomial poly1, poly2; init_polynomial(&poly1); add_term(&poly1, 3, 2); add_term(&poly1, 2, 1); add_term(&poly1, -1, 0); sort_polynomial(&poly1); init_polynomial(&poly2); add_term(&poly2, -2, 3); add_term(&poly2, 4, 2); add_term(&poly2, -5, 0); sort_polynomial(&poly2); printf("EXPECTED:\n+3x^2+2x^1-1\n-2x^3+4x^2-5\n"); printf("OUTPUT:\n"); print_polynomial(&poly1); print_polynomial(&poly2); free_polynomial(&poly1); free_polynomial(&poly2); } void tests() { test1(); printf("\n\n"); test2(); printf("\n\n"); test3(); printf("\n\n"); test4(); printf("\n\n"); test5(); }