\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\begin{array}{l}
\mathbf{if}\;b \le 1685.6454217574617:\\
\;\;\;\;\frac{\frac{\frac{\left(b \cdot b + \left(c \cdot a\right) \cdot -4\right) \cdot \sqrt{b \cdot b + \left(c \cdot a\right) \cdot -4} - \left(b \cdot b\right) \cdot b}{\left(b + \sqrt{b \cdot b + \left(c \cdot a\right) \cdot -4}\right) \cdot \sqrt{b \cdot b + \left(c \cdot a\right) \cdot -4} + b \cdot b}}{a}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{-2 \cdot \frac{c}{b}}{2}\\
\end{array}double f(double a, double b, double c) {
double r1116728 = b;
double r1116729 = -r1116728;
double r1116730 = r1116728 * r1116728;
double r1116731 = 4.0;
double r1116732 = a;
double r1116733 = r1116731 * r1116732;
double r1116734 = c;
double r1116735 = r1116733 * r1116734;
double r1116736 = r1116730 - r1116735;
double r1116737 = sqrt(r1116736);
double r1116738 = r1116729 + r1116737;
double r1116739 = 2.0;
double r1116740 = r1116739 * r1116732;
double r1116741 = r1116738 / r1116740;
return r1116741;
}
double f(double a, double b, double c) {
double r1116742 = b;
double r1116743 = 1685.6454217574617;
bool r1116744 = r1116742 <= r1116743;
double r1116745 = r1116742 * r1116742;
double r1116746 = c;
double r1116747 = a;
double r1116748 = r1116746 * r1116747;
double r1116749 = -4.0;
double r1116750 = r1116748 * r1116749;
double r1116751 = r1116745 + r1116750;
double r1116752 = sqrt(r1116751);
double r1116753 = r1116751 * r1116752;
double r1116754 = r1116745 * r1116742;
double r1116755 = r1116753 - r1116754;
double r1116756 = r1116742 + r1116752;
double r1116757 = r1116756 * r1116752;
double r1116758 = r1116757 + r1116745;
double r1116759 = r1116755 / r1116758;
double r1116760 = r1116759 / r1116747;
double r1116761 = 2.0;
double r1116762 = r1116760 / r1116761;
double r1116763 = -2.0;
double r1116764 = r1116746 / r1116742;
double r1116765 = r1116763 * r1116764;
double r1116766 = r1116765 / r1116761;
double r1116767 = r1116744 ? r1116762 : r1116766;
return r1116767;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < 1685.6454217574617Initial program 17.4
Simplified17.4
rmApplied flip3--17.5
Simplified16.8
Simplified16.8
if 1685.6454217574617 < b Initial program 36.7
Simplified36.7
Taylor expanded around inf 15.9
Final simplification16.3
herbie shell --seed 2019149
(FPCore (a b c)
:name "Quadratic roots, narrow range"
:pre (and (< 1.0536712127723509e-08 a 94906265.62425156) (< 1.0536712127723509e-08 b 94906265.62425156) (< 1.0536712127723509e-08 c 94906265.62425156))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))