\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 -3.273486217319098334989555417998997525257 \cdot 10^{79}:\\
\;\;\;\;\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 2.125563079851438727208684227808951636731 \cdot 10^{135}:\\
\;\;\;\;\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{\left(\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c} \cdot \sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right) \cdot \sqrt[3]{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 r31002 = b;
double r31003 = 0.0;
bool r31004 = r31002 >= r31003;
double r31005 = 2.0;
double r31006 = c;
double r31007 = r31005 * r31006;
double r31008 = -r31002;
double r31009 = r31002 * r31002;
double r31010 = 4.0;
double r31011 = a;
double r31012 = r31010 * r31011;
double r31013 = r31012 * r31006;
double r31014 = r31009 - r31013;
double r31015 = sqrt(r31014);
double r31016 = r31008 - r31015;
double r31017 = r31007 / r31016;
double r31018 = r31008 + r31015;
double r31019 = r31005 * r31011;
double r31020 = r31018 / r31019;
double r31021 = r31004 ? r31017 : r31020;
return r31021;
}
double f(double a, double b, double c) {
double r31022 = b;
double r31023 = -3.2734862173190983e+79;
bool r31024 = r31022 <= r31023;
double r31025 = 0.0;
bool r31026 = r31022 >= r31025;
double r31027 = 2.0;
double r31028 = c;
double r31029 = r31027 * r31028;
double r31030 = -r31022;
double r31031 = r31022 * r31022;
double r31032 = 4.0;
double r31033 = a;
double r31034 = r31032 * r31033;
double r31035 = r31034 * r31028;
double r31036 = r31031 - r31035;
double r31037 = sqrt(r31036);
double r31038 = r31030 - r31037;
double r31039 = r31029 / r31038;
double r31040 = r31033 * r31028;
double r31041 = r31040 / r31022;
double r31042 = r31027 * r31041;
double r31043 = r31042 - r31022;
double r31044 = r31030 + r31043;
double r31045 = r31027 * r31033;
double r31046 = r31044 / r31045;
double r31047 = r31026 ? r31039 : r31046;
double r31048 = 2.1255630798514387e+135;
bool r31049 = r31022 <= r31048;
double r31050 = cbrt(r31036);
double r31051 = r31050 * r31050;
double r31052 = r31051 * r31050;
double r31053 = sqrt(r31052);
double r31054 = r31030 + r31053;
double r31055 = r31054 / r31045;
double r31056 = r31026 ? r31039 : r31055;
double r31057 = r31022 - r31042;
double r31058 = r31030 - r31057;
double r31059 = r31029 / r31058;
double r31060 = r31030 + r31037;
double r31061 = r31060 / r31045;
double r31062 = r31026 ? r31059 : r31061;
double r31063 = r31049 ? r31056 : r31062;
double r31064 = r31024 ? r31047 : r31063;
return r31064;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -3.2734862173190983e+79Initial program 43.7
Taylor expanded around -inf 8.9
if -3.2734862173190983e+79 < b < 2.1255630798514387e+135Initial program 9.0
rmApplied add-cube-cbrt9.2
if 2.1255630798514387e+135 < b Initial program 36.0
Taylor expanded around inf 7.2
Final simplification8.7
herbie shell --seed 2019306
(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))))