\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 0.03274390987930671931271930930051894392818:\\
\;\;\;\;\frac{\frac{\frac{\left(b \cdot b - 4 \cdot \left(c \cdot a\right)\right) \cdot \sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)} - \left(b \cdot b\right) \cdot b}{\mathsf{fma}\left(\sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)}, b, b \cdot b + \left(b \cdot b - 4 \cdot \left(c \cdot a\right)\right)\right)}}{2}}{a}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r2192169 = b;
double r2192170 = -r2192169;
double r2192171 = r2192169 * r2192169;
double r2192172 = 4.0;
double r2192173 = a;
double r2192174 = r2192172 * r2192173;
double r2192175 = c;
double r2192176 = r2192174 * r2192175;
double r2192177 = r2192171 - r2192176;
double r2192178 = sqrt(r2192177);
double r2192179 = r2192170 + r2192178;
double r2192180 = 2.0;
double r2192181 = r2192180 * r2192173;
double r2192182 = r2192179 / r2192181;
return r2192182;
}
double f(double a, double b, double c) {
double r2192183 = b;
double r2192184 = 0.03274390987930672;
bool r2192185 = r2192183 <= r2192184;
double r2192186 = r2192183 * r2192183;
double r2192187 = 4.0;
double r2192188 = c;
double r2192189 = a;
double r2192190 = r2192188 * r2192189;
double r2192191 = r2192187 * r2192190;
double r2192192 = r2192186 - r2192191;
double r2192193 = sqrt(r2192192);
double r2192194 = r2192192 * r2192193;
double r2192195 = r2192186 * r2192183;
double r2192196 = r2192194 - r2192195;
double r2192197 = r2192186 + r2192192;
double r2192198 = fma(r2192193, r2192183, r2192197);
double r2192199 = r2192196 / r2192198;
double r2192200 = 2.0;
double r2192201 = r2192199 / r2192200;
double r2192202 = r2192201 / r2192189;
double r2192203 = -1.0;
double r2192204 = r2192188 / r2192183;
double r2192205 = r2192203 * r2192204;
double r2192206 = r2192185 ? r2192202 : r2192205;
return r2192206;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 0.03274390987930672Initial program 22.5
Simplified22.5
rmApplied flip3--22.5
Simplified21.9
Simplified21.9
if 0.03274390987930672 < b Initial program 47.0
Simplified47.0
Taylor expanded around inf 9.6
Final simplification11.1
herbie shell --seed 2019170 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, medium range"
:pre (and (< 1.1102230246251565e-16 a 9007199254740992.0) (< 1.1102230246251565e-16 b 9007199254740992.0) (< 1.1102230246251565e-16 c 9007199254740992.0))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)))