\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.0357101210953405454:\\
\;\;\;\;\frac{\frac{b \cdot b - \left(b \cdot b - 3 \cdot \left(a \cdot c\right)\right)}{\left(-b\right) - \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 r72588 = b;
double r72589 = -r72588;
double r72590 = r72588 * r72588;
double r72591 = 3.0;
double r72592 = a;
double r72593 = r72591 * r72592;
double r72594 = c;
double r72595 = r72593 * r72594;
double r72596 = r72590 - r72595;
double r72597 = sqrt(r72596);
double r72598 = r72589 + r72597;
double r72599 = r72598 / r72593;
return r72599;
}
double f(double a, double b, double c) {
double r72600 = b;
double r72601 = 0.035710121095340545;
bool r72602 = r72600 <= r72601;
double r72603 = r72600 * r72600;
double r72604 = 3.0;
double r72605 = a;
double r72606 = c;
double r72607 = r72605 * r72606;
double r72608 = r72604 * r72607;
double r72609 = r72603 - r72608;
double r72610 = r72603 - r72609;
double r72611 = -r72600;
double r72612 = r72604 * r72605;
double r72613 = r72612 * r72606;
double r72614 = r72603 - r72613;
double r72615 = sqrt(r72614);
double r72616 = r72611 - r72615;
double r72617 = r72610 / r72616;
double r72618 = r72617 / r72612;
double r72619 = -0.5;
double r72620 = r72606 / r72600;
double r72621 = r72619 * r72620;
double r72622 = r72602 ? r72618 : r72621;
return r72622;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < 0.035710121095340545Initial program 21.3
rmApplied flip-+21.2
Simplified20.2
if 0.035710121095340545 < b Initial program 47.1
Taylor expanded around inf 9.6
Final simplification10.8
herbie shell --seed 2019195
(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)))