\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.583771941249908769881253594626691568125 \cdot 10^{158}:\\
\;\;\;\;\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 4.760113507749772222800723167187153228545 \cdot 10^{96}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \left|\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right| \cdot \sqrt{\sqrt[3]{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 r40009 = b;
double r40010 = 0.0;
bool r40011 = r40009 >= r40010;
double r40012 = -r40009;
double r40013 = r40009 * r40009;
double r40014 = 4.0;
double r40015 = a;
double r40016 = r40014 * r40015;
double r40017 = c;
double r40018 = r40016 * r40017;
double r40019 = r40013 - r40018;
double r40020 = sqrt(r40019);
double r40021 = r40012 - r40020;
double r40022 = 2.0;
double r40023 = r40022 * r40015;
double r40024 = r40021 / r40023;
double r40025 = r40022 * r40017;
double r40026 = r40012 + r40020;
double r40027 = r40025 / r40026;
double r40028 = r40011 ? r40024 : r40027;
return r40028;
}
double f(double a, double b, double c) {
double r40029 = b;
double r40030 = -1.5837719412499088e+158;
bool r40031 = r40029 <= r40030;
double r40032 = 0.0;
bool r40033 = r40029 >= r40032;
double r40034 = -r40029;
double r40035 = r40029 * r40029;
double r40036 = 4.0;
double r40037 = a;
double r40038 = r40036 * r40037;
double r40039 = c;
double r40040 = r40038 * r40039;
double r40041 = r40035 - r40040;
double r40042 = sqrt(r40041);
double r40043 = r40034 - r40042;
double r40044 = 2.0;
double r40045 = r40044 * r40037;
double r40046 = r40043 / r40045;
double r40047 = r40044 * r40039;
double r40048 = r40037 * r40039;
double r40049 = r40048 / r40029;
double r40050 = r40044 * r40049;
double r40051 = r40050 - r40029;
double r40052 = r40034 + r40051;
double r40053 = r40047 / r40052;
double r40054 = r40033 ? r40046 : r40053;
double r40055 = 4.760113507749772e+96;
bool r40056 = r40029 <= r40055;
double r40057 = cbrt(r40041);
double r40058 = fabs(r40057);
double r40059 = sqrt(r40057);
double r40060 = r40058 * r40059;
double r40061 = r40034 - r40060;
double r40062 = r40061 / r40045;
double r40063 = r40034 + r40042;
double r40064 = r40047 / r40063;
double r40065 = r40033 ? r40062 : r40064;
double r40066 = r40029 - r40050;
double r40067 = r40034 - r40066;
double r40068 = r40067 / r40045;
double r40069 = r40033 ? r40068 : r40064;
double r40070 = r40056 ? r40065 : r40069;
double r40071 = r40031 ? r40054 : r40070;
return r40071;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.5837719412499088e+158Initial program 38.7
Taylor expanded around -inf 6.5
if -1.5837719412499088e+158 < b < 4.760113507749772e+96Initial program 8.5
rmApplied add-cube-cbrt8.7
Applied sqrt-prod8.7
Simplified8.7
if 4.760113507749772e+96 < b Initial program 45.9
Taylor expanded around inf 10.3
Final simplification8.6
herbie shell --seed 2019291
(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)))))))