\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 -3.00946394615636034 \cdot 10^{149}:\\
\;\;\;\;0.5 \cdot \frac{c}{b} - 0.66666666666666663 \cdot \frac{b}{a}\\
\mathbf{elif}\;b \le 9.39036747108992214 \cdot 10^{-69}:\\
\;\;\;\;\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 r113596 = b;
double r113597 = -r113596;
double r113598 = r113596 * r113596;
double r113599 = 3.0;
double r113600 = a;
double r113601 = r113599 * r113600;
double r113602 = c;
double r113603 = r113601 * r113602;
double r113604 = r113598 - r113603;
double r113605 = sqrt(r113604);
double r113606 = r113597 + r113605;
double r113607 = r113606 / r113601;
return r113607;
}
double f(double a, double b, double c) {
double r113608 = b;
double r113609 = -3.0094639461563603e+149;
bool r113610 = r113608 <= r113609;
double r113611 = 0.5;
double r113612 = c;
double r113613 = r113612 / r113608;
double r113614 = r113611 * r113613;
double r113615 = 0.6666666666666666;
double r113616 = a;
double r113617 = r113608 / r113616;
double r113618 = r113615 * r113617;
double r113619 = r113614 - r113618;
double r113620 = 9.390367471089922e-69;
bool r113621 = r113608 <= r113620;
double r113622 = -r113608;
double r113623 = r113608 * r113608;
double r113624 = 3.0;
double r113625 = r113624 * r113616;
double r113626 = r113625 * r113612;
double r113627 = r113623 - r113626;
double r113628 = sqrt(r113627);
double r113629 = r113622 + r113628;
double r113630 = r113629 / r113624;
double r113631 = r113630 / r113616;
double r113632 = -0.5;
double r113633 = r113632 * r113613;
double r113634 = r113621 ? r113631 : r113633;
double r113635 = r113610 ? r113619 : r113634;
return r113635;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -3.0094639461563603e+149Initial program 62.1
Taylor expanded around -inf 2.1
if -3.0094639461563603e+149 < b < 9.390367471089922e-69Initial program 12.6
rmApplied associate-/r*12.6
if 9.390367471089922e-69 < b Initial program 53.5
Taylor expanded around inf 8.7
Final simplification9.9
herbie shell --seed 2020018 +o rules:numerics
(FPCore (a b c)
:name "Cubic critical"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))