\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 -1.330125250050528 \cdot 10^{154}:\\
\;\;\;\;\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(2 \cdot \frac{a \cdot c}{b} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 3.29545095081340793 \cdot 10^{65}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\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}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{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 r52826 = b;
double r52827 = 0.0;
bool r52828 = r52826 >= r52827;
double r52829 = -r52826;
double r52830 = r52826 * r52826;
double r52831 = 4.0;
double r52832 = a;
double r52833 = r52831 * r52832;
double r52834 = c;
double r52835 = r52833 * r52834;
double r52836 = r52830 - r52835;
double r52837 = sqrt(r52836);
double r52838 = r52829 - r52837;
double r52839 = 2.0;
double r52840 = r52839 * r52832;
double r52841 = r52838 / r52840;
double r52842 = r52839 * r52834;
double r52843 = r52829 + r52837;
double r52844 = r52842 / r52843;
double r52845 = r52828 ? r52841 : r52844;
return r52845;
}
double f(double a, double b, double c) {
double r52846 = b;
double r52847 = -1.3301252500505283e+154;
bool r52848 = r52846 <= r52847;
double r52849 = 0.0;
bool r52850 = r52846 >= r52849;
double r52851 = -r52846;
double r52852 = r52846 * r52846;
double r52853 = 4.0;
double r52854 = a;
double r52855 = r52853 * r52854;
double r52856 = c;
double r52857 = r52855 * r52856;
double r52858 = r52852 - r52857;
double r52859 = sqrt(r52858);
double r52860 = r52851 - r52859;
double r52861 = 2.0;
double r52862 = r52861 * r52854;
double r52863 = r52860 / r52862;
double r52864 = r52861 * r52856;
double r52865 = r52854 * r52856;
double r52866 = r52865 / r52846;
double r52867 = r52861 * r52866;
double r52868 = r52867 - r52846;
double r52869 = r52851 + r52868;
double r52870 = r52864 / r52869;
double r52871 = r52850 ? r52863 : r52870;
double r52872 = 3.295450950813408e+65;
bool r52873 = r52846 <= r52872;
double r52874 = sqrt(r52859);
double r52875 = r52874 * r52874;
double r52876 = r52851 - r52875;
double r52877 = r52876 / r52862;
double r52878 = r52851 + r52859;
double r52879 = r52864 / r52878;
double r52880 = r52850 ? r52877 : r52879;
double r52881 = 2.0;
double r52882 = r52881 * r52846;
double r52883 = r52867 - r52882;
double r52884 = r52883 / r52862;
double r52885 = r52850 ? r52884 : r52879;
double r52886 = r52873 ? r52880 : r52885;
double r52887 = r52848 ? r52871 : r52886;
return r52887;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3301252500505283e+154Initial program 38.8
Taylor expanded around -inf 7.1
if -1.3301252500505283e+154 < b < 3.295450950813408e+65Initial program 8.3
rmApplied add-sqr-sqrt8.3
Applied sqrt-prod8.4
if 3.295450950813408e+65 < b Initial program 40.1
rmApplied add-sqr-sqrt40.1
Applied sqrt-prod40.2
Taylor expanded around inf 10.3
Final simplification8.6
herbie shell --seed 2020057 +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)))))))