From 577d01982080e181edeba5172d5a7e007170f4e3 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Mon, 3 Feb 2014 12:14:44 -0500 Subject: Fix a bug in cubic polynomial solver, and add more tests. --- libdimension/polynomial.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'libdimension/polynomial.c') diff --git a/libdimension/polynomial.c b/libdimension/polynomial.c index 9491861..3f64091 100644 --- a/libdimension/polynomial.c +++ b/libdimension/polynomial.c @@ -358,9 +358,9 @@ dmnsn_solve_cubic(double poly[4], double x[3]) x[0] = -bdiv3; } else { /* Two real roots; one duplicate */ - double t1 = 3.0*q/p, t2 = -t1/2.0; - x[0] = dmnsn_max(t1, t2); - x[1] = dmnsn_min(t1, t2); + double t1 = -(3.0*q)/(2.0*p), t2 = -2.0*t1; + x[0] = dmnsn_max(t1, t2) - bdiv3; + x[1] = dmnsn_min(t1, t2) - bdiv3; if (x[1] >= dmnsn_epsilon) return 2; } -- cgit v1.2.3