\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.56941706508999029 \cdot 10^{163}:\\
\;\;\;\;\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) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 1.0963004586600293 \cdot 10^{99}:\\
\;\;\;\;\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{\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}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}\\
\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 r31816 = b;
double r31817 = 0.0;
bool r31818 = r31816 >= r31817;
double r31819 = 2.0;
double r31820 = c;
double r31821 = r31819 * r31820;
double r31822 = -r31816;
double r31823 = r31816 * r31816;
double r31824 = 4.0;
double r31825 = a;
double r31826 = r31824 * r31825;
double r31827 = r31826 * r31820;
double r31828 = r31823 - r31827;
double r31829 = sqrt(r31828);
double r31830 = r31822 - r31829;
double r31831 = r31821 / r31830;
double r31832 = r31822 + r31829;
double r31833 = r31819 * r31825;
double r31834 = r31832 / r31833;
double r31835 = r31818 ? r31831 : r31834;
return r31835;
}
double f(double a, double b, double c) {
double r31836 = b;
double r31837 = -1.5694170650899903e+163;
bool r31838 = r31836 <= r31837;
double r31839 = 0.0;
bool r31840 = r31836 >= r31839;
double r31841 = 2.0;
double r31842 = c;
double r31843 = r31841 * r31842;
double r31844 = -r31836;
double r31845 = r31836 * r31836;
double r31846 = 4.0;
double r31847 = a;
double r31848 = r31846 * r31847;
double r31849 = r31848 * r31842;
double r31850 = r31845 - r31849;
double r31851 = sqrt(r31850);
double r31852 = r31844 - r31851;
double r31853 = r31843 / r31852;
double r31854 = r31847 * r31842;
double r31855 = r31854 / r31836;
double r31856 = r31841 * r31855;
double r31857 = r31856 - r31836;
double r31858 = r31844 + r31857;
double r31859 = r31841 * r31847;
double r31860 = r31858 / r31859;
double r31861 = r31840 ? r31853 : r31860;
double r31862 = 1.0963004586600293e+99;
bool r31863 = r31836 <= r31862;
double r31864 = sqrt(r31851);
double r31865 = r31864 * r31864;
double r31866 = r31844 - r31865;
double r31867 = r31843 / r31866;
double r31868 = r31844 + r31851;
double r31869 = r31868 / r31859;
double r31870 = r31840 ? r31867 : r31869;
double r31871 = 2.0;
double r31872 = r31871 * r31836;
double r31873 = r31856 - r31872;
double r31874 = r31843 / r31873;
double r31875 = r31840 ? r31874 : r31869;
double r31876 = r31863 ? r31870 : r31875;
double r31877 = r31838 ? r31861 : r31876;
return r31877;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.5694170650899903e+163Initial program 64.0
Taylor expanded around -inf 12.9
if -1.5694170650899903e+163 < b < 1.0963004586600293e+99Initial program 9.5
rmApplied add-sqr-sqrt9.5
Applied sqrt-prod9.6
if 1.0963004586600293e+99 < b Initial program 28.8
Taylor expanded around inf 6.8
Final simplification9.2
herbie shell --seed 2020060 +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))))