\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 -4.05734525598461 \cdot 10^{150}:\\
\;\;\;\;\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}{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}\\
\end{array}\\
\mathbf{elif}\;b \le 7.4471423651860946 \cdot 10^{108}:\\
\;\;\;\;\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{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{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 r47870 = b;
double r47871 = 0.0;
bool r47872 = r47870 >= r47871;
double r47873 = -r47870;
double r47874 = r47870 * r47870;
double r47875 = 4.0;
double r47876 = a;
double r47877 = r47875 * r47876;
double r47878 = c;
double r47879 = r47877 * r47878;
double r47880 = r47874 - r47879;
double r47881 = sqrt(r47880);
double r47882 = r47873 - r47881;
double r47883 = 2.0;
double r47884 = r47883 * r47876;
double r47885 = r47882 / r47884;
double r47886 = r47883 * r47878;
double r47887 = r47873 + r47881;
double r47888 = r47886 / r47887;
double r47889 = r47872 ? r47885 : r47888;
return r47889;
}
double f(double a, double b, double c) {
double r47890 = b;
double r47891 = -4.05734525598461e+150;
bool r47892 = r47890 <= r47891;
double r47893 = 0.0;
bool r47894 = r47890 >= r47893;
double r47895 = -r47890;
double r47896 = r47890 * r47890;
double r47897 = 4.0;
double r47898 = a;
double r47899 = r47897 * r47898;
double r47900 = c;
double r47901 = r47899 * r47900;
double r47902 = r47896 - r47901;
double r47903 = sqrt(r47902);
double r47904 = r47895 - r47903;
double r47905 = 2.0;
double r47906 = r47905 * r47898;
double r47907 = r47904 / r47906;
double r47908 = r47905 * r47900;
double r47909 = r47898 * r47900;
double r47910 = r47909 / r47890;
double r47911 = r47905 * r47910;
double r47912 = 2.0;
double r47913 = r47912 * r47890;
double r47914 = r47911 - r47913;
double r47915 = r47908 / r47914;
double r47916 = r47894 ? r47907 : r47915;
double r47917 = 7.447142365186095e+108;
bool r47918 = r47890 <= r47917;
double r47919 = sqrt(r47903);
double r47920 = r47919 * r47919;
double r47921 = r47895 + r47920;
double r47922 = r47908 / r47921;
double r47923 = r47894 ? r47907 : r47922;
double r47924 = r47914 / r47906;
double r47925 = r47895 + r47903;
double r47926 = r47908 / r47925;
double r47927 = r47894 ? r47924 : r47926;
double r47928 = r47918 ? r47923 : r47927;
double r47929 = r47892 ? r47916 : r47928;
return r47929;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -4.05734525598461e+150Initial program 37.8
rmApplied add-sqr-sqrt37.8
Applied sqrt-prod37.8
Taylor expanded around -inf 6.6
if -4.05734525598461e+150 < b < 7.447142365186095e+108Initial program 8.6
rmApplied add-sqr-sqrt8.6
Applied sqrt-prod8.7
if 7.447142365186095e+108 < b Initial program 50.2
Taylor expanded around inf 10.9
Final simplification8.7
herbie shell --seed 2020062 +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)))))))