summaryrefslogtreecommitdiffstats
path: root/libdimension/polynomial.c
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@gmail.com>2010-10-28 18:37:38 -0400
committerTavian Barnes <tavianator@gmail.com>2010-10-28 18:37:38 -0400
commitac0d67bce9d487fe8a348a9b069c61e788348f9b (patch)
treeb816f9148c098165cd28f6d4d8a572b047dedc84 /libdimension/polynomial.c
parent1815e17b4243a3973e1389f73fe1607ec42f5372 (diff)
downloaddimension-ac0d67bce9d487fe8a348a9b069c61e788348f9b.tar.xz
Handle narrow ranges in dmnsn_bisect_root().
Diffstat (limited to 'libdimension/polynomial.c')
-rw-r--r--libdimension/polynomial.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/libdimension/polynomial.c b/libdimension/polynomial.c
index 31d8309..6e8ce4e 100644
--- a/libdimension/polynomial.c
+++ b/libdimension/polynomial.c
@@ -86,6 +86,9 @@ dmnsn_bisect_root(double poly[], size_t degree, double min, double max)
double mid = 0.0, evmid;
int lastsign = -1;
+ if (max - min <= dmnsn_epsilon)
+ return min;
+
do {
mid = (min*evmax - max*evmin)/(evmax - evmin);
evmid = dmnsn_evaluate_polynomial(poly, degree, mid);