\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 -2.96851200589285808 \cdot 10^{66}:\\
\;\;\;\;\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 9.254035461668974 \cdot 10^{137}:\\
\;\;\;\;\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 r39568 = b;
double r39569 = 0.0;
bool r39570 = r39568 >= r39569;
double r39571 = 2.0;
double r39572 = c;
double r39573 = r39571 * r39572;
double r39574 = -r39568;
double r39575 = r39568 * r39568;
double r39576 = 4.0;
double r39577 = a;
double r39578 = r39576 * r39577;
double r39579 = r39578 * r39572;
double r39580 = r39575 - r39579;
double r39581 = sqrt(r39580);
double r39582 = r39574 - r39581;
double r39583 = r39573 / r39582;
double r39584 = r39574 + r39581;
double r39585 = r39571 * r39577;
double r39586 = r39584 / r39585;
double r39587 = r39570 ? r39583 : r39586;
return r39587;
}
double f(double a, double b, double c) {
double r39588 = b;
double r39589 = -2.968512005892858e+66;
bool r39590 = r39588 <= r39589;
double r39591 = 0.0;
bool r39592 = r39588 >= r39591;
double r39593 = 2.0;
double r39594 = c;
double r39595 = r39593 * r39594;
double r39596 = -r39588;
double r39597 = r39588 * r39588;
double r39598 = 4.0;
double r39599 = a;
double r39600 = r39598 * r39599;
double r39601 = r39600 * r39594;
double r39602 = r39597 - r39601;
double r39603 = sqrt(r39602);
double r39604 = r39596 - r39603;
double r39605 = r39595 / r39604;
double r39606 = r39599 * r39594;
double r39607 = r39606 / r39588;
double r39608 = r39593 * r39607;
double r39609 = 2.0;
double r39610 = r39609 * r39588;
double r39611 = r39608 - r39610;
double r39612 = r39593 * r39599;
double r39613 = r39611 / r39612;
double r39614 = r39592 ? r39605 : r39613;
double r39615 = 9.254035461668974e+137;
bool r39616 = r39588 <= r39615;
double r39617 = cbrt(r39602);
double r39618 = r39617 * r39617;
double r39619 = r39618 * r39617;
double r39620 = sqrt(r39619);
double r39621 = r39596 + r39620;
double r39622 = r39621 / r39612;
double r39623 = r39592 ? r39605 : r39622;
double r39624 = r39588 - r39608;
double r39625 = r39596 - r39624;
double r39626 = r39595 / r39625;
double r39627 = r39596 + r39603;
double r39628 = r39627 / r39612;
double r39629 = r39592 ? r39626 : r39628;
double r39630 = r39616 ? r39623 : r39629;
double r39631 = r39590 ? r39614 : r39630;
return r39631;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -2.968512005892858e+66Initial program 41.4
Taylor expanded around -inf 10.3
if -2.968512005892858e+66 < b < 9.254035461668974e+137Initial program 9.0
rmApplied add-cube-cbrt9.2
if 9.254035461668974e+137 < b Initial program 34.5
Taylor expanded around inf 6.2
Final simplification8.8
herbie shell --seed 2020089 +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))))