public static double[] Quadratic(double A, double B, double C)
{
if (A == 0)
{
if (B == 0)
throw new ArgumentException(
"Invalid quadratic. The first and second " +
"coefficients cannot both be zero."
);
return new double[] { -C / B };
}
double r = B * B - 4 * A * C;
if (System.Math.Abs(r) < 1e-8)
return new double[] { -B / (2 * A) };
else if (r < 0)
return new double[] { };
r = System.Math.Sqrt(r);
double A2 = 2 * A;
return new double[] {
((-B + r)/A2),
((-B - r)/A2)
};
}