\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.367568263477709863540308694818264401956 \cdot 10^{124}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;-2 \cdot \frac{c}{b}\\
\mathbf{else}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\end{array}\\
\mathbf{elif}\;b \le 2098947641.3561494350433349609375:\\
\;\;\;\;\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{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\sqrt{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 r32720 = b;
double r32721 = 0.0;
bool r32722 = r32720 >= r32721;
double r32723 = 2.0;
double r32724 = c;
double r32725 = r32723 * r32724;
double r32726 = -r32720;
double r32727 = r32720 * r32720;
double r32728 = 4.0;
double r32729 = a;
double r32730 = r32728 * r32729;
double r32731 = r32730 * r32724;
double r32732 = r32727 - r32731;
double r32733 = sqrt(r32732);
double r32734 = r32726 - r32733;
double r32735 = r32725 / r32734;
double r32736 = r32726 + r32733;
double r32737 = r32723 * r32729;
double r32738 = r32736 / r32737;
double r32739 = r32722 ? r32735 : r32738;
return r32739;
}
double f(double a, double b, double c) {
double r32740 = b;
double r32741 = -1.3675682634777099e+124;
bool r32742 = r32740 <= r32741;
double r32743 = 0.0;
bool r32744 = r32740 >= r32743;
double r32745 = -2.0;
double r32746 = c;
double r32747 = r32746 / r32740;
double r32748 = r32745 * r32747;
double r32749 = 1.0;
double r32750 = a;
double r32751 = r32740 / r32750;
double r32752 = r32747 - r32751;
double r32753 = r32749 * r32752;
double r32754 = r32744 ? r32748 : r32753;
double r32755 = 2098947641.3561494;
bool r32756 = r32740 <= r32755;
double r32757 = 2.0;
double r32758 = r32757 * r32746;
double r32759 = -r32740;
double r32760 = r32740 * r32740;
double r32761 = 4.0;
double r32762 = r32761 * r32750;
double r32763 = r32762 * r32746;
double r32764 = r32760 - r32763;
double r32765 = sqrt(r32764);
double r32766 = r32759 - r32765;
double r32767 = r32758 / r32766;
double r32768 = sqrt(r32765);
double r32769 = r32768 * r32768;
double r32770 = r32759 + r32769;
double r32771 = r32757 * r32750;
double r32772 = r32770 / r32771;
double r32773 = r32744 ? r32767 : r32772;
double r32774 = r32750 * r32746;
double r32775 = r32774 / r32740;
double r32776 = r32757 * r32775;
double r32777 = r32740 - r32776;
double r32778 = r32759 - r32777;
double r32779 = r32758 / r32778;
double r32780 = r32759 + r32765;
double r32781 = r32780 / r32771;
double r32782 = r32744 ? r32779 : r32781;
double r32783 = r32756 ? r32773 : r32782;
double r32784 = r32742 ? r32754 : r32783;
return r32784;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3675682634777099e+124Initial program 54.3
Taylor expanded around -inf 10.3
Taylor expanded around 0 2.7
Simplified2.7
Taylor expanded around inf 2.7
if -1.3675682634777099e+124 < b < 2098947641.3561494Initial program 10.0
rmApplied add-sqr-sqrt10.0
Applied sqrt-prod10.1
if 2098947641.3561494 < b Initial program 23.5
Taylor expanded around inf 8.6
Final simplification8.7
herbie shell --seed 2019209 +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))))