summaryrefslogtreecommitdiffstats
path: root/libdimension/polynomial.c
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@tavianator.com>2014-02-03 12:14:44 -0500
committerTavian Barnes <tavianator@tavianator.com>2014-02-03 13:17:29 -0500
commit577d01982080e181edeba5172d5a7e007170f4e3 (patch)
treeda53b8e4d57c6524f57bfee0238ee7c8e4aadcb0 /libdimension/polynomial.c
parentb1fccd03798da1930755557cb4516526cc09bb15 (diff)
downloaddimension-577d01982080e181edeba5172d5a7e007170f4e3.tar.xz
Fix a bug in cubic polynomial solver, and add more tests.
Diffstat (limited to 'libdimension/polynomial.c')
-rw-r--r--libdimension/polynomial.c6
1 files changed, 3 insertions, 3 deletions
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;
}