blob: aa784cbda522543a031d7184ebdf1f6dd192b585 [file] [log] [blame]
caryclark@google.com27accef2012-01-25 18:57:23 +00001#include "QuadraticUtilities.h"
2
3int quadraticRoots(double A, double B, double C, double t[2]) {
4 B *= 2;
5 double square = B * B - 4 * A * C;
6 if (square < 0) {
7 return 0;
8 }
9 double squareRt = sqrt(square);
10 double Q = (B + (B < 0 ? -squareRt : squareRt)) / -2;
11 int foundRoots = 0;
12 if ((Q <= A) ^ (Q < 0)) {
13 t[foundRoots++] = Q / A;
14 }
15 if ((C <= Q) ^ (C < 0)) {
16 t[foundRoots++] = C / Q;
17 }
18 return foundRoots;
19}
20
21