\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 -2.415824536209924848227828718073588940264 \cdot 10^{141}:\\
\;\;\;\;\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}{\mathsf{fma}\left(2, a \cdot \frac{c}{b}, -2 \cdot b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 1.025086302007438193349700948033617390491 \cdot 10^{144}:\\
\;\;\;\;\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) + \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}}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}{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}double f(double a, double b, double c) {
double r33783 = b;
double r33784 = 0.0;
bool r33785 = r33783 >= r33784;
double r33786 = -r33783;
double r33787 = r33783 * r33783;
double r33788 = 4.0;
double r33789 = a;
double r33790 = r33788 * r33789;
double r33791 = c;
double r33792 = r33790 * r33791;
double r33793 = r33787 - r33792;
double r33794 = sqrt(r33793);
double r33795 = r33786 - r33794;
double r33796 = 2.0;
double r33797 = r33796 * r33789;
double r33798 = r33795 / r33797;
double r33799 = r33796 * r33791;
double r33800 = r33786 + r33794;
double r33801 = r33799 / r33800;
double r33802 = r33785 ? r33798 : r33801;
return r33802;
}
double f(double a, double b, double c) {
double r33803 = b;
double r33804 = -2.415824536209925e+141;
bool r33805 = r33803 <= r33804;
double r33806 = 0.0;
bool r33807 = r33803 >= r33806;
double r33808 = -r33803;
double r33809 = r33803 * r33803;
double r33810 = 4.0;
double r33811 = a;
double r33812 = r33810 * r33811;
double r33813 = c;
double r33814 = r33812 * r33813;
double r33815 = r33809 - r33814;
double r33816 = sqrt(r33815);
double r33817 = r33808 - r33816;
double r33818 = 2.0;
double r33819 = r33818 * r33811;
double r33820 = r33817 / r33819;
double r33821 = r33818 * r33813;
double r33822 = r33813 / r33803;
double r33823 = r33811 * r33822;
double r33824 = -2.0;
double r33825 = r33824 * r33803;
double r33826 = fma(r33818, r33823, r33825);
double r33827 = r33821 / r33826;
double r33828 = r33807 ? r33820 : r33827;
double r33829 = 1.0250863020074382e+144;
bool r33830 = r33803 <= r33829;
double r33831 = cbrt(r33815);
double r33832 = fabs(r33831);
double r33833 = sqrt(r33831);
double r33834 = r33832 * r33833;
double r33835 = r33808 + r33834;
double r33836 = r33821 / r33835;
double r33837 = r33807 ? r33820 : r33836;
double r33838 = r33811 * r33813;
double r33839 = r33838 / r33803;
double r33840 = r33818 * r33839;
double r33841 = r33803 - r33840;
double r33842 = r33808 - r33841;
double r33843 = r33842 / r33819;
double r33844 = r33808 + r33816;
double r33845 = r33821 / r33844;
double r33846 = r33807 ? r33843 : r33845;
double r33847 = r33830 ? r33837 : r33846;
double r33848 = r33805 ? r33828 : r33847;
return r33848;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -2.415824536209925e+141Initial program 36.1
Taylor expanded around -inf 6.5
Simplified6.5
rmApplied *-un-lft-identity6.5
Applied times-frac1.2
Simplified1.2
if -2.415824536209925e+141 < b < 1.0250863020074382e+144Initial program 8.3
rmApplied add-cube-cbrt8.5
Applied sqrt-prod8.5
Simplified8.5
if 1.0250863020074382e+144 < b Initial program 59.6
Taylor expanded around inf 10.2
Final simplification7.2
herbie shell --seed 2019325 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 1"
:precision binary64
(if (>= b 0.0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))