\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 30.99746698421735402462218189612030982971:\\
\;\;\;\;\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 r65777 = b;
double r65778 = -r65777;
double r65779 = r65777 * r65777;
double r65780 = 3.0;
double r65781 = a;
double r65782 = r65780 * r65781;
double r65783 = c;
double r65784 = r65782 * r65783;
double r65785 = r65779 - r65784;
double r65786 = sqrt(r65785);
double r65787 = r65778 + r65786;
double r65788 = r65787 / r65782;
return r65788;
}
double f(double a, double b, double c) {
double r65789 = b;
double r65790 = 30.997466984217354;
bool r65791 = r65789 <= r65790;
double r65792 = r65789 * r65789;
double r65793 = 3.0;
double r65794 = a;
double r65795 = r65793 * r65794;
double r65796 = c;
double r65797 = r65795 * r65796;
double r65798 = fma(r65789, r65789, r65797);
double r65799 = r65792 - r65798;
double r65800 = r65792 - r65797;
double r65801 = sqrt(r65800);
double r65802 = r65789 + r65801;
double r65803 = r65799 / r65802;
double r65804 = r65803 / r65795;
double r65805 = -0.5;
double r65806 = r65796 / r65789;
double r65807 = r65805 * r65806;
double r65808 = r65791 ? r65804 : r65807;
return r65808;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 30.997466984217354Initial program 14.5
Simplified14.5
rmApplied flip--14.5
Simplified13.8
Simplified13.8
if 30.997466984217354 < b Initial program 33.6
Simplified33.6
Taylor expanded around inf 18.4
Final simplification17.2
herbie shell --seed 2019322 +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)))