\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 -1.347978711569673851833534510641323804253 \cdot 10^{154}:\\
\;\;\;\;\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.251150909973147470730842219225836611014 \cdot 10^{103}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\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}}}{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}\\
\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 r30813 = b;
double r30814 = 0.0;
bool r30815 = r30813 >= r30814;
double r30816 = -r30813;
double r30817 = r30813 * r30813;
double r30818 = 4.0;
double r30819 = a;
double r30820 = r30818 * r30819;
double r30821 = c;
double r30822 = r30820 * r30821;
double r30823 = r30817 - r30822;
double r30824 = sqrt(r30823);
double r30825 = r30816 - r30824;
double r30826 = 2.0;
double r30827 = r30826 * r30819;
double r30828 = r30825 / r30827;
double r30829 = r30826 * r30821;
double r30830 = r30816 + r30824;
double r30831 = r30829 / r30830;
double r30832 = r30815 ? r30828 : r30831;
return r30832;
}
double f(double a, double b, double c) {
double r30833 = b;
double r30834 = -1.347978711569674e+154;
bool r30835 = r30833 <= r30834;
double r30836 = 0.0;
bool r30837 = r30833 >= r30836;
double r30838 = -r30833;
double r30839 = r30833 * r30833;
double r30840 = 4.0;
double r30841 = a;
double r30842 = r30840 * r30841;
double r30843 = c;
double r30844 = r30842 * r30843;
double r30845 = r30839 - r30844;
double r30846 = sqrt(r30845);
double r30847 = r30838 - r30846;
double r30848 = 2.0;
double r30849 = r30848 * r30841;
double r30850 = r30847 / r30849;
double r30851 = r30848 * r30843;
double r30852 = r30841 * r30843;
double r30853 = r30852 / r30833;
double r30854 = r30848 * r30853;
double r30855 = r30854 - r30833;
double r30856 = r30838 + r30855;
double r30857 = r30851 / r30856;
double r30858 = r30837 ? r30850 : r30857;
double r30859 = 1.2511509099731475e+103;
bool r30860 = r30833 <= r30859;
double r30861 = sqrt(r30846);
double r30862 = r30861 * r30861;
double r30863 = r30838 - r30862;
double r30864 = r30863 / r30849;
double r30865 = r30838 + r30846;
double r30866 = r30851 / r30865;
double r30867 = r30837 ? r30864 : r30866;
double r30868 = r30833 - r30854;
double r30869 = r30838 - r30868;
double r30870 = r30869 / r30849;
double r30871 = r30837 ? r30870 : r30866;
double r30872 = r30860 ? r30867 : r30871;
double r30873 = r30835 ? r30858 : r30872;
return r30873;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.347978711569674e+154Initial program 38.0
Taylor expanded around -inf 6.2
if -1.347978711569674e+154 < b < 1.2511509099731475e+103Initial program 8.1
rmApplied add-sqr-sqrt8.1
Applied sqrt-prod8.2
if 1.2511509099731475e+103 < b Initial program 47.7
Taylor expanded around inf 10.0
Final simplification8.1
herbie shell --seed 2019212
(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)))))))