\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 6.961131476357276728544534868600712762543 \cdot 10^{-8}:\\
\;\;\;\;\frac{\frac{\left(b \cdot b - c \cdot \left(a \cdot 3\right)\right) \cdot \sqrt{b \cdot b - c \cdot \left(a \cdot 3\right)} - \left(b \cdot b\right) \cdot b}{\left(b \cdot b - c \cdot \left(a \cdot 3\right)\right) + \left(b \cdot \sqrt{b \cdot b - c \cdot \left(a \cdot 3\right)} + b \cdot b\right)}}{a \cdot 3}\\
\mathbf{else}:\\
\;\;\;\;-0.5 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r2806073 = b;
double r2806074 = -r2806073;
double r2806075 = r2806073 * r2806073;
double r2806076 = 3.0;
double r2806077 = a;
double r2806078 = r2806076 * r2806077;
double r2806079 = c;
double r2806080 = r2806078 * r2806079;
double r2806081 = r2806075 - r2806080;
double r2806082 = sqrt(r2806081);
double r2806083 = r2806074 + r2806082;
double r2806084 = r2806083 / r2806078;
return r2806084;
}
double f(double a, double b, double c) {
double r2806085 = b;
double r2806086 = 6.961131476357277e-08;
bool r2806087 = r2806085 <= r2806086;
double r2806088 = r2806085 * r2806085;
double r2806089 = c;
double r2806090 = a;
double r2806091 = 3.0;
double r2806092 = r2806090 * r2806091;
double r2806093 = r2806089 * r2806092;
double r2806094 = r2806088 - r2806093;
double r2806095 = sqrt(r2806094);
double r2806096 = r2806094 * r2806095;
double r2806097 = r2806088 * r2806085;
double r2806098 = r2806096 - r2806097;
double r2806099 = r2806085 * r2806095;
double r2806100 = r2806099 + r2806088;
double r2806101 = r2806094 + r2806100;
double r2806102 = r2806098 / r2806101;
double r2806103 = r2806102 / r2806092;
double r2806104 = -0.5;
double r2806105 = r2806089 / r2806085;
double r2806106 = r2806104 * r2806105;
double r2806107 = r2806087 ? r2806103 : r2806106;
return r2806107;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < 6.961131476357277e-08Initial program 12.8
Simplified12.8
rmApplied flip3--13.0
Simplified12.5
Simplified12.5
if 6.961131476357277e-08 < b Initial program 44.8
Simplified44.8
Taylor expanded around inf 11.3
Final simplification11.4
herbie shell --seed 2019172
(FPCore (a b c)
:name "Cubic critical, medium range"
:pre (and (< 1.1102230246251565e-16 a 9007199254740992.0) (< 1.1102230246251565e-16 b 9007199254740992.0) (< 1.1102230246251565e-16 c 9007199254740992.0))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3.0 a) c)))) (* 3.0 a)))