\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 -5.2389466313579672 \cdot 10^{127}:\\
\;\;\;\;0.5 \cdot \frac{c}{b} - 0.66666666666666663 \cdot \frac{b}{a}\\
\mathbf{elif}\;b \le 1.6670468245058271 \cdot 10^{-85}:\\
\;\;\;\;\frac{\frac{\left(-b\right) + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}{3}}{a}\\
\mathbf{else}:\\
\;\;\;\;-0.5 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r109355 = b;
double r109356 = -r109355;
double r109357 = r109355 * r109355;
double r109358 = 3.0;
double r109359 = a;
double r109360 = r109358 * r109359;
double r109361 = c;
double r109362 = r109360 * r109361;
double r109363 = r109357 - r109362;
double r109364 = sqrt(r109363);
double r109365 = r109356 + r109364;
double r109366 = r109365 / r109360;
return r109366;
}
double f(double a, double b, double c) {
double r109367 = b;
double r109368 = -5.238946631357967e+127;
bool r109369 = r109367 <= r109368;
double r109370 = 0.5;
double r109371 = c;
double r109372 = r109371 / r109367;
double r109373 = r109370 * r109372;
double r109374 = 0.6666666666666666;
double r109375 = a;
double r109376 = r109367 / r109375;
double r109377 = r109374 * r109376;
double r109378 = r109373 - r109377;
double r109379 = 1.667046824505827e-85;
bool r109380 = r109367 <= r109379;
double r109381 = -r109367;
double r109382 = r109367 * r109367;
double r109383 = 3.0;
double r109384 = r109383 * r109375;
double r109385 = r109384 * r109371;
double r109386 = r109382 - r109385;
double r109387 = sqrt(r109386);
double r109388 = r109381 + r109387;
double r109389 = r109388 / r109383;
double r109390 = r109389 / r109375;
double r109391 = -0.5;
double r109392 = r109391 * r109372;
double r109393 = r109380 ? r109390 : r109392;
double r109394 = r109369 ? r109378 : r109393;
return r109394;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -5.238946631357967e+127Initial program 54.3
Taylor expanded around -inf 3.6
if -5.238946631357967e+127 < b < 1.667046824505827e-85Initial program 12.3
rmApplied associate-/r*12.3
if 1.667046824505827e-85 < b Initial program 52.8
Taylor expanded around inf 9.7
Final simplification10.1
herbie shell --seed 2020056
(FPCore (a b c)
:name "Cubic critical"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))