\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}\begin{array}{l}
\mathbf{if}\;b \le -1.34945082225245682 \cdot 10^{154}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 1.81055510267725717 \cdot 10^{91}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\left|\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right| \cdot \sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r45864 = b;
double r45865 = 0.0;
bool r45866 = r45864 >= r45865;
double r45867 = 2.0;
double r45868 = c;
double r45869 = r45867 * r45868;
double r45870 = -r45864;
double r45871 = r45864 * r45864;
double r45872 = 4.0;
double r45873 = a;
double r45874 = r45872 * r45873;
double r45875 = r45874 * r45868;
double r45876 = r45871 - r45875;
double r45877 = sqrt(r45876);
double r45878 = r45870 - r45877;
double r45879 = r45869 / r45878;
double r45880 = r45870 + r45877;
double r45881 = r45867 * r45873;
double r45882 = r45880 / r45881;
double r45883 = r45866 ? r45879 : r45882;
return r45883;
}
double f(double a, double b, double c) {
double r45884 = b;
double r45885 = -1.3494508222524568e+154;
bool r45886 = r45884 <= r45885;
double r45887 = 0.0;
bool r45888 = r45884 >= r45887;
double r45889 = 2.0;
double r45890 = c;
double r45891 = r45889 * r45890;
double r45892 = -r45884;
double r45893 = r45884 * r45884;
double r45894 = 4.0;
double r45895 = a;
double r45896 = r45894 * r45895;
double r45897 = r45896 * r45890;
double r45898 = r45893 - r45897;
double r45899 = sqrt(r45898);
double r45900 = r45892 - r45899;
double r45901 = r45891 / r45900;
double r45902 = r45895 * r45890;
double r45903 = r45902 / r45884;
double r45904 = r45889 * r45903;
double r45905 = 2.0;
double r45906 = r45905 * r45884;
double r45907 = r45904 - r45906;
double r45908 = r45889 * r45895;
double r45909 = r45907 / r45908;
double r45910 = r45888 ? r45901 : r45909;
double r45911 = 1.810555102677257e+91;
bool r45912 = r45884 <= r45911;
double r45913 = sqrt(r45899);
double r45914 = cbrt(r45898);
double r45915 = fabs(r45914);
double r45916 = sqrt(r45914);
double r45917 = r45915 * r45916;
double r45918 = sqrt(r45917);
double r45919 = r45913 * r45918;
double r45920 = r45892 - r45919;
double r45921 = r45891 / r45920;
double r45922 = r45892 + r45899;
double r45923 = r45922 / r45908;
double r45924 = r45888 ? r45921 : r45923;
double r45925 = r45884 - r45904;
double r45926 = r45892 - r45925;
double r45927 = r45891 / r45926;
double r45928 = r45888 ? r45927 : r45923;
double r45929 = r45912 ? r45924 : r45928;
double r45930 = r45886 ? r45910 : r45929;
return r45930;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3494508222524568e+154Initial program 64.0
Taylor expanded around -inf 11.3
if -1.3494508222524568e+154 < b < 1.810555102677257e+91Initial program 8.9
rmApplied add-sqr-sqrt8.9
Applied sqrt-prod9.0
rmApplied add-cube-cbrt9.0
Applied sqrt-prod9.0
Simplified9.0
if 1.810555102677257e+91 < b Initial program 28.9
Taylor expanded around inf 6.5
Final simplification8.7
herbie shell --seed 2020035 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 2"
:precision binary64
(if (>= b 0.0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))