\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 -7.880762978310279727300808027314765515261 \cdot 10^{133}:\\
\;\;\;\;0.5 \cdot \frac{c}{b} - 0.6666666666666666296592325124947819858789 \cdot \frac{b}{a}\\
\mathbf{elif}\;b \le 1.64003611222649012035491681599105610175 \cdot 10^{-83}:\\
\;\;\;\;\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 r90733 = b;
double r90734 = -r90733;
double r90735 = r90733 * r90733;
double r90736 = 3.0;
double r90737 = a;
double r90738 = r90736 * r90737;
double r90739 = c;
double r90740 = r90738 * r90739;
double r90741 = r90735 - r90740;
double r90742 = sqrt(r90741);
double r90743 = r90734 + r90742;
double r90744 = r90743 / r90738;
return r90744;
}
double f(double a, double b, double c) {
double r90745 = b;
double r90746 = -7.88076297831028e+133;
bool r90747 = r90745 <= r90746;
double r90748 = 0.5;
double r90749 = c;
double r90750 = r90749 / r90745;
double r90751 = r90748 * r90750;
double r90752 = 0.6666666666666666;
double r90753 = a;
double r90754 = r90745 / r90753;
double r90755 = r90752 * r90754;
double r90756 = r90751 - r90755;
double r90757 = 1.6400361122264901e-83;
bool r90758 = r90745 <= r90757;
double r90759 = -r90745;
double r90760 = r90745 * r90745;
double r90761 = 3.0;
double r90762 = r90761 * r90753;
double r90763 = r90762 * r90749;
double r90764 = r90760 - r90763;
double r90765 = sqrt(r90764);
double r90766 = r90759 + r90765;
double r90767 = r90766 / r90761;
double r90768 = r90767 / r90753;
double r90769 = -0.5;
double r90770 = r90769 * r90750;
double r90771 = r90758 ? r90768 : r90770;
double r90772 = r90747 ? r90756 : r90771;
return r90772;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -7.88076297831028e+133Initial program 56.1
Taylor expanded around -inf 3.0
if -7.88076297831028e+133 < b < 1.6400361122264901e-83Initial program 12.5
rmApplied associate-/r*12.5
if 1.6400361122264901e-83 < b Initial program 53.1
Taylor expanded around inf 9.2
Final simplification10.0
herbie shell --seed 2019362
(FPCore (a b c)
:name "Cubic critical"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))