\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 -2.874603183983119 \cdot 10^{+152}:\\
\;\;\;\;\frac{1}{2} \cdot \frac{c}{b} - \frac{b}{a} \cdot \frac{2}{3}\\
\mathbf{elif}\;b \le 1.9030999523937384 \cdot 10^{-67}:\\
\;\;\;\;\frac{\frac{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} - b}{3}}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{-1}{2} \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r6104458 = b;
double r6104459 = -r6104458;
double r6104460 = r6104458 * r6104458;
double r6104461 = 3.0;
double r6104462 = a;
double r6104463 = r6104461 * r6104462;
double r6104464 = c;
double r6104465 = r6104463 * r6104464;
double r6104466 = r6104460 - r6104465;
double r6104467 = sqrt(r6104466);
double r6104468 = r6104459 + r6104467;
double r6104469 = r6104468 / r6104463;
return r6104469;
}
double f(double a, double b, double c) {
double r6104470 = b;
double r6104471 = -2.874603183983119e+152;
bool r6104472 = r6104470 <= r6104471;
double r6104473 = 0.5;
double r6104474 = c;
double r6104475 = r6104474 / r6104470;
double r6104476 = r6104473 * r6104475;
double r6104477 = a;
double r6104478 = r6104470 / r6104477;
double r6104479 = 0.6666666666666666;
double r6104480 = r6104478 * r6104479;
double r6104481 = r6104476 - r6104480;
double r6104482 = 1.9030999523937384e-67;
bool r6104483 = r6104470 <= r6104482;
double r6104484 = r6104470 * r6104470;
double r6104485 = 3.0;
double r6104486 = r6104485 * r6104477;
double r6104487 = r6104486 * r6104474;
double r6104488 = r6104484 - r6104487;
double r6104489 = sqrt(r6104488);
double r6104490 = r6104489 - r6104470;
double r6104491 = r6104490 / r6104485;
double r6104492 = r6104491 / r6104477;
double r6104493 = -0.5;
double r6104494 = r6104493 * r6104475;
double r6104495 = r6104483 ? r6104492 : r6104494;
double r6104496 = r6104472 ? r6104481 : r6104495;
return r6104496;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -2.874603183983119e+152Initial program 60.4
Simplified60.4
Taylor expanded around -inf 2.2
if -2.874603183983119e+152 < b < 1.9030999523937384e-67Initial program 13.3
Simplified13.3
rmApplied associate-/r*13.3
if 1.9030999523937384e-67 < b Initial program 52.0
Simplified52.0
Taylor expanded around inf 9.3
Final simplification10.5
herbie shell --seed 2019163
(FPCore (a b c)
:name "Cubic critical"
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))