\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 -5.617913947565299992326164335754974391576 \cdot 10^{116}:\\
\;\;\;\;\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, b, \frac{2}{\frac{1}{a} \cdot \frac{b}{c}}\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 1.87934071350375634734658439345944082339 \cdot 10^{153}:\\
\;\;\;\;\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{\sqrt{\sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c} \cdot \sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}}} \cdot \sqrt{\sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \left(\sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\right)} + \left(-b\right)}{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{\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 r855634 = b;
double r855635 = 0.0;
bool r855636 = r855634 >= r855635;
double r855637 = 2.0;
double r855638 = c;
double r855639 = r855637 * r855638;
double r855640 = -r855634;
double r855641 = r855634 * r855634;
double r855642 = 4.0;
double r855643 = a;
double r855644 = r855642 * r855643;
double r855645 = r855644 * r855638;
double r855646 = r855641 - r855645;
double r855647 = sqrt(r855646);
double r855648 = r855640 - r855647;
double r855649 = r855639 / r855648;
double r855650 = r855640 + r855647;
double r855651 = r855637 * r855643;
double r855652 = r855650 / r855651;
double r855653 = r855636 ? r855649 : r855652;
return r855653;
}
double f(double a, double b, double c) {
double r855654 = b;
double r855655 = -5.6179139475653e+116;
bool r855656 = r855654 <= r855655;
double r855657 = 0.0;
bool r855658 = r855654 >= r855657;
double r855659 = 2.0;
double r855660 = c;
double r855661 = r855659 * r855660;
double r855662 = -r855654;
double r855663 = r855654 * r855654;
double r855664 = 4.0;
double r855665 = a;
double r855666 = r855664 * r855665;
double r855667 = r855666 * r855660;
double r855668 = r855663 - r855667;
double r855669 = sqrt(r855668);
double r855670 = r855662 - r855669;
double r855671 = r855661 / r855670;
double r855672 = -2.0;
double r855673 = 1.0;
double r855674 = r855673 / r855665;
double r855675 = r855654 / r855660;
double r855676 = r855674 * r855675;
double r855677 = r855659 / r855676;
double r855678 = fma(r855672, r855654, r855677);
double r855679 = r855659 * r855665;
double r855680 = r855678 / r855679;
double r855681 = r855658 ? r855671 : r855680;
double r855682 = 1.8793407135037563e+153;
bool r855683 = r855654 <= r855682;
double r855684 = cbrt(r855668);
double r855685 = r855684 * r855684;
double r855686 = sqrt(r855685);
double r855687 = sqrt(r855684);
double r855688 = r855686 * r855687;
double r855689 = sqrt(r855688);
double r855690 = cbrt(r855669);
double r855691 = r855690 * r855690;
double r855692 = r855690 * r855691;
double r855693 = sqrt(r855692);
double r855694 = r855689 * r855693;
double r855695 = r855694 + r855662;
double r855696 = r855695 / r855679;
double r855697 = r855658 ? r855671 : r855696;
double r855698 = r855665 * r855660;
double r855699 = r855698 / r855654;
double r855700 = r855659 * r855699;
double r855701 = r855654 - r855700;
double r855702 = r855662 - r855701;
double r855703 = r855661 / r855702;
double r855704 = r855669 + r855662;
double r855705 = r855704 / r855679;
double r855706 = r855658 ? r855703 : r855705;
double r855707 = r855683 ? r855697 : r855706;
double r855708 = r855656 ? r855681 : r855707;
return r855708;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -5.6179139475653e+116Initial program 52.0
rmApplied add-sqr-sqrt52.0
Applied sqrt-prod52.1
Taylor expanded around -inf 10.5
Simplified10.5
rmApplied *-un-lft-identity10.5
Applied times-frac3.8
if -5.6179139475653e+116 < b < 1.8793407135037563e+153Initial program 9.1
rmApplied add-sqr-sqrt9.1
Applied sqrt-prod9.2
rmApplied add-cube-cbrt9.2
Applied sqrt-prod9.2
rmApplied add-cube-cbrt9.3
if 1.8793407135037563e+153 < b Initial program 38.4
Taylor expanded around inf 6.5
Final simplification8.1
herbie shell --seed 2019171 +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))))