41 Real q = a * a - 3 *
b;
42 Real r = 2 * a * a * a - 9 * a *
b + 27 * c;
50 Real CR2 = 729 * r * r;
51 Real CQ3 = 2916 * q * q * q;
53 if (
R == 0 && Q == 0) {
55 *x0 = *x1 = *x2 = -a / 3;
58 }
else if (CR2 == CQ3) {
67 *x0 = -2 * sqrtQ - a / 3;
73 *x2 = 2 * sqrtQ - a / 3;
77 }
else if (CR2 < CQ3) {
80 Real sqrtQ3 = sqrtQ * sqrtQ * sqrtQ;
81 Real theta =
acos(
R / sqrtQ3);
82 Real
norm = -2 * sqrtQ;
83 *x0 =
norm *
cos(theta / 3) - a / 3;
99 Real sgnR = (
R >= 0 ? 1 : -1);
109 if (coeffs[0] == 0.0) {
114 Real a = coeffs[2] / coeffs[3];
115 Real
b = coeffs[1] / coeffs[3];
116 Real c = coeffs[0] / coeffs[3];
118 a,
b, c, solutions + 0, solutions + 1, solutions + 2);