\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.8858229491725349 \cdot 10^{86}:\\
\;\;\;\;\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}{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}\\
\end{array}\\
\mathbf{elif}\;b \le 1.42999718571120756 \cdot 10^{88}:\\
\;\;\;\;\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{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\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 r40898 = b;
double r40899 = 0.0;
bool r40900 = r40898 >= r40899;
double r40901 = -r40898;
double r40902 = r40898 * r40898;
double r40903 = 4.0;
double r40904 = a;
double r40905 = r40903 * r40904;
double r40906 = c;
double r40907 = r40905 * r40906;
double r40908 = r40902 - r40907;
double r40909 = sqrt(r40908);
double r40910 = r40901 - r40909;
double r40911 = 2.0;
double r40912 = r40911 * r40904;
double r40913 = r40910 / r40912;
double r40914 = r40911 * r40906;
double r40915 = r40901 + r40909;
double r40916 = r40914 / r40915;
double r40917 = r40900 ? r40913 : r40916;
return r40917;
}
double f(double a, double b, double c) {
double r40918 = b;
double r40919 = -1.885822949172535e+86;
bool r40920 = r40918 <= r40919;
double r40921 = 0.0;
bool r40922 = r40918 >= r40921;
double r40923 = -r40918;
double r40924 = r40918 * r40918;
double r40925 = 4.0;
double r40926 = a;
double r40927 = r40925 * r40926;
double r40928 = c;
double r40929 = r40927 * r40928;
double r40930 = r40924 - r40929;
double r40931 = sqrt(r40930);
double r40932 = r40923 - r40931;
double r40933 = 2.0;
double r40934 = r40933 * r40926;
double r40935 = r40932 / r40934;
double r40936 = r40933 * r40928;
double r40937 = r40926 * r40928;
double r40938 = r40937 / r40918;
double r40939 = r40933 * r40938;
double r40940 = 2.0;
double r40941 = r40940 * r40918;
double r40942 = r40939 - r40941;
double r40943 = r40936 / r40942;
double r40944 = r40922 ? r40935 : r40943;
double r40945 = 1.4299971857112076e+88;
bool r40946 = r40918 <= r40945;
double r40947 = sqrt(r40931);
double r40948 = r40947 * r40947;
double r40949 = r40923 + r40948;
double r40950 = r40936 / r40949;
double r40951 = r40922 ? r40935 : r40950;
double r40952 = r40942 / r40934;
double r40953 = r40923 + r40931;
double r40954 = r40936 / r40953;
double r40955 = r40922 ? r40952 : r40954;
double r40956 = r40946 ? r40951 : r40955;
double r40957 = r40920 ? r40944 : r40956;
return r40957;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.885822949172535e+86Initial program 29.6
rmApplied add-sqr-sqrt29.6
Applied sqrt-prod29.6
Taylor expanded around -inf 6.8
if -1.885822949172535e+86 < b < 1.4299971857112076e+88Initial program 9.0
rmApplied add-sqr-sqrt9.0
Applied sqrt-prod9.1
if 1.4299971857112076e+88 < b Initial program 45.2
Taylor expanded around inf 10.1
Final simplification8.7
herbie shell --seed 2020042
(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)))))))