\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 904.955392750566375:\\
\;\;\;\;\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 r22095 = b;
double r22096 = -r22095;
double r22097 = r22095 * r22095;
double r22098 = 4.0;
double r22099 = a;
double r22100 = r22098 * r22099;
double r22101 = c;
double r22102 = r22100 * r22101;
double r22103 = r22097 - r22102;
double r22104 = sqrt(r22103);
double r22105 = r22096 + r22104;
double r22106 = 2.0;
double r22107 = r22106 * r22099;
double r22108 = r22105 / r22107;
return r22108;
}
double f(double a, double b, double c) {
double r22109 = b;
double r22110 = 904.9553927505664;
bool r22111 = r22109 <= r22110;
double r22112 = 2.0;
double r22113 = pow(r22109, r22112);
double r22114 = 4.0;
double r22115 = a;
double r22116 = c;
double r22117 = r22115 * r22116;
double r22118 = r22114 * r22117;
double r22119 = r22113 - r22118;
double r22120 = r22119 - r22113;
double r22121 = r22109 * r22109;
double r22122 = r22114 * r22115;
double r22123 = r22122 * r22116;
double r22124 = r22121 - r22123;
double r22125 = sqrt(r22124);
double r22126 = r22125 + r22109;
double r22127 = r22120 / r22126;
double r22128 = 2.0;
double r22129 = r22127 / r22128;
double r22130 = r22129 / r22115;
double r22131 = -1.0;
double r22132 = r22116 / r22109;
double r22133 = r22131 * r22132;
double r22134 = r22111 ? r22130 : r22133;
return r22134;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < 904.9553927505664Initial program 17.1
Simplified17.1
rmApplied flip--17.1
Simplified16.0
if 904.9553927505664 < b Initial program 36.0
Simplified36.0
Taylor expanded around inf 16.5
Final simplification16.3
herbie shell --seed 2020042
(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)))