\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 -4.297522851756149307625287590446857172218 \cdot 10^{130}:\\
\;\;\;\;\frac{1}{2} \cdot \left(2 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\right)\\
\mathbf{elif}\;b \le -7.499564665356541230478133000064554936556 \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 2.043334298601044940502096480059938459672 \cdot 10^{53}:\\
\;\;\;\;\frac{1}{2} \cdot \frac{4}{\frac{1 \cdot \left(\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}{c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{2} \cdot \left(-2 \cdot \frac{c}{b}\right)\\
\end{array}double f(double a, double b, double c) {
double r53694 = b;
double r53695 = -r53694;
double r53696 = r53694 * r53694;
double r53697 = 4.0;
double r53698 = a;
double r53699 = r53697 * r53698;
double r53700 = c;
double r53701 = r53699 * r53700;
double r53702 = r53696 - r53701;
double r53703 = sqrt(r53702);
double r53704 = r53695 + r53703;
double r53705 = 2.0;
double r53706 = r53705 * r53698;
double r53707 = r53704 / r53706;
return r53707;
}
double f(double a, double b, double c) {
double r53708 = b;
double r53709 = -4.2975228517561493e+130;
bool r53710 = r53708 <= r53709;
double r53711 = 1.0;
double r53712 = 2.0;
double r53713 = r53711 / r53712;
double r53714 = c;
double r53715 = r53714 / r53708;
double r53716 = a;
double r53717 = r53708 / r53716;
double r53718 = r53715 - r53717;
double r53719 = r53712 * r53718;
double r53720 = r53713 * r53719;
double r53721 = -7.499564665356541e-290;
bool r53722 = r53708 <= r53721;
double r53723 = -r53708;
double r53724 = r53708 * r53708;
double r53725 = 4.0;
double r53726 = r53725 * r53716;
double r53727 = r53726 * r53714;
double r53728 = r53724 - r53727;
double r53729 = sqrt(r53728);
double r53730 = r53723 + r53729;
double r53731 = r53712 * r53716;
double r53732 = r53711 / r53731;
double r53733 = r53730 * r53732;
double r53734 = 2.043334298601045e+53;
bool r53735 = r53708 <= r53734;
double r53736 = r53723 - r53729;
double r53737 = r53711 * r53736;
double r53738 = r53737 / r53714;
double r53739 = r53725 / r53738;
double r53740 = r53713 * r53739;
double r53741 = -2.0;
double r53742 = r53741 * r53715;
double r53743 = r53713 * r53742;
double r53744 = r53735 ? r53740 : r53743;
double r53745 = r53722 ? r53733 : r53744;
double r53746 = r53710 ? r53720 : r53745;
return r53746;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -4.2975228517561493e+130Initial program 54.6
rmApplied flip-+63.7
Simplified62.6
rmApplied *-un-lft-identity62.6
Applied *-un-lft-identity62.6
Applied times-frac62.6
Applied times-frac62.6
Simplified62.6
Simplified62.7
rmApplied associate-/l*62.7
Simplified62.4
Taylor expanded around -inf 2.8
Simplified2.8
if -4.2975228517561493e+130 < b < -7.499564665356541e-290Initial program 9.2
rmApplied div-inv9.4
if -7.499564665356541e-290 < b < 2.043334298601045e+53Initial program 29.9
rmApplied flip-+30.0
Simplified16.3
rmApplied *-un-lft-identity16.3
Applied *-un-lft-identity16.3
Applied times-frac16.3
Applied times-frac16.3
Simplified16.3
Simplified21.7
rmApplied associate-/l*21.8
Simplified9.0
if 2.043334298601045e+53 < b Initial program 57.4
rmApplied flip-+57.4
Simplified29.4
rmApplied *-un-lft-identity29.4
Applied *-un-lft-identity29.4
Applied times-frac29.4
Applied times-frac29.4
Simplified29.4
Simplified29.0
rmApplied associate-/l*29.1
Simplified26.3
Taylor expanded around inf 4.1
Final simplification7.0
herbie shell --seed 2019362
(FPCore (a b c)
:name "Quadratic roots, full range"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))