\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.014244826613571458:\\
\;\;\;\;\frac{\frac{\frac{\left(\left(a \cdot -4\right) \cdot c + b \cdot b\right) \cdot \sqrt{\left(a \cdot -4\right) \cdot c + b \cdot b} - b \cdot \left(b \cdot b\right)}{\left(b \cdot b + \left(\left(a \cdot -4\right) \cdot c + b \cdot b\right)\right) + b \cdot \sqrt{\left(a \cdot -4\right) \cdot c + b \cdot b}}}{a}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{-2 \cdot \frac{c}{b}}{2}\\
\end{array}double f(double a, double b, double c) {
double r997616 = b;
double r997617 = -r997616;
double r997618 = r997616 * r997616;
double r997619 = 4.0;
double r997620 = a;
double r997621 = r997619 * r997620;
double r997622 = c;
double r997623 = r997621 * r997622;
double r997624 = r997618 - r997623;
double r997625 = sqrt(r997624);
double r997626 = r997617 + r997625;
double r997627 = 2.0;
double r997628 = r997627 * r997620;
double r997629 = r997626 / r997628;
return r997629;
}
double f(double a, double b, double c) {
double r997630 = b;
double r997631 = 0.014244826613571458;
bool r997632 = r997630 <= r997631;
double r997633 = a;
double r997634 = -4.0;
double r997635 = r997633 * r997634;
double r997636 = c;
double r997637 = r997635 * r997636;
double r997638 = r997630 * r997630;
double r997639 = r997637 + r997638;
double r997640 = sqrt(r997639);
double r997641 = r997639 * r997640;
double r997642 = r997630 * r997638;
double r997643 = r997641 - r997642;
double r997644 = r997638 + r997639;
double r997645 = r997630 * r997640;
double r997646 = r997644 + r997645;
double r997647 = r997643 / r997646;
double r997648 = r997647 / r997633;
double r997649 = 2.0;
double r997650 = r997648 / r997649;
double r997651 = -2.0;
double r997652 = r997636 / r997630;
double r997653 = r997651 * r997652;
double r997654 = r997653 / r997649;
double r997655 = r997632 ? r997650 : r997654;
return r997655;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < 0.014244826613571458Initial program 21.9
Simplified21.9
rmApplied flip3--22.0
Simplified21.4
Simplified21.3
if 0.014244826613571458 < b Initial program 46.6
Simplified46.6
Taylor expanded around inf 10.0
Final simplification11.2
herbie shell --seed 2019143
(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 a) c)))) (* 2 a)))