\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.023317139260791399366790140273680657151 \cdot 10^{113}:\\
\;\;\;\;\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{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 1.02738286211209785784187544728837722875 \cdot 10^{63}:\\
\;\;\;\;\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{\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}\\
\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 r38007 = b;
double r38008 = 0.0;
bool r38009 = r38007 >= r38008;
double r38010 = 2.0;
double r38011 = c;
double r38012 = r38010 * r38011;
double r38013 = -r38007;
double r38014 = r38007 * r38007;
double r38015 = 4.0;
double r38016 = a;
double r38017 = r38015 * r38016;
double r38018 = r38017 * r38011;
double r38019 = r38014 - r38018;
double r38020 = sqrt(r38019);
double r38021 = r38013 - r38020;
double r38022 = r38012 / r38021;
double r38023 = r38013 + r38020;
double r38024 = r38010 * r38016;
double r38025 = r38023 / r38024;
double r38026 = r38009 ? r38022 : r38025;
return r38026;
}
double f(double a, double b, double c) {
double r38027 = b;
double r38028 = -3.0233171392607914e+113;
bool r38029 = r38027 <= r38028;
double r38030 = 0.0;
bool r38031 = r38027 >= r38030;
double r38032 = 2.0;
double r38033 = c;
double r38034 = r38032 * r38033;
double r38035 = -r38027;
double r38036 = r38027 * r38027;
double r38037 = 4.0;
double r38038 = a;
double r38039 = r38037 * r38038;
double r38040 = r38039 * r38033;
double r38041 = r38036 - r38040;
double r38042 = sqrt(r38041);
double r38043 = r38035 - r38042;
double r38044 = r38034 / r38043;
double r38045 = r38038 * r38033;
double r38046 = r38045 / r38027;
double r38047 = r38032 * r38046;
double r38048 = 2.0;
double r38049 = r38048 * r38027;
double r38050 = r38047 - r38049;
double r38051 = r38032 * r38038;
double r38052 = r38050 / r38051;
double r38053 = r38031 ? r38044 : r38052;
double r38054 = 1.0273828621120979e+63;
bool r38055 = r38027 <= r38054;
double r38056 = sqrt(r38042);
double r38057 = r38056 * r38056;
double r38058 = r38035 + r38057;
double r38059 = r38058 / r38051;
double r38060 = r38031 ? r38044 : r38059;
double r38061 = r38034 / r38050;
double r38062 = r38035 + r38042;
double r38063 = r38062 / r38051;
double r38064 = r38031 ? r38061 : r38063;
double r38065 = r38055 ? r38060 : r38064;
double r38066 = r38029 ? r38053 : r38065;
return r38066;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -3.0233171392607914e+113Initial program 49.6
Taylor expanded around -inf 10.0
if -3.0233171392607914e+113 < b < 1.0273828621120979e+63Initial program 9.2
rmApplied add-sqr-sqrt9.2
Applied sqrt-prod9.3
if 1.0273828621120979e+63 < b Initial program 27.0
Taylor expanded around inf 7.2
Final simplification8.8
herbie shell --seed 2020001 +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))))