\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 r5956117 = b;
double r5956118 = -r5956117;
double r5956119 = r5956117 * r5956117;
double r5956120 = 3.0;
double r5956121 = a;
double r5956122 = r5956120 * r5956121;
double r5956123 = c;
double r5956124 = r5956122 * r5956123;
double r5956125 = r5956119 - r5956124;
double r5956126 = sqrt(r5956125);
double r5956127 = r5956118 + r5956126;
double r5956128 = r5956127 / r5956122;
return r5956128;
}
double f(double a, double b, double c) {
double r5956129 = b;
double r5956130 = -2.874603183983119e+152;
bool r5956131 = r5956129 <= r5956130;
double r5956132 = 0.5;
double r5956133 = c;
double r5956134 = r5956133 / r5956129;
double r5956135 = r5956132 * r5956134;
double r5956136 = a;
double r5956137 = r5956129 / r5956136;
double r5956138 = 0.6666666666666666;
double r5956139 = r5956137 * r5956138;
double r5956140 = r5956135 - r5956139;
double r5956141 = 1.9030999523937384e-67;
bool r5956142 = r5956129 <= r5956141;
double r5956143 = r5956129 * r5956129;
double r5956144 = 3.0;
double r5956145 = r5956144 * r5956136;
double r5956146 = r5956145 * r5956133;
double r5956147 = r5956143 - r5956146;
double r5956148 = sqrt(r5956147);
double r5956149 = r5956148 - r5956129;
double r5956150 = r5956149 / r5956144;
double r5956151 = r5956150 / r5956136;
double r5956152 = -0.5;
double r5956153 = r5956152 * r5956134;
double r5956154 = r5956142 ? r5956151 : r5956153;
double r5956155 = r5956131 ? r5956140 : r5956154;
return r5956155;
}



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)))