\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\end{array}\begin{array}{l}
\mathbf{if}\;b \le -4.073691083157782267875644621647570574227 \cdot 10^{153}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\mathsf{fma}\left(2, c \cdot \frac{a}{b}, -2 \cdot b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 2.473233968279812603451846937244594428558 \cdot 10^{117}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\mathsf{fma}\left(\sqrt[3]{-b} \cdot \sqrt[3]{-b}, \sqrt[3]{-b}, \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 \left(-\sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}}\right)\right) + \mathsf{fma}\left(-\sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}}, \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}}, \sqrt{\left(\sqrt[3]{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt[3]{\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}}\right) \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}}\right)}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \left(b - \left(c \cdot 2\right) \cdot \frac{a}{b}\right)}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}\\
\end{array}double f(double a, double b, double c) {
double r1387753 = b;
double r1387754 = 0.0;
bool r1387755 = r1387753 >= r1387754;
double r1387756 = -r1387753;
double r1387757 = r1387753 * r1387753;
double r1387758 = 4.0;
double r1387759 = a;
double r1387760 = r1387758 * r1387759;
double r1387761 = c;
double r1387762 = r1387760 * r1387761;
double r1387763 = r1387757 - r1387762;
double r1387764 = sqrt(r1387763);
double r1387765 = r1387756 - r1387764;
double r1387766 = 2.0;
double r1387767 = r1387766 * r1387759;
double r1387768 = r1387765 / r1387767;
double r1387769 = r1387766 * r1387761;
double r1387770 = r1387756 + r1387764;
double r1387771 = r1387769 / r1387770;
double r1387772 = r1387755 ? r1387768 : r1387771;
return r1387772;
}
double f(double a, double b, double c) {
double r1387773 = b;
double r1387774 = -4.073691083157782e+153;
bool r1387775 = r1387773 <= r1387774;
double r1387776 = 0.0;
bool r1387777 = r1387773 >= r1387776;
double r1387778 = -r1387773;
double r1387779 = r1387773 * r1387773;
double r1387780 = 4.0;
double r1387781 = a;
double r1387782 = r1387780 * r1387781;
double r1387783 = c;
double r1387784 = r1387782 * r1387783;
double r1387785 = r1387779 - r1387784;
double r1387786 = sqrt(r1387785);
double r1387787 = r1387778 - r1387786;
double r1387788 = 2.0;
double r1387789 = r1387788 * r1387781;
double r1387790 = r1387787 / r1387789;
double r1387791 = r1387783 * r1387788;
double r1387792 = r1387781 / r1387773;
double r1387793 = r1387783 * r1387792;
double r1387794 = -2.0;
double r1387795 = r1387794 * r1387773;
double r1387796 = fma(r1387788, r1387793, r1387795);
double r1387797 = r1387791 / r1387796;
double r1387798 = r1387777 ? r1387790 : r1387797;
double r1387799 = 2.4732339682798126e+117;
bool r1387800 = r1387773 <= r1387799;
double r1387801 = cbrt(r1387778);
double r1387802 = r1387801 * r1387801;
double r1387803 = cbrt(r1387785);
double r1387804 = r1387803 * r1387803;
double r1387805 = sqrt(r1387804);
double r1387806 = sqrt(r1387803);
double r1387807 = -r1387806;
double r1387808 = r1387805 * r1387807;
double r1387809 = fma(r1387802, r1387801, r1387808);
double r1387810 = cbrt(r1387803);
double r1387811 = cbrt(r1387804);
double r1387812 = r1387810 * r1387811;
double r1387813 = r1387812 * r1387803;
double r1387814 = sqrt(r1387813);
double r1387815 = r1387814 * r1387806;
double r1387816 = fma(r1387807, r1387805, r1387815);
double r1387817 = r1387809 + r1387816;
double r1387818 = r1387817 / r1387789;
double r1387819 = r1387786 + r1387778;
double r1387820 = r1387791 / r1387819;
double r1387821 = r1387777 ? r1387818 : r1387820;
double r1387822 = r1387791 * r1387792;
double r1387823 = r1387773 - r1387822;
double r1387824 = r1387778 - r1387823;
double r1387825 = r1387824 / r1387789;
double r1387826 = r1387777 ? r1387825 : r1387820;
double r1387827 = r1387800 ? r1387821 : r1387826;
double r1387828 = r1387775 ? r1387798 : r1387827;
return r1387828;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -4.073691083157782e+153Initial program 38.3
Taylor expanded around -inf 7.4
Simplified1.4
if -4.073691083157782e+153 < b < 2.4732339682798126e+117Initial program 8.6
rmApplied add-cube-cbrt8.8
Applied sqrt-prod8.8
Applied add-cube-cbrt8.9
Applied prod-diff8.9
rmApplied add-cube-cbrt8.9
Applied cbrt-prod8.9
if 2.4732339682798126e+117 < b Initial program 52.1
Taylor expanded around inf 10.1
Simplified3.1
Final simplification6.8
herbie shell --seed 2019169 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 1"
(if (>= b 0.0) (/ (- (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)) (/ (* 2.0 c) (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))))))