\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\end{array}\begin{array}{l}
\mathbf{if}\;b \le -2.87308952039439872 \cdot 10^{136}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 1.28779386821729373 \cdot 10^{92}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\end{array}double f(double a, double b, double c) {
double r48750 = b;
double r48751 = 0.0;
bool r48752 = r48750 >= r48751;
double r48753 = -r48750;
double r48754 = r48750 * r48750;
double r48755 = 4.0;
double r48756 = a;
double r48757 = r48755 * r48756;
double r48758 = c;
double r48759 = r48757 * r48758;
double r48760 = r48754 - r48759;
double r48761 = sqrt(r48760);
double r48762 = r48753 - r48761;
double r48763 = 2.0;
double r48764 = r48763 * r48756;
double r48765 = r48762 / r48764;
double r48766 = r48763 * r48758;
double r48767 = r48753 + r48761;
double r48768 = r48766 / r48767;
double r48769 = r48752 ? r48765 : r48768;
return r48769;
}
double f(double a, double b, double c) {
double r48770 = b;
double r48771 = -2.8730895203943987e+136;
bool r48772 = r48770 <= r48771;
double r48773 = 0.0;
bool r48774 = r48770 >= r48773;
double r48775 = -r48770;
double r48776 = r48770 * r48770;
double r48777 = 4.0;
double r48778 = a;
double r48779 = r48777 * r48778;
double r48780 = c;
double r48781 = r48779 * r48780;
double r48782 = r48776 - r48781;
double r48783 = sqrt(r48782);
double r48784 = r48775 - r48783;
double r48785 = 2.0;
double r48786 = r48785 * r48778;
double r48787 = r48784 / r48786;
double r48788 = r48785 * r48780;
double r48789 = r48778 * r48780;
double r48790 = r48789 / r48770;
double r48791 = r48785 * r48790;
double r48792 = r48791 - r48770;
double r48793 = r48775 + r48792;
double r48794 = r48788 / r48793;
double r48795 = r48774 ? r48787 : r48794;
double r48796 = 1.2877938682172937e+92;
bool r48797 = r48770 <= r48796;
double r48798 = sqrt(r48783);
double r48799 = r48798 * r48798;
double r48800 = r48775 + r48799;
double r48801 = r48788 / r48800;
double r48802 = r48774 ? r48787 : r48801;
double r48803 = r48770 - r48791;
double r48804 = r48775 - r48803;
double r48805 = r48804 / r48786;
double r48806 = r48775 + r48783;
double r48807 = r48788 / r48806;
double r48808 = r48774 ? r48805 : r48807;
double r48809 = r48797 ? r48802 : r48808;
double r48810 = r48772 ? r48795 : r48809;
return r48810;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -2.8730895203943987e+136Initial program 34.5
Taylor expanded around -inf 6.4
if -2.8730895203943987e+136 < b < 1.2877938682172937e+92Initial program 8.8
rmApplied add-sqr-sqrt8.8
Applied sqrt-prod8.9
if 1.2877938682172937e+92 < b Initial program 45.5
Taylor expanded around inf 10.2
Final simplification8.7
herbie shell --seed 2020035 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 1"
:precision binary64
(if (>= b 0.0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))