\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 -227369802444031.66:\\
\;\;\;\;\frac{\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 2}{2}\\
\mathbf{elif}\;b \le 2.0617732603635578 \cdot 10^{-61}:\\
\;\;\;\;\frac{\frac{1}{a} \cdot \sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)} + b \cdot \frac{-1}{a}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{c}{b} \cdot -2}{2}\\
\end{array}double f(double a, double b, double c) {
double r1258608 = b;
double r1258609 = -r1258608;
double r1258610 = r1258608 * r1258608;
double r1258611 = 4.0;
double r1258612 = a;
double r1258613 = r1258611 * r1258612;
double r1258614 = c;
double r1258615 = r1258613 * r1258614;
double r1258616 = r1258610 - r1258615;
double r1258617 = sqrt(r1258616);
double r1258618 = r1258609 + r1258617;
double r1258619 = 2.0;
double r1258620 = r1258619 * r1258612;
double r1258621 = r1258618 / r1258620;
return r1258621;
}
double f(double a, double b, double c) {
double r1258622 = b;
double r1258623 = -227369802444031.66;
bool r1258624 = r1258622 <= r1258623;
double r1258625 = c;
double r1258626 = r1258625 / r1258622;
double r1258627 = a;
double r1258628 = r1258622 / r1258627;
double r1258629 = r1258626 - r1258628;
double r1258630 = 2.0;
double r1258631 = r1258629 * r1258630;
double r1258632 = r1258631 / r1258630;
double r1258633 = 2.0617732603635578e-61;
bool r1258634 = r1258622 <= r1258633;
double r1258635 = 1.0;
double r1258636 = r1258635 / r1258627;
double r1258637 = r1258622 * r1258622;
double r1258638 = 4.0;
double r1258639 = r1258625 * r1258627;
double r1258640 = r1258638 * r1258639;
double r1258641 = r1258637 - r1258640;
double r1258642 = sqrt(r1258641);
double r1258643 = r1258636 * r1258642;
double r1258644 = -1.0;
double r1258645 = r1258644 / r1258627;
double r1258646 = r1258622 * r1258645;
double r1258647 = r1258643 + r1258646;
double r1258648 = r1258647 / r1258630;
double r1258649 = -2.0;
double r1258650 = r1258626 * r1258649;
double r1258651 = r1258650 / r1258630;
double r1258652 = r1258634 ? r1258648 : r1258651;
double r1258653 = r1258624 ? r1258632 : r1258652;
return r1258653;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -227369802444031.66Initial program 32.9
Simplified32.9
rmApplied div-inv33.1
Taylor expanded around -inf 6.8
Simplified6.8
if -227369802444031.66 < b < 2.0617732603635578e-61Initial program 14.9
Simplified15.0
rmApplied div-inv15.0
rmApplied *-commutative15.0
rmApplied sub-neg15.0
Applied distribute-rgt-in15.0
if 2.0617732603635578e-61 < b Initial program 52.8
Simplified52.8
Taylor expanded around inf 8.3
Final simplification10.5
herbie shell --seed 2019146
(FPCore (a b c)
:name "Quadratic roots, full range"
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))