\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.597887911264436 \cdot 10^{131}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\mathsf{fma}\left(-\sqrt{b}, \sqrt{b}, -\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 1.38600558623442774 \cdot 10^{112}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\mathsf{fma}\left(-\sqrt{b}, \sqrt{b}, -\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\left|\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right| \cdot \sqrt{\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 r38631 = b;
double r38632 = 0.0;
bool r38633 = r38631 >= r38632;
double r38634 = 2.0;
double r38635 = c;
double r38636 = r38634 * r38635;
double r38637 = -r38631;
double r38638 = r38631 * r38631;
double r38639 = 4.0;
double r38640 = a;
double r38641 = r38639 * r38640;
double r38642 = r38641 * r38635;
double r38643 = r38638 - r38642;
double r38644 = sqrt(r38643);
double r38645 = r38637 - r38644;
double r38646 = r38636 / r38645;
double r38647 = r38637 + r38644;
double r38648 = r38634 * r38640;
double r38649 = r38647 / r38648;
double r38650 = r38633 ? r38646 : r38649;
return r38650;
}
double f(double a, double b, double c) {
double r38651 = b;
double r38652 = -1.597887911264436e+131;
bool r38653 = r38651 <= r38652;
double r38654 = 0.0;
bool r38655 = r38651 >= r38654;
double r38656 = 2.0;
double r38657 = c;
double r38658 = r38656 * r38657;
double r38659 = sqrt(r38651);
double r38660 = -r38659;
double r38661 = r38651 * r38651;
double r38662 = 4.0;
double r38663 = a;
double r38664 = r38662 * r38663;
double r38665 = r38664 * r38657;
double r38666 = r38661 - r38665;
double r38667 = sqrt(r38666);
double r38668 = -r38667;
double r38669 = fma(r38660, r38659, r38668);
double r38670 = r38658 / r38669;
double r38671 = -r38651;
double r38672 = r38663 * r38657;
double r38673 = r38672 / r38651;
double r38674 = r38656 * r38673;
double r38675 = r38674 - r38651;
double r38676 = r38671 + r38675;
double r38677 = r38656 * r38663;
double r38678 = r38676 / r38677;
double r38679 = r38655 ? r38670 : r38678;
double r38680 = 1.3860055862344277e+112;
bool r38681 = r38651 <= r38680;
double r38682 = sqrt(r38667);
double r38683 = cbrt(r38666);
double r38684 = fabs(r38683);
double r38685 = sqrt(r38683);
double r38686 = r38684 * r38685;
double r38687 = sqrt(r38686);
double r38688 = r38682 * r38687;
double r38689 = r38671 + r38688;
double r38690 = r38689 / r38677;
double r38691 = r38655 ? r38670 : r38690;
double r38692 = r38651 - r38674;
double r38693 = r38671 - r38692;
double r38694 = r38658 / r38693;
double r38695 = r38671 + r38667;
double r38696 = r38695 / r38677;
double r38697 = r38655 ? r38694 : r38696;
double r38698 = r38681 ? r38691 : r38697;
double r38699 = r38653 ? r38679 : r38698;
return r38699;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -1.597887911264436e+131Initial program 57.0
rmApplied add-sqr-sqrt57.0
Applied distribute-lft-neg-in57.0
Applied fma-neg57.0
Taylor expanded around -inf 11.0
if -1.597887911264436e+131 < b < 1.3860055862344277e+112Initial program 8.7
rmApplied add-sqr-sqrt8.8
Applied distribute-lft-neg-in8.8
Applied fma-neg8.7
rmApplied add-sqr-sqrt8.7
Applied sqrt-prod8.9
rmApplied add-cube-cbrt8.9
Applied sqrt-prod8.9
Simplified8.9
if 1.3860055862344277e+112 < b Initial program 30.8
Taylor expanded around inf 6.5
Final simplification8.6
herbie shell --seed 2020081 +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))))