\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.06165607700969823504029634358803608389 \cdot 10^{154}:\\
\;\;\;\;\frac{\left(-b\right) + \left(1.5 \cdot \frac{a \cdot c}{b} - b\right)}{3 \cdot a}\\
\mathbf{elif}\;b \le 2.153415381666121571802343787447463758755 \cdot 10^{-275}:\\
\;\;\;\;\frac{\frac{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} - b}{3}}{a}\\
\mathbf{elif}\;b \le 5.137043888653351826447705471890965160323 \cdot 10^{134}:\\
\;\;\;\;\frac{\frac{c \cdot 3}{\sqrt[3]{\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}} \cdot \sqrt[3]{\left(-b\right) - \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}}}{\frac{3 \cdot a}{\frac{a}{\sqrt[3]{\left(-b\right) - \sqrt{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}} \cdot \sqrt{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}}}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\left(c \cdot 3\right) \cdot a}{\left(-b\right) - \left(b - 1.5 \cdot \frac{a \cdot c}{b}\right)}}{3 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r72772 = b;
double r72773 = -r72772;
double r72774 = r72772 * r72772;
double r72775 = 3.0;
double r72776 = a;
double r72777 = r72775 * r72776;
double r72778 = c;
double r72779 = r72777 * r72778;
double r72780 = r72774 - r72779;
double r72781 = sqrt(r72780);
double r72782 = r72773 + r72781;
double r72783 = r72782 / r72777;
return r72783;
}
double f(double a, double b, double c) {
double r72784 = b;
double r72785 = -1.0616560770096982e+154;
bool r72786 = r72784 <= r72785;
double r72787 = -r72784;
double r72788 = 1.5;
double r72789 = a;
double r72790 = c;
double r72791 = r72789 * r72790;
double r72792 = r72791 / r72784;
double r72793 = r72788 * r72792;
double r72794 = r72793 - r72784;
double r72795 = r72787 + r72794;
double r72796 = 3.0;
double r72797 = r72796 * r72789;
double r72798 = r72795 / r72797;
double r72799 = 2.1534153816661216e-275;
bool r72800 = r72784 <= r72799;
double r72801 = r72784 * r72784;
double r72802 = r72797 * r72790;
double r72803 = r72801 - r72802;
double r72804 = sqrt(r72803);
double r72805 = r72804 - r72784;
double r72806 = r72805 / r72796;
double r72807 = r72806 / r72789;
double r72808 = 5.137043888653352e+134;
bool r72809 = r72784 <= r72808;
double r72810 = r72790 * r72796;
double r72811 = r72787 - r72804;
double r72812 = cbrt(r72811);
double r72813 = r72812 * r72812;
double r72814 = r72810 / r72813;
double r72815 = sqrt(r72804);
double r72816 = r72815 * r72815;
double r72817 = r72787 - r72816;
double r72818 = cbrt(r72817);
double r72819 = r72789 / r72818;
double r72820 = r72797 / r72819;
double r72821 = r72814 / r72820;
double r72822 = r72810 * r72789;
double r72823 = r72784 - r72793;
double r72824 = r72787 - r72823;
double r72825 = r72822 / r72824;
double r72826 = r72825 / r72797;
double r72827 = r72809 ? r72821 : r72826;
double r72828 = r72800 ? r72807 : r72827;
double r72829 = r72786 ? r72798 : r72828;
return r72829;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.0616560770096982e+154Initial program 63.9
Taylor expanded around -inf 11.4
if -1.0616560770096982e+154 < b < 2.1534153816661216e-275Initial program 8.6
Simplified8.6
if 2.1534153816661216e-275 < b < 5.137043888653352e+134Initial program 35.3
rmApplied flip-+35.3
Simplified16.8
rmApplied add-cube-cbrt17.4
Applied times-frac15.4
Applied associate-/l*9.9
rmApplied add-sqr-sqrt9.9
Applied sqrt-prod9.9
if 5.137043888653352e+134 < b Initial program 62.2
rmApplied flip-+62.2
Simplified36.0
Taylor expanded around inf 15.3
Final simplification10.7
herbie shell --seed 2019326
(FPCore (a b c)
:name "Cubic critical"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))