\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 4647.006136748878816433716565370559692383:\\
\;\;\;\;\frac{\frac{\mathsf{fma}\left(b, b, -\left(b \cdot b - \left(3 \cdot a\right) \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 r96743 = b;
double r96744 = -r96743;
double r96745 = r96743 * r96743;
double r96746 = 3.0;
double r96747 = a;
double r96748 = r96746 * r96747;
double r96749 = c;
double r96750 = r96748 * r96749;
double r96751 = r96745 - r96750;
double r96752 = sqrt(r96751);
double r96753 = r96744 + r96752;
double r96754 = r96753 / r96748;
return r96754;
}
double f(double a, double b, double c) {
double r96755 = b;
double r96756 = 4647.006136748879;
bool r96757 = r96755 <= r96756;
double r96758 = r96755 * r96755;
double r96759 = 3.0;
double r96760 = a;
double r96761 = r96759 * r96760;
double r96762 = c;
double r96763 = r96761 * r96762;
double r96764 = r96758 - r96763;
double r96765 = -r96764;
double r96766 = fma(r96755, r96755, r96765);
double r96767 = -r96755;
double r96768 = sqrt(r96764);
double r96769 = r96767 - r96768;
double r96770 = r96766 / r96769;
double r96771 = r96770 / r96761;
double r96772 = -0.5;
double r96773 = r96762 / r96755;
double r96774 = r96772 * r96773;
double r96775 = r96757 ? r96771 : r96774;
return r96775;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 4647.006136748879Initial program 18.7
rmApplied flip-+18.7
Simplified17.9
if 4647.006136748879 < b Initial program 37.7
Taylor expanded around inf 15.2
Final simplification16.5
herbie shell --seed 2019356 +o rules:numerics
(FPCore (a b c)
:name "Cubic critical, narrow range"
:precision binary64
:pre (and (< 1.0536712127723509e-08 a 94906265.62425156) (< 1.0536712127723509e-08 b 94906265.62425156) (< 1.0536712127723509e-08 c 94906265.62425156))
(/ (+ (- b) (sqrt (- (* b b) (* (* 3 a) c)))) (* 3 a)))