From 2c7cb763dcb69e3c0464298e41e30cdc2b0f1cfb Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Mon, 1 Nov 2010 22:19:57 -0400 Subject: Small polynomial.c cleanup. --- libdimension/polynomial.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'libdimension/polynomial.c') diff --git a/libdimension/polynomial.c b/libdimension/polynomial.c index c960c6f..af8d5df 100644 --- a/libdimension/polynomial.c +++ b/libdimension/polynomial.c @@ -248,8 +248,9 @@ dmnsn_bisect_root(const double poly[], size_t degree, double min, double max) static inline void dmnsn_eliminate_root(double poly[], size_t *degree, double r) { - double rem = poly[*degree]; - for (ssize_t i = *degree - 1; i >= 0; --i) { + size_t deg = *degree; + double rem = poly[deg]; + for (ssize_t i = deg - 1; i >= 0; --i) { double temp = poly[i]; poly[i] = rem; rem = temp + r*rem; @@ -324,10 +325,13 @@ dmnsn_solve_polynomial(const double poly[], size_t degree, double x[]) } } - if (degree == 1) { + switch (degree) { + case 1: i += dmnsn_solve_linear(p, x + i); - } else if (degree == 2) { + break; + case 2: i += dmnsn_solve_quadratic(p, x + i); + break; } return i; -- cgit v1.2.3