\begin{array}{l}
\mathbf{if}\;b \ge 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 -3.157094219357017 \cdot 10^{+135}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(\frac{2 \cdot c}{\frac{b}{a}} - b\right) + \left(-b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 5.05323804488454 \cdot 10^{+42}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 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:\\
\;\;\;\;\frac{2 \cdot c}{\left(a \cdot \frac{c}{b} - b\right) \cdot 2}\\
\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 r1322611 = b;
double r1322612 = 0.0;
bool r1322613 = r1322611 >= r1322612;
double r1322614 = 2.0;
double r1322615 = c;
double r1322616 = r1322614 * r1322615;
double r1322617 = -r1322611;
double r1322618 = r1322611 * r1322611;
double r1322619 = 4.0;
double r1322620 = a;
double r1322621 = r1322619 * r1322620;
double r1322622 = r1322621 * r1322615;
double r1322623 = r1322618 - r1322622;
double r1322624 = sqrt(r1322623);
double r1322625 = r1322617 - r1322624;
double r1322626 = r1322616 / r1322625;
double r1322627 = r1322617 + r1322624;
double r1322628 = r1322614 * r1322620;
double r1322629 = r1322627 / r1322628;
double r1322630 = r1322613 ? r1322626 : r1322629;
return r1322630;
}
double f(double a, double b, double c) {
double r1322631 = b;
double r1322632 = -3.157094219357017e+135;
bool r1322633 = r1322631 <= r1322632;
double r1322634 = 0.0;
bool r1322635 = r1322631 >= r1322634;
double r1322636 = 2.0;
double r1322637 = c;
double r1322638 = r1322636 * r1322637;
double r1322639 = -r1322631;
double r1322640 = r1322631 * r1322631;
double r1322641 = 4.0;
double r1322642 = a;
double r1322643 = r1322641 * r1322642;
double r1322644 = r1322643 * r1322637;
double r1322645 = r1322640 - r1322644;
double r1322646 = sqrt(r1322645);
double r1322647 = r1322639 - r1322646;
double r1322648 = r1322638 / r1322647;
double r1322649 = r1322631 / r1322642;
double r1322650 = r1322638 / r1322649;
double r1322651 = r1322650 - r1322631;
double r1322652 = r1322651 + r1322639;
double r1322653 = r1322636 * r1322642;
double r1322654 = r1322652 / r1322653;
double r1322655 = r1322635 ? r1322648 : r1322654;
double r1322656 = 5.05323804488454e+42;
bool r1322657 = r1322631 <= r1322656;
double r1322658 = sqrt(r1322646);
double r1322659 = r1322658 * r1322658;
double r1322660 = r1322639 - r1322659;
double r1322661 = r1322638 / r1322660;
double r1322662 = r1322646 + r1322639;
double r1322663 = r1322662 / r1322653;
double r1322664 = r1322635 ? r1322661 : r1322663;
double r1322665 = r1322637 / r1322631;
double r1322666 = r1322642 * r1322665;
double r1322667 = r1322666 - r1322631;
double r1322668 = r1322667 * r1322636;
double r1322669 = r1322638 / r1322668;
double r1322670 = r1322635 ? r1322669 : r1322663;
double r1322671 = r1322657 ? r1322664 : r1322670;
double r1322672 = r1322633 ? r1322655 : r1322671;
return r1322672;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -3.157094219357017e+135Initial program 54.4
Taylor expanded around -inf 9.6
Simplified2.8
if -3.157094219357017e+135 < b < 5.05323804488454e+42Initial program 9.5
rmApplied add-sqr-sqrt9.6
if 5.05323804488454e+42 < b Initial program 24.9
Taylor expanded around inf 7.2
Simplified4.1
Final simplification7.1
herbie shell --seed 2019120
(FPCore (a b c)
:name "jeff quadratic root 2"
(if (>= b 0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))