\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.390658213785421360285622940547871300736 \cdot 10^{101}:\\
\;\;\;\;\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{\mathsf{fma}\left(2, \frac{a}{b} \cdot c, b \cdot -2\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 1.042426094136287989665052757228371789389 \cdot 10^{152}:\\
\;\;\;\;\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{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\mathsf{fma}\left(b, -2, \frac{2 \cdot a}{\frac{b}{c}}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r888620 = b;
double r888621 = 0.0;
bool r888622 = r888620 >= r888621;
double r888623 = 2.0;
double r888624 = c;
double r888625 = r888623 * r888624;
double r888626 = -r888620;
double r888627 = r888620 * r888620;
double r888628 = 4.0;
double r888629 = a;
double r888630 = r888628 * r888629;
double r888631 = r888630 * r888624;
double r888632 = r888627 - r888631;
double r888633 = sqrt(r888632);
double r888634 = r888626 - r888633;
double r888635 = r888625 / r888634;
double r888636 = r888626 + r888633;
double r888637 = r888623 * r888629;
double r888638 = r888636 / r888637;
double r888639 = r888622 ? r888635 : r888638;
return r888639;
}
double f(double a, double b, double c) {
double r888640 = b;
double r888641 = -1.3906582137854214e+101;
bool r888642 = r888640 <= r888641;
double r888643 = 0.0;
bool r888644 = r888640 >= r888643;
double r888645 = 2.0;
double r888646 = c;
double r888647 = r888645 * r888646;
double r888648 = -r888640;
double r888649 = r888640 * r888640;
double r888650 = 4.0;
double r888651 = a;
double r888652 = r888650 * r888651;
double r888653 = r888652 * r888646;
double r888654 = r888649 - r888653;
double r888655 = sqrt(r888654);
double r888656 = r888648 - r888655;
double r888657 = r888647 / r888656;
double r888658 = r888651 / r888640;
double r888659 = r888658 * r888646;
double r888660 = -2.0;
double r888661 = r888640 * r888660;
double r888662 = fma(r888645, r888659, r888661);
double r888663 = r888645 * r888651;
double r888664 = r888662 / r888663;
double r888665 = r888644 ? r888657 : r888664;
double r888666 = 1.042426094136288e+152;
bool r888667 = r888640 <= r888666;
double r888668 = sqrt(r888655);
double r888669 = r888668 * r888668;
double r888670 = r888648 - r888669;
double r888671 = r888647 / r888670;
double r888672 = r888655 + r888648;
double r888673 = r888672 / r888663;
double r888674 = r888644 ? r888671 : r888673;
double r888675 = r888640 / r888646;
double r888676 = r888663 / r888675;
double r888677 = fma(r888640, r888660, r888676);
double r888678 = r888647 / r888677;
double r888679 = r888644 ? r888678 : r888673;
double r888680 = r888667 ? r888674 : r888679;
double r888681 = r888642 ? r888665 : r888680;
return r888681;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -1.3906582137854214e+101Initial program 48.2
Taylor expanded around -inf 10.3
Simplified3.6
if -1.3906582137854214e+101 < b < 1.042426094136288e+152Initial program 8.6
rmApplied add-sqr-sqrt8.6
Applied sqrt-prod8.7
if 1.042426094136288e+152 < b Initial program 37.5
rmApplied add-sqr-sqrt37.5
Applied sqrt-prod37.5
Taylor expanded around inf 6.3
Simplified1.8
Final simplification6.6
herbie shell --seed 2019172 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 2"
(if (>= b 0.0) (/ (* 2.0 c) (- (- b) (sqrt (- (* b b) (* (* 4.0 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a))))