\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 0.4445338611362734115850514626799849793315:\\
\;\;\;\;\frac{\frac{b \cdot b - \mathsf{fma}\left(b, b, \left(3 \cdot a\right) \cdot c\right)}{b + \sqrt{b \cdot b - \left(3 \cdot a\right) \cdot c}}}{3 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;-0.5 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r86224 = b;
double r86225 = -r86224;
double r86226 = r86224 * r86224;
double r86227 = 3.0;
double r86228 = a;
double r86229 = r86227 * r86228;
double r86230 = c;
double r86231 = r86229 * r86230;
double r86232 = r86226 - r86231;
double r86233 = sqrt(r86232);
double r86234 = r86225 + r86233;
double r86235 = r86234 / r86229;
return r86235;
}
double f(double a, double b, double c) {
double r86236 = b;
double r86237 = 0.4445338611362734;
bool r86238 = r86236 <= r86237;
double r86239 = r86236 * r86236;
double r86240 = 3.0;
double r86241 = a;
double r86242 = r86240 * r86241;
double r86243 = c;
double r86244 = r86242 * r86243;
double r86245 = fma(r86236, r86236, r86244);
double r86246 = r86239 - r86245;
double r86247 = r86239 - r86244;
double r86248 = sqrt(r86247);
double r86249 = r86236 + r86248;
double r86250 = r86246 / r86249;
double r86251 = r86250 / r86242;
double r86252 = -0.5;
double r86253 = r86243 / r86236;
double r86254 = r86252 * r86253;
double r86255 = r86238 ? r86251 : r86254;
return r86255;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 0.4445338611362734Initial program 23.1
Simplified23.1
rmApplied flip--23.1
Simplified22.4
Simplified22.4
if 0.4445338611362734 < b Initial program 47.2
Simplified47.2
Taylor expanded around inf 9.6
Final simplification11.5
herbie shell --seed 2019323 +o rules:numerics
(FPCore (a b c)
:name "Cubic critical, medium range"
:precision binary64
:pre (and (< 1.11022e-16 a 9.0072e+15) (< 1.11022e-16 b 9.0072e+15) (< 1.11022e-16 c 9.0072e+15))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))