\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.569310777886352095486911207889814773134 \cdot 10^{111}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le -2.075943821136515538074933331988827259408 \cdot 10^{-290}:\\
\;\;\;\;\left(\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right) \cdot \frac{1}{2 \cdot a}\\
\mathbf{elif}\;b \le 1.447939350868406385811948663168665665979 \cdot 10^{78}:\\
\;\;\;\;\frac{\frac{\frac{\left(4 \cdot a\right) \cdot c}{a}}{2}}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r38710 = b;
double r38711 = -r38710;
double r38712 = r38710 * r38710;
double r38713 = 4.0;
double r38714 = a;
double r38715 = r38713 * r38714;
double r38716 = c;
double r38717 = r38715 * r38716;
double r38718 = r38712 - r38717;
double r38719 = sqrt(r38718);
double r38720 = r38711 + r38719;
double r38721 = 2.0;
double r38722 = r38721 * r38714;
double r38723 = r38720 / r38722;
return r38723;
}
double f(double a, double b, double c) {
double r38724 = b;
double r38725 = -1.569310777886352e+111;
bool r38726 = r38724 <= r38725;
double r38727 = 1.0;
double r38728 = c;
double r38729 = r38728 / r38724;
double r38730 = a;
double r38731 = r38724 / r38730;
double r38732 = r38729 - r38731;
double r38733 = r38727 * r38732;
double r38734 = -2.0759438211365155e-290;
bool r38735 = r38724 <= r38734;
double r38736 = -r38724;
double r38737 = r38724 * r38724;
double r38738 = 4.0;
double r38739 = r38738 * r38730;
double r38740 = r38739 * r38728;
double r38741 = r38737 - r38740;
double r38742 = sqrt(r38741);
double r38743 = r38736 + r38742;
double r38744 = 1.0;
double r38745 = 2.0;
double r38746 = r38745 * r38730;
double r38747 = r38744 / r38746;
double r38748 = r38743 * r38747;
double r38749 = 1.4479393508684064e+78;
bool r38750 = r38724 <= r38749;
double r38751 = r38740 / r38730;
double r38752 = r38751 / r38745;
double r38753 = r38736 - r38742;
double r38754 = r38752 / r38753;
double r38755 = -1.0;
double r38756 = r38755 * r38729;
double r38757 = r38750 ? r38754 : r38756;
double r38758 = r38735 ? r38748 : r38757;
double r38759 = r38726 ? r38733 : r38758;
return r38759;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.569310777886352e+111Initial program 50.4
rmApplied div-inv50.4
Taylor expanded around -inf 3.9
Simplified3.9
if -1.569310777886352e+111 < b < -2.0759438211365155e-290Initial program 8.4
rmApplied div-inv8.6
if -2.0759438211365155e-290 < b < 1.4479393508684064e+78Initial program 30.6
rmApplied div-inv30.6
rmApplied flip-+30.7
Applied associate-*l/30.8
Simplified15.8
if 1.4479393508684064e+78 < b Initial program 58.7
rmApplied div-inv58.8
Taylor expanded around inf 3.2
Final simplification8.6
herbie shell --seed 2019303 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, full range"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))