\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 -6.64932438357787709 \cdot 10^{95}:\\
\;\;\;\;\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{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 6.573970333421884 \cdot 10^{98}:\\
\;\;\;\;\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}{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}\\
\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 r35799 = b;
double r35800 = 0.0;
bool r35801 = r35799 >= r35800;
double r35802 = 2.0;
double r35803 = c;
double r35804 = r35802 * r35803;
double r35805 = -r35799;
double r35806 = r35799 * r35799;
double r35807 = 4.0;
double r35808 = a;
double r35809 = r35807 * r35808;
double r35810 = r35809 * r35803;
double r35811 = r35806 - r35810;
double r35812 = sqrt(r35811);
double r35813 = r35805 - r35812;
double r35814 = r35804 / r35813;
double r35815 = r35805 + r35812;
double r35816 = r35802 * r35808;
double r35817 = r35815 / r35816;
double r35818 = r35801 ? r35814 : r35817;
return r35818;
}
double f(double a, double b, double c) {
double r35819 = b;
double r35820 = -6.649324383577877e+95;
bool r35821 = r35819 <= r35820;
double r35822 = 0.0;
bool r35823 = r35819 >= r35822;
double r35824 = 2.0;
double r35825 = c;
double r35826 = r35824 * r35825;
double r35827 = -r35819;
double r35828 = r35819 * r35819;
double r35829 = 4.0;
double r35830 = a;
double r35831 = r35829 * r35830;
double r35832 = r35831 * r35825;
double r35833 = r35828 - r35832;
double r35834 = sqrt(r35833);
double r35835 = r35827 - r35834;
double r35836 = r35826 / r35835;
double r35837 = r35830 * r35825;
double r35838 = r35837 / r35819;
double r35839 = r35824 * r35838;
double r35840 = 2.0;
double r35841 = r35840 * r35819;
double r35842 = r35839 - r35841;
double r35843 = r35824 * r35830;
double r35844 = r35842 / r35843;
double r35845 = r35823 ? r35836 : r35844;
double r35846 = 6.573970333421884e+98;
bool r35847 = r35819 <= r35846;
double r35848 = sqrt(r35834);
double r35849 = r35848 * r35848;
double r35850 = r35827 + r35849;
double r35851 = r35850 / r35843;
double r35852 = r35823 ? r35836 : r35851;
double r35853 = r35826 / r35842;
double r35854 = r35827 + r35834;
double r35855 = r35854 / r35843;
double r35856 = r35823 ? r35853 : r35855;
double r35857 = r35847 ? r35852 : r35856;
double r35858 = r35821 ? r35845 : r35857;
return r35858;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -6.649324383577877e+95Initial program 45.7
rmApplied add-sqr-sqrt45.7
Applied sqrt-prod45.7
Taylor expanded around -inf 11.6
if -6.649324383577877e+95 < b < 6.573970333421884e+98Initial program 9.1
rmApplied add-sqr-sqrt9.1
Applied sqrt-prod9.2
if 6.573970333421884e+98 < b Initial program 29.9
Taylor expanded around inf 7.0
Final simplification9.1
herbie shell --seed 2020065 +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))))