\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 83.70631561304585:\\
\;\;\;\;\frac{\frac{\frac{\sqrt{\mathsf{fma}\left(c \cdot -4, a, b \cdot b\right)} \cdot \mathsf{fma}\left(c \cdot -4, a, b \cdot b\right) - \left(b \cdot b\right) \cdot b}{\mathsf{fma}\left(b, \sqrt{\mathsf{fma}\left(c \cdot -4, a, b \cdot b\right)}, b \cdot b + \mathsf{fma}\left(c \cdot -4, a, b \cdot b\right)\right)}}{a}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{-2 \cdot \frac{c}{b}}{2}\\
\end{array}double f(double a, double b, double c) {
double r608201 = b;
double r608202 = -r608201;
double r608203 = r608201 * r608201;
double r608204 = 4.0;
double r608205 = a;
double r608206 = r608204 * r608205;
double r608207 = c;
double r608208 = r608206 * r608207;
double r608209 = r608203 - r608208;
double r608210 = sqrt(r608209);
double r608211 = r608202 + r608210;
double r608212 = 2.0;
double r608213 = r608212 * r608205;
double r608214 = r608211 / r608213;
return r608214;
}
double f(double a, double b, double c) {
double r608215 = b;
double r608216 = 83.70631561304585;
bool r608217 = r608215 <= r608216;
double r608218 = c;
double r608219 = -4.0;
double r608220 = r608218 * r608219;
double r608221 = a;
double r608222 = r608215 * r608215;
double r608223 = fma(r608220, r608221, r608222);
double r608224 = sqrt(r608223);
double r608225 = r608224 * r608223;
double r608226 = r608222 * r608215;
double r608227 = r608225 - r608226;
double r608228 = r608222 + r608223;
double r608229 = fma(r608215, r608224, r608228);
double r608230 = r608227 / r608229;
double r608231 = r608230 / r608221;
double r608232 = 2.0;
double r608233 = r608231 / r608232;
double r608234 = -2.0;
double r608235 = r608218 / r608215;
double r608236 = r608234 * r608235;
double r608237 = r608236 / r608232;
double r608238 = r608217 ? r608233 : r608237;
return r608238;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 83.70631561304585Initial program 15.5
Simplified15.4
rmApplied flip3--15.5
Simplified14.9
Simplified14.9
if 83.70631561304585 < b Initial program 33.9
Simplified33.8
Taylor expanded around inf 18.1
Final simplification17.2
herbie shell --seed 2019155 +o rules:numerics
(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)))