\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 -1.0027271082217074 \cdot 10^{+110}:\\
\;\;\;\;\frac{\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 2}{2}\\
\mathbf{elif}\;b \le 2.326372645943808 \cdot 10^{-74}:\\
\;\;\;\;\frac{\frac{\sqrt{\mathsf{fma}\left(c, -4 \cdot a, b \cdot b\right)} - b}{a}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{c}{b} \cdot -2}{2}\\
\end{array}double f(double a, double b, double c) {
double r719397 = b;
double r719398 = -r719397;
double r719399 = r719397 * r719397;
double r719400 = 4.0;
double r719401 = a;
double r719402 = r719400 * r719401;
double r719403 = c;
double r719404 = r719402 * r719403;
double r719405 = r719399 - r719404;
double r719406 = sqrt(r719405);
double r719407 = r719398 + r719406;
double r719408 = 2.0;
double r719409 = r719408 * r719401;
double r719410 = r719407 / r719409;
return r719410;
}
double f(double a, double b, double c) {
double r719411 = b;
double r719412 = -1.0027271082217074e+110;
bool r719413 = r719411 <= r719412;
double r719414 = c;
double r719415 = r719414 / r719411;
double r719416 = a;
double r719417 = r719411 / r719416;
double r719418 = r719415 - r719417;
double r719419 = 2.0;
double r719420 = r719418 * r719419;
double r719421 = r719420 / r719419;
double r719422 = 2.326372645943808e-74;
bool r719423 = r719411 <= r719422;
double r719424 = -4.0;
double r719425 = r719424 * r719416;
double r719426 = r719411 * r719411;
double r719427 = fma(r719414, r719425, r719426);
double r719428 = sqrt(r719427);
double r719429 = r719428 - r719411;
double r719430 = r719429 / r719416;
double r719431 = r719430 / r719419;
double r719432 = -2.0;
double r719433 = r719415 * r719432;
double r719434 = r719433 / r719419;
double r719435 = r719423 ? r719431 : r719434;
double r719436 = r719413 ? r719421 : r719435;
return r719436;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -1.0027271082217074e+110Initial program 46.7
Simplified46.7
Taylor expanded around -inf 3.6
Simplified3.6
if -1.0027271082217074e+110 < b < 2.326372645943808e-74Initial program 12.8
Simplified12.8
Taylor expanded around -inf 12.8
Simplified12.8
if 2.326372645943808e-74 < b Initial program 52.5
Simplified52.5
Taylor expanded around inf 8.8
Final simplification9.9
herbie shell --seed 2019151 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, full range"
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))