From 516df38e8acff5d1f7022ae5492f814acea1df3c Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Wed, 10 Nov 2010 01:11:22 -0500 Subject: Use Newton's method when the root bound is degenerate. --- libdimension/dimension/polynomial.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'libdimension/dimension') diff --git a/libdimension/dimension/polynomial.h b/libdimension/dimension/polynomial.h index e04861f..ffe3014 100644 --- a/libdimension/dimension/polynomial.h +++ b/libdimension/dimension/polynomial.h @@ -41,6 +41,18 @@ dmnsn_evaluate_polynomial(const double poly[], size_t degree, double x) return ret; } +DMNSN_INLINE double +dmnsn_evaluate_polynomial_derivative(const double poly[], size_t degree, + double x) +{ + double ret = poly[degree]*degree; + size_t i; + for (i = degree - 1; i >= 1; --i) { + ret = ret*x + poly[i]*i; + } + return ret; +} + /* Stores the positive roots of poly[] in x[], and returns the number of such roots that were stored */ size_t dmnsn_solve_polynomial(const double poly[], size_t degree, double x[]); -- cgit v1.2.3