\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 r3889649 = b;
double r3889650 = -r3889649;
double r3889651 = r3889649 * r3889649;
double r3889652 = 3.0;
double r3889653 = a;
double r3889654 = r3889652 * r3889653;
double r3889655 = c;
double r3889656 = r3889654 * r3889655;
double r3889657 = r3889651 - r3889656;
double r3889658 = sqrt(r3889657);
double r3889659 = r3889650 + r3889658;
double r3889660 = r3889659 / r3889654;
return r3889660;
}
double f(double a, double b, double c) {
double r3889661 = b;
double r3889662 = -2.874603183983119e+152;
bool r3889663 = r3889661 <= r3889662;
double r3889664 = 0.5;
double r3889665 = c;
double r3889666 = r3889665 / r3889661;
double r3889667 = -0.6666666666666666;
double r3889668 = a;
double r3889669 = r3889661 / r3889668;
double r3889670 = r3889667 * r3889669;
double r3889671 = fma(r3889664, r3889666, r3889670);
double r3889672 = 1.5239734618075918e-130;
bool r3889673 = r3889661 <= r3889672;
double r3889674 = -3.0;
double r3889675 = r3889668 * r3889674;
double r3889676 = r3889675 * r3889665;
double r3889677 = fma(r3889661, r3889661, r3889676);
double r3889678 = sqrt(r3889677);
double r3889679 = r3889678 - r3889661;
double r3889680 = 3.0;
double r3889681 = r3889679 / r3889680;
double r3889682 = r3889681 / r3889668;
double r3889683 = 12112.835762088263;
bool r3889684 = r3889661 <= r3889683;
double r3889685 = r3889665 * r3889674;
double r3889686 = r3889661 * r3889661;
double r3889687 = fma(r3889685, r3889668, r3889686);
double r3889688 = sqrt(r3889687);
double r3889689 = r3889661 + r3889688;
double r3889690 = sqrt(r3889689);
double r3889691 = r3889685 / r3889690;
double r3889692 = r3889668 / r3889690;
double r3889693 = r3889691 * r3889692;
double r3889694 = sqrt(r3889680);
double r3889695 = r3889694 * r3889668;
double r3889696 = r3889693 / r3889695;
double r3889697 = 1.0;
double r3889698 = r3889697 / r3889694;
double r3889699 = r3889696 * r3889698;
double r3889700 = -0.5;
double r3889701 = r3889666 * r3889700;
double r3889702 = r3889684 ? r3889699 : r3889701;
double r3889703 = r3889673 ? r3889682 : r3889702;
double r3889704 = r3889663 ? r3889671 : r3889703;
return r3889704;
}



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