X-Git-Url: https://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=junkcode%2Fiasoule32%40gmail.com-polynomial%2Ftest%2Frun.c;fp=junkcode%2Fiasoule32%40gmail.com-polynomial%2Ftest%2Frun.c;h=d12ee1aed5ce86cac4fb534219e4b23f2ad14da6;hp=0000000000000000000000000000000000000000;hb=f5d28c40a537359d56996f11d113b4a3a40a8f60;hpb=9c1974f62a43e0dd5dac8ad4f9b541a12c110a0a diff --git a/junkcode/iasoule32@gmail.com-polynomial/test/run.c b/junkcode/iasoule32@gmail.com-polynomial/test/run.c new file mode 100644 index 00000000..d12ee1ae --- /dev/null +++ b/junkcode/iasoule32@gmail.com-polynomial/test/run.c @@ -0,0 +1,133 @@ +/* +** polynomial_adt_test.c +** Test (minimalistic) for the polynomial module + * More of a display of functionality + * Copyright (c) 2009 I. Soule + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * +** iasoule32@gmail.com +*/ + +#include +#include "../polynomial_adt.h" +#include "../polynomial_adt.c" + +int main(void) +{ + PolyAdt *p = create_adt(5), *q = create_adt(4); + PolyAdt *sum, *diff, *prod; + + insert_term(p,1,5); + insert_term(p,3,4); + insert_term(p,1,3); + insert_term(p,9,2); + insert_term(p,8,1); + + insert_term(q,2,4); + insert_term(q,8,3); + insert_term(q,7,2); + insert_term(q,6,1); + + + printf("Displaying Polynomials ...\n"); + display_poly(p); + display_poly(q); + + sum = add(p,q); + printf("P(x) + Q(x) = "); + display_poly(sum); + + diff = subtract(p,q); + printf("P(x) - Q(x) = "); + display_poly(diff); + + prod = multiply(p,q); + printf("P(x)*Q(x) = "); + display_poly(prod); + + PolyAdt *quad = create_adt(2); + insert_term(quad, 10, 2); + insert_term(quad, 30, 1); + insert_term(quad, 2, 0); + + quadratic_roots(quad, NULL, NULL); //print out the roots + + float real, cplx; + quadratic_roots(quad, &real, &cplx); + + printf("X1 = %f, X2 = %f\n\n", real, cplx); + + PolyAdt *deriv, *integral; + + deriv = derivative(p); + printf("The derivitive of p = "); + display_poly(deriv); + integral = integrate(q); + + printf("The integral of q = "); + display_poly(integral); + + printf("\n Computing P(x)^3\n"); + + PolyAdt *expo; + expo = exponentiate(p, 3); + display_poly(expo); + printf("\n"); + + printf("Computing Integral[Q(x)^2]\n"); + expo = exponentiate(q, 2); + integral = integrate(expo); + display_poly(integral); + + + printf(" Differentiating and Integrating P\n"); + display_poly(integrate(derivative(p))); + + PolyAdt *L, *M; + + L = create_adt(3), M = create_adt(2); + + insert_term(L, 4, 3); + insert_term(L, 10, 2); + insert_term(L, 15, 1); + + insert_term(M, 4, 2); + printf("L = "); + display_poly(L); + printf("M = "); + display_poly(M); + + + printf("Computing composition L(M(X))\n"); + display_poly(compose(L, M)); + + printf("Freed memory back to heap for allocated polys'\n"); + destroy_poly(sum); + destroy_poly(diff); + destroy_poly(prod); + destroy_poly(L); destroy_poly(M); + destroy_poly(q); destroy_poly(p); + + return 0; +}