\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 -1.367002129773412099713675796535889049973 \cdot 10^{154}:\\
\;\;\;\;\frac{\left(1.5 \cdot \frac{a \cdot c}{b} - b\right) - b}{3 \cdot a}\\
\mathbf{elif}\;b \le 5.828767493902222235048735741826480335074 \cdot 10^{-61}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} - b}{3 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{-1.5 \cdot \frac{a \cdot c}{b}}{3 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r76671 = b;
double r76672 = -r76671;
double r76673 = r76671 * r76671;
double r76674 = 3.0;
double r76675 = a;
double r76676 = r76674 * r76675;
double r76677 = c;
double r76678 = r76676 * r76677;
double r76679 = r76673 - r76678;
double r76680 = sqrt(r76679);
double r76681 = r76672 + r76680;
double r76682 = r76681 / r76676;
return r76682;
}
double f(double a, double b, double c) {
double r76683 = b;
double r76684 = -1.367002129773412e+154;
bool r76685 = r76683 <= r76684;
double r76686 = 1.5;
double r76687 = a;
double r76688 = c;
double r76689 = r76687 * r76688;
double r76690 = r76689 / r76683;
double r76691 = r76686 * r76690;
double r76692 = r76691 - r76683;
double r76693 = r76692 - r76683;
double r76694 = 3.0;
double r76695 = r76694 * r76687;
double r76696 = r76693 / r76695;
double r76697 = 5.828767493902222e-61;
bool r76698 = r76683 <= r76697;
double r76699 = r76683 * r76683;
double r76700 = r76695 * r76688;
double r76701 = r76699 - r76700;
double r76702 = sqrt(r76701);
double r76703 = r76702 - r76683;
double r76704 = r76703 / r76695;
double r76705 = -1.5;
double r76706 = r76705 * r76690;
double r76707 = r76706 / r76695;
double r76708 = r76698 ? r76704 : r76707;
double r76709 = r76685 ? r76696 : r76708;
return r76709;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.367002129773412e+154Initial program 64.0
Simplified64.0
Taylor expanded around -inf 11.7
if -1.367002129773412e+154 < b < 5.828767493902222e-61Initial program 13.3
Simplified13.3
if 5.828767493902222e-61 < b Initial program 53.8
Simplified53.8
Taylor expanded around inf 19.1
Final simplification15.4
herbie shell --seed 2019323 +o rules:numerics
(FPCore (a b c)
:name "Cubic critical"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))