\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.2620519469386174 \cdot 10^{+154}:\\
\;\;\;\;\mathsf{fma}\left(\frac{1}{2}, \frac{c}{b}, \frac{-2}{3} \cdot \frac{b}{a}\right)\\
\mathbf{elif}\;b \le 3.7535994007355634 \cdot 10^{-122}:\\
\;\;\;\;\frac{\frac{\sqrt{\mathsf{fma}\left(b, b, \left(a \cdot -3\right) \cdot c\right)}}{3} - \frac{b}{3}}{a}\\
\mathbf{elif}\;b \le 4.020455841328689 \cdot 10^{-79}:\\
\;\;\;\;\frac{c}{b} \cdot \frac{-1}{2}\\
\mathbf{elif}\;b \le 3.5051690294214705 \cdot 10^{-69}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\frac{\sqrt{\sqrt{\mathsf{fma}\left(b, b, \left(a \cdot -3\right) \cdot c\right)}}}{\sqrt[3]{3} \cdot \sqrt[3]{3}}, \frac{\sqrt{\sqrt{\mathsf{fma}\left(b, b, \left(a \cdot -3\right) \cdot c\right)}}}{\sqrt[3]{3}}, b \cdot \frac{-1}{3}\right)}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{b} \cdot \frac{-1}{2}\\
\end{array}double f(double a, double b, double c) {
double r3560941 = b;
double r3560942 = -r3560941;
double r3560943 = r3560941 * r3560941;
double r3560944 = 3.0;
double r3560945 = a;
double r3560946 = r3560944 * r3560945;
double r3560947 = c;
double r3560948 = r3560946 * r3560947;
double r3560949 = r3560943 - r3560948;
double r3560950 = sqrt(r3560949);
double r3560951 = r3560942 + r3560950;
double r3560952 = r3560951 / r3560946;
return r3560952;
}
double f(double a, double b, double c) {
double r3560953 = b;
double r3560954 = -1.2620519469386174e+154;
bool r3560955 = r3560953 <= r3560954;
double r3560956 = 0.5;
double r3560957 = c;
double r3560958 = r3560957 / r3560953;
double r3560959 = -0.6666666666666666;
double r3560960 = a;
double r3560961 = r3560953 / r3560960;
double r3560962 = r3560959 * r3560961;
double r3560963 = fma(r3560956, r3560958, r3560962);
double r3560964 = 3.7535994007355634e-122;
bool r3560965 = r3560953 <= r3560964;
double r3560966 = -3.0;
double r3560967 = r3560960 * r3560966;
double r3560968 = r3560967 * r3560957;
double r3560969 = fma(r3560953, r3560953, r3560968);
double r3560970 = sqrt(r3560969);
double r3560971 = 3.0;
double r3560972 = r3560970 / r3560971;
double r3560973 = r3560953 / r3560971;
double r3560974 = r3560972 - r3560973;
double r3560975 = r3560974 / r3560960;
double r3560976 = 4.020455841328689e-79;
bool r3560977 = r3560953 <= r3560976;
double r3560978 = -0.5;
double r3560979 = r3560958 * r3560978;
double r3560980 = 3.5051690294214705e-69;
bool r3560981 = r3560953 <= r3560980;
double r3560982 = sqrt(r3560970);
double r3560983 = cbrt(r3560971);
double r3560984 = r3560983 * r3560983;
double r3560985 = r3560982 / r3560984;
double r3560986 = r3560982 / r3560983;
double r3560987 = -0.3333333333333333;
double r3560988 = r3560953 * r3560987;
double r3560989 = fma(r3560985, r3560986, r3560988);
double r3560990 = r3560989 / r3560960;
double r3560991 = r3560981 ? r3560990 : r3560979;
double r3560992 = r3560977 ? r3560979 : r3560991;
double r3560993 = r3560965 ? r3560975 : r3560992;
double r3560994 = r3560955 ? r3560963 : r3560993;
return r3560994;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -1.2620519469386174e+154Initial program 61.0
Taylor expanded around -inf 2.9
Simplified2.9
if -1.2620519469386174e+154 < b < 3.7535994007355634e-122Initial program 10.9
rmApplied associate-/r*10.9
Simplified10.9
rmApplied div-sub10.9
if 3.7535994007355634e-122 < b < 4.020455841328689e-79 or 3.5051690294214705e-69 < b Initial program 50.7
Taylor expanded around inf 11.3
if 4.020455841328689e-79 < b < 3.5051690294214705e-69Initial program 37.7
rmApplied associate-/r*37.6
Simplified37.6
rmApplied div-sub37.6
rmApplied add-cube-cbrt37.6
Applied add-sqr-sqrt37.6
Applied sqrt-prod38.0
Applied times-frac37.8
Applied fma-neg37.8
Simplified37.8
Final simplification10.5
herbie shell --seed 2019158 +o rules:numerics
(FPCore (a b c)
:name "Cubic critical"
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))