From 4c22411c7c540c4cba06c1941d084c00da764807 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Thu, 28 Oct 2010 16:27:25 -0400 Subject: Fix dmnsn_print_polynomial(). --- libdimension/polynomial.c | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) (limited to 'libdimension/polynomial.c') diff --git a/libdimension/polynomial.c b/libdimension/polynomial.c index 77e561d..31d8309 100644 --- a/libdimension/polynomial.c +++ b/libdimension/polynomial.c @@ -302,26 +302,15 @@ dmnsn_solve_polynomial(double poly[], size_t degree, double x[]) void dmnsn_print_polynomial(FILE *file, double poly[], size_t degree) { - fprintf(file, "%g*x^%zu", poly[degree], degree); - for (size_t i = degree - 1; i > 1; --i) { - if (poly[i] > 0.0) { - fprintf(file, " + %g*x^%zu", poly[i], i); - } else if (poly[i] < 0.0) { - fprintf(file, " - %g*x^%zu", -poly[i], i); + for (ssize_t i = degree; i >= 0; --i) { + if (i < degree) { + fprintf(file, (poly[i] >= 0.0) ? " + " : " - "); + } + fprintf(file, "%g", poly[i]); + if (i >= 2) { + fprintf(file, "*x^%zu", i); + } else if (i == 1) { + fprintf(file, "*x"); } } - - if (poly[1] > 0.0) { - fprintf(file, " + %g*x", poly[1]); - } else if (poly[1] < 0.0) { - fprintf(file, " - %g*x", -poly[1]); - } - - if (poly[0] > 0.0) { - fprintf(file, " + %g", poly[0]); - } else if (poly[0] < 0.0) { - fprintf(file, " - %g", -poly[0]); - } - - fprintf(file, "\n"); } -- cgit v1.2.3