\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.3096325963658892 \cdot 10^{147}:\\
\;\;\;\;\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 \left(\frac{a}{\sqrt[3]{b} \cdot \sqrt[3]{b}} \cdot \frac{c}{\sqrt[3]{b}}\right) - 2 \cdot b}\\
\end{array}\\
\mathbf{elif}\;b \le 8.1913675626814306 \cdot 10^{126}:\\
\;\;\;\;\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 r39876 = b;
double r39877 = 0.0;
bool r39878 = r39876 >= r39877;
double r39879 = -r39876;
double r39880 = r39876 * r39876;
double r39881 = 4.0;
double r39882 = a;
double r39883 = r39881 * r39882;
double r39884 = c;
double r39885 = r39883 * r39884;
double r39886 = r39880 - r39885;
double r39887 = sqrt(r39886);
double r39888 = r39879 - r39887;
double r39889 = 2.0;
double r39890 = r39889 * r39882;
double r39891 = r39888 / r39890;
double r39892 = r39889 * r39884;
double r39893 = r39879 + r39887;
double r39894 = r39892 / r39893;
double r39895 = r39878 ? r39891 : r39894;
return r39895;
}
double f(double a, double b, double c) {
double r39896 = b;
double r39897 = -4.309632596365889e+147;
bool r39898 = r39896 <= r39897;
double r39899 = 0.0;
bool r39900 = r39896 >= r39899;
double r39901 = -r39896;
double r39902 = r39896 * r39896;
double r39903 = 4.0;
double r39904 = a;
double r39905 = r39903 * r39904;
double r39906 = c;
double r39907 = r39905 * r39906;
double r39908 = r39902 - r39907;
double r39909 = sqrt(r39908);
double r39910 = r39901 - r39909;
double r39911 = 2.0;
double r39912 = r39911 * r39904;
double r39913 = r39910 / r39912;
double r39914 = r39911 * r39906;
double r39915 = cbrt(r39896);
double r39916 = r39915 * r39915;
double r39917 = r39904 / r39916;
double r39918 = r39906 / r39915;
double r39919 = r39917 * r39918;
double r39920 = r39911 * r39919;
double r39921 = 2.0;
double r39922 = r39921 * r39896;
double r39923 = r39920 - r39922;
double r39924 = r39914 / r39923;
double r39925 = r39900 ? r39913 : r39924;
double r39926 = 8.191367562681431e+126;
bool r39927 = r39896 <= r39926;
double r39928 = sqrt(r39909);
double r39929 = r39928 * r39928;
double r39930 = r39901 + r39929;
double r39931 = r39914 / r39930;
double r39932 = r39900 ? r39913 : r39931;
double r39933 = r39904 * r39906;
double r39934 = r39933 / r39896;
double r39935 = r39911 * r39934;
double r39936 = r39896 - r39935;
double r39937 = r39901 - r39936;
double r39938 = r39937 / r39912;
double r39939 = r39901 + r39909;
double r39940 = r39914 / r39939;
double r39941 = r39900 ? r39938 : r39940;
double r39942 = r39927 ? r39932 : r39941;
double r39943 = r39898 ? r39925 : r39942;
return r39943;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -4.309632596365889e+147Initial program 36.3
Taylor expanded around -inf 6.7
rmApplied add-cube-cbrt6.7
Applied times-frac1.3
if -4.309632596365889e+147 < b < 8.191367562681431e+126Initial program 8.9
rmApplied add-sqr-sqrt8.9
Applied sqrt-prod9.0
if 8.191367562681431e+126 < b Initial program 54.8
Taylor expanded around inf 11.2
Final simplification7.9
herbie shell --seed 2020034
(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)))))))