\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}:\\
\;\;\;\;\mathsf{fma}\left(\frac{1}{2}, \frac{c}{b}, \frac{-2}{3} \cdot \frac{b}{a}\right)\\
\mathbf{elif}\;b \le 1.5239734618075918 \cdot 10^{-130}:\\
\;\;\;\;\frac{\frac{\sqrt{\mathsf{fma}\left(b, b, \left(a \cdot -3\right) \cdot c\right)} - b}{3}}{a}\\
\mathbf{elif}\;b \le 12112.835762088263:\\
\;\;\;\;\frac{\frac{c \cdot -3}{\sqrt{b + \sqrt{\mathsf{fma}\left(c \cdot -3, a, b \cdot b\right)}}} \cdot \frac{a}{\sqrt{b + \sqrt{\mathsf{fma}\left(c \cdot -3, a, b \cdot b\right)}}}}{\sqrt{3} \cdot a} \cdot \frac{1}{\sqrt{3}}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{b} \cdot \frac{-1}{2}\\
\end{array}double f(double a, double b, double c) {
double r3425727 = b;
double r3425728 = -r3425727;
double r3425729 = r3425727 * r3425727;
double r3425730 = 3.0;
double r3425731 = a;
double r3425732 = r3425730 * r3425731;
double r3425733 = c;
double r3425734 = r3425732 * r3425733;
double r3425735 = r3425729 - r3425734;
double r3425736 = sqrt(r3425735);
double r3425737 = r3425728 + r3425736;
double r3425738 = r3425737 / r3425732;
return r3425738;
}
double f(double a, double b, double c) {
double r3425739 = b;
double r3425740 = -2.874603183983119e+152;
bool r3425741 = r3425739 <= r3425740;
double r3425742 = 0.5;
double r3425743 = c;
double r3425744 = r3425743 / r3425739;
double r3425745 = -0.6666666666666666;
double r3425746 = a;
double r3425747 = r3425739 / r3425746;
double r3425748 = r3425745 * r3425747;
double r3425749 = fma(r3425742, r3425744, r3425748);
double r3425750 = 1.5239734618075918e-130;
bool r3425751 = r3425739 <= r3425750;
double r3425752 = -3.0;
double r3425753 = r3425746 * r3425752;
double r3425754 = r3425753 * r3425743;
double r3425755 = fma(r3425739, r3425739, r3425754);
double r3425756 = sqrt(r3425755);
double r3425757 = r3425756 - r3425739;
double r3425758 = 3.0;
double r3425759 = r3425757 / r3425758;
double r3425760 = r3425759 / r3425746;
double r3425761 = 12112.835762088263;
bool r3425762 = r3425739 <= r3425761;
double r3425763 = r3425743 * r3425752;
double r3425764 = r3425739 * r3425739;
double r3425765 = fma(r3425763, r3425746, r3425764);
double r3425766 = sqrt(r3425765);
double r3425767 = r3425739 + r3425766;
double r3425768 = sqrt(r3425767);
double r3425769 = r3425763 / r3425768;
double r3425770 = r3425746 / r3425768;
double r3425771 = r3425769 * r3425770;
double r3425772 = sqrt(r3425758);
double r3425773 = r3425772 * r3425746;
double r3425774 = r3425771 / r3425773;
double r3425775 = 1.0;
double r3425776 = r3425775 / r3425772;
double r3425777 = r3425774 * r3425776;
double r3425778 = -0.5;
double r3425779 = r3425744 * r3425778;
double r3425780 = r3425762 ? r3425777 : r3425779;
double r3425781 = r3425751 ? r3425760 : r3425780;
double r3425782 = r3425741 ? r3425749 : r3425781;
return r3425782;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -2.874603183983119e+152Initial program 60.4
Taylor expanded around -inf 2.2
Simplified2.2
if -2.874603183983119e+152 < b < 1.5239734618075918e-130Initial program 11.7
rmApplied associate-/r*11.7
Simplified11.7
if 1.5239734618075918e-130 < b < 12112.835762088263Initial program 33.3
rmApplied associate-/r*33.4
Simplified33.4
rmApplied flip--33.5
Simplified16.4
rmApplied *-un-lft-identity16.4
Applied add-sqr-sqrt16.7
Applied *-un-lft-identity16.7
Applied *-un-lft-identity16.7
Applied times-frac16.7
Applied times-frac16.8
Applied times-frac16.8
Simplified16.8
Simplified16.6
rmApplied add-sqr-sqrt16.6
Applied times-frac13.6
if 12112.835762088263 < b Initial program 54.9
Taylor expanded around inf 5.6
Final simplification8.8
herbie shell --seed 2019163 +o rules:numerics
(FPCore (a b c)
:name "Cubic critical"
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))