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



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))))