\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3 \cdot a}\begin{array}{l}
\mathbf{if}\;b \le -4.0323767944871679 \cdot 10^{127}:\\
\;\;\;\;0.5 \cdot \frac{c}{b} - 0.66666666666666663 \cdot \frac{b}{a}\\
\mathbf{elif}\;b \le 1.17528679488360856 \cdot 10^{-69}:\\
\;\;\;\;\frac{\frac{\left(-b\right) + \sqrt{b \cdot b - 3 \cdot \left(a \cdot c\right)}}{3}}{a}\\
\mathbf{else}:\\
\;\;\;\;-0.5 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r198511 = b;
double r198512 = -r198511;
double r198513 = r198511 * r198511;
double r198514 = 3.0;
double r198515 = a;
double r198516 = r198514 * r198515;
double r198517 = c;
double r198518 = r198516 * r198517;
double r198519 = r198513 - r198518;
double r198520 = sqrt(r198519);
double r198521 = r198512 + r198520;
double r198522 = r198521 / r198516;
return r198522;
}
double f(double a, double b, double c) {
double r198523 = b;
double r198524 = -4.032376794487168e+127;
bool r198525 = r198523 <= r198524;
double r198526 = 0.5;
double r198527 = c;
double r198528 = r198527 / r198523;
double r198529 = r198526 * r198528;
double r198530 = 0.6666666666666666;
double r198531 = a;
double r198532 = r198523 / r198531;
double r198533 = r198530 * r198532;
double r198534 = r198529 - r198533;
double r198535 = 1.1752867948836086e-69;
bool r198536 = r198523 <= r198535;
double r198537 = -r198523;
double r198538 = r198523 * r198523;
double r198539 = 3.0;
double r198540 = r198531 * r198527;
double r198541 = r198539 * r198540;
double r198542 = r198538 - r198541;
double r198543 = sqrt(r198542);
double r198544 = r198537 + r198543;
double r198545 = r198544 / r198539;
double r198546 = r198545 / r198531;
double r198547 = -0.5;
double r198548 = r198547 * r198528;
double r198549 = r198536 ? r198546 : r198548;
double r198550 = r198525 ? r198534 : r198549;
return r198550;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -4.032376794487168e+127Initial program 53.2
Taylor expanded around -inf 3.5
if -4.032376794487168e+127 < b < 1.1752867948836086e-69Initial program 12.8
rmApplied associate-/r*12.8
rmApplied associate-*l*12.9
if 1.1752867948836086e-69 < b Initial program 53.9
Taylor expanded around inf 8.8
Final simplification10.1
herbie shell --seed 2020035
(FPCore (a b c)
:name "Cubic critical"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))