\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 -8.55528137777049654 \cdot 10^{140}:\\
\;\;\;\;0.5 \cdot \frac{c}{b} - 0.66666666666666663 \cdot \frac{b}{a}\\
\mathbf{elif}\;b \le 11181767625882.1309:\\
\;\;\;\;\frac{1}{\frac{3 \cdot a}{\sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c} - b}}\\
\mathbf{else}:\\
\;\;\;\;-0.5 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r161866 = b;
double r161867 = -r161866;
double r161868 = r161866 * r161866;
double r161869 = 3.0;
double r161870 = a;
double r161871 = r161869 * r161870;
double r161872 = c;
double r161873 = r161871 * r161872;
double r161874 = r161868 - r161873;
double r161875 = sqrt(r161874);
double r161876 = r161867 + r161875;
double r161877 = r161876 / r161871;
return r161877;
}
double f(double a, double b, double c) {
double r161878 = b;
double r161879 = -8.555281377770497e+140;
bool r161880 = r161878 <= r161879;
double r161881 = 0.5;
double r161882 = c;
double r161883 = r161882 / r161878;
double r161884 = r161881 * r161883;
double r161885 = 0.6666666666666666;
double r161886 = a;
double r161887 = r161878 / r161886;
double r161888 = r161885 * r161887;
double r161889 = r161884 - r161888;
double r161890 = 11181767625882.13;
bool r161891 = r161878 <= r161890;
double r161892 = 1.0;
double r161893 = 3.0;
double r161894 = r161893 * r161886;
double r161895 = r161878 * r161878;
double r161896 = r161894 * r161882;
double r161897 = r161895 - r161896;
double r161898 = sqrt(r161897);
double r161899 = r161898 - r161878;
double r161900 = r161894 / r161899;
double r161901 = r161892 / r161900;
double r161902 = -0.5;
double r161903 = r161902 * r161883;
double r161904 = r161891 ? r161901 : r161903;
double r161905 = r161880 ? r161889 : r161904;
return r161905;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -8.555281377770497e+140Initial program 58.5
Taylor expanded around -inf 2.8
if -8.555281377770497e+140 < b < 11181767625882.13Initial program 15.8
rmApplied clear-num15.9
Simplified15.9
if 11181767625882.13 < b Initial program 56.0
Taylor expanded around inf 5.0
Final simplification10.7
herbie shell --seed 2020046 +o rules:numerics
(FPCore (a b c)
:name "Cubic critical"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))