\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 17.714642954298647:\\
\;\;\;\;\frac{\frac{\frac{\left({b}^{2} - 4 \cdot \left(a \cdot c\right)\right) - {b}^{2}}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + b}}{2}}{a}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r24795 = b;
double r24796 = -r24795;
double r24797 = r24795 * r24795;
double r24798 = 4.0;
double r24799 = a;
double r24800 = r24798 * r24799;
double r24801 = c;
double r24802 = r24800 * r24801;
double r24803 = r24797 - r24802;
double r24804 = sqrt(r24803);
double r24805 = r24796 + r24804;
double r24806 = 2.0;
double r24807 = r24806 * r24799;
double r24808 = r24805 / r24807;
return r24808;
}
double f(double a, double b, double c) {
double r24809 = b;
double r24810 = 17.714642954298647;
bool r24811 = r24809 <= r24810;
double r24812 = 2.0;
double r24813 = pow(r24809, r24812);
double r24814 = 4.0;
double r24815 = a;
double r24816 = c;
double r24817 = r24815 * r24816;
double r24818 = r24814 * r24817;
double r24819 = r24813 - r24818;
double r24820 = r24819 - r24813;
double r24821 = r24809 * r24809;
double r24822 = r24814 * r24815;
double r24823 = r24822 * r24816;
double r24824 = r24821 - r24823;
double r24825 = sqrt(r24824);
double r24826 = r24825 + r24809;
double r24827 = r24820 / r24826;
double r24828 = 2.0;
double r24829 = r24827 / r24828;
double r24830 = r24829 / r24815;
double r24831 = -1.0;
double r24832 = r24816 / r24809;
double r24833 = r24831 * r24832;
double r24834 = r24811 ? r24830 : r24833;
return r24834;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < 17.714642954298647Initial program 13.9
Simplified13.9
rmApplied flip--13.9
Simplified12.9
if 17.714642954298647 < b Initial program 33.3
Simplified33.3
Taylor expanded around inf 18.6
Final simplification17.2
herbie shell --seed 2020046
(FPCore (a b c)
:name "Quadratic roots, 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) (* (* 4 a) c)))) (* 2 a)))