\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 -1.34427541693066155 \cdot 10^{154}:\\
\;\;\;\;\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 8.8641081105864164 \cdot 10^{28}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\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}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \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}{\left(-b\right) - \left(b - 2 \cdot \left(\frac{a}{\sqrt{b}} \cdot \frac{c}{{b}^{\frac{1}{2}}}\right)\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 r41589 = b;
double r41590 = 0.0;
bool r41591 = r41589 >= r41590;
double r41592 = 2.0;
double r41593 = c;
double r41594 = r41592 * r41593;
double r41595 = -r41589;
double r41596 = r41589 * r41589;
double r41597 = 4.0;
double r41598 = a;
double r41599 = r41597 * r41598;
double r41600 = r41599 * r41593;
double r41601 = r41596 - r41600;
double r41602 = sqrt(r41601);
double r41603 = r41595 - r41602;
double r41604 = r41594 / r41603;
double r41605 = r41595 + r41602;
double r41606 = r41592 * r41598;
double r41607 = r41605 / r41606;
double r41608 = r41591 ? r41604 : r41607;
return r41608;
}
double f(double a, double b, double c) {
double r41609 = b;
double r41610 = -1.3442754169306616e+154;
bool r41611 = r41609 <= r41610;
double r41612 = 0.0;
bool r41613 = r41609 >= r41612;
double r41614 = 2.0;
double r41615 = c;
double r41616 = r41614 * r41615;
double r41617 = -r41609;
double r41618 = r41609 * r41609;
double r41619 = 4.0;
double r41620 = a;
double r41621 = r41619 * r41620;
double r41622 = r41621 * r41615;
double r41623 = r41618 - r41622;
double r41624 = sqrt(r41623);
double r41625 = r41617 - r41624;
double r41626 = r41616 / r41625;
double r41627 = r41620 * r41615;
double r41628 = r41627 / r41609;
double r41629 = r41614 * r41628;
double r41630 = 2.0;
double r41631 = r41630 * r41609;
double r41632 = r41629 - r41631;
double r41633 = r41614 * r41620;
double r41634 = r41632 / r41633;
double r41635 = r41613 ? r41626 : r41634;
double r41636 = 8.864108110586416e+28;
bool r41637 = r41609 <= r41636;
double r41638 = sqrt(r41624);
double r41639 = r41638 * r41638;
double r41640 = r41617 - r41639;
double r41641 = r41616 / r41640;
double r41642 = r41617 + r41624;
double r41643 = r41642 / r41633;
double r41644 = r41613 ? r41641 : r41643;
double r41645 = sqrt(r41609);
double r41646 = r41620 / r41645;
double r41647 = 0.5;
double r41648 = pow(r41609, r41647);
double r41649 = r41615 / r41648;
double r41650 = r41646 * r41649;
double r41651 = r41614 * r41650;
double r41652 = r41609 - r41651;
double r41653 = r41617 - r41652;
double r41654 = r41616 / r41653;
double r41655 = r41613 ? r41654 : r41643;
double r41656 = r41637 ? r41644 : r41655;
double r41657 = r41611 ? r41635 : r41656;
return r41657;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3442754169306616e+154Initial program 64.0
rmApplied add-sqr-sqrt64.0
Applied sqrt-prod64.0
Taylor expanded around -inf 9.9
if -1.3442754169306616e+154 < b < 8.864108110586416e+28Initial program 9.4
rmApplied add-sqr-sqrt9.4
Applied sqrt-prod9.5
if 8.864108110586416e+28 < b Initial program 24.3
Taylor expanded around inf 8.0
rmApplied add-sqr-sqrt8.0
Applied times-frac4.7
Simplified4.7
Final simplification8.1
herbie shell --seed 2020100 +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))))