\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 -6.8563483521743725 \cdot 10^{121}:\\
\;\;\;\;\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 6.11692797249710472 \cdot 10^{145}:\\
\;\;\;\;\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]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\right) \cdot \sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - 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 r55924 = b;
double r55925 = 0.0;
bool r55926 = r55924 >= r55925;
double r55927 = -r55924;
double r55928 = r55924 * r55924;
double r55929 = 4.0;
double r55930 = a;
double r55931 = r55929 * r55930;
double r55932 = c;
double r55933 = r55931 * r55932;
double r55934 = r55928 - r55933;
double r55935 = sqrt(r55934);
double r55936 = r55927 - r55935;
double r55937 = 2.0;
double r55938 = r55937 * r55930;
double r55939 = r55936 / r55938;
double r55940 = r55937 * r55932;
double r55941 = r55927 + r55935;
double r55942 = r55940 / r55941;
double r55943 = r55926 ? r55939 : r55942;
return r55943;
}
double f(double a, double b, double c) {
double r55944 = b;
double r55945 = -6.8563483521743725e+121;
bool r55946 = r55944 <= r55945;
double r55947 = 0.0;
bool r55948 = r55944 >= r55947;
double r55949 = -r55944;
double r55950 = r55944 * r55944;
double r55951 = 4.0;
double r55952 = a;
double r55953 = r55951 * r55952;
double r55954 = c;
double r55955 = r55953 * r55954;
double r55956 = r55950 - r55955;
double r55957 = sqrt(r55956);
double r55958 = r55949 - r55957;
double r55959 = 2.0;
double r55960 = r55959 * r55952;
double r55961 = r55958 / r55960;
double r55962 = r55959 * r55954;
double r55963 = r55952 * r55954;
double r55964 = r55963 / r55944;
double r55965 = r55959 * r55964;
double r55966 = 2.0;
double r55967 = r55966 * r55944;
double r55968 = r55965 - r55967;
double r55969 = r55962 / r55968;
double r55970 = r55948 ? r55961 : r55969;
double r55971 = 6.116927972497105e+145;
bool r55972 = r55944 <= r55971;
double r55973 = cbrt(r55957);
double r55974 = r55973 * r55973;
double r55975 = r55974 * r55973;
double r55976 = r55949 + r55975;
double r55977 = r55962 / r55976;
double r55978 = r55948 ? r55961 : r55977;
double r55979 = r55949 - r55944;
double r55980 = r55979 / r55960;
double r55981 = r55949 + r55957;
double r55982 = r55962 / r55981;
double r55983 = r55948 ? r55980 : r55982;
double r55984 = r55972 ? r55978 : r55983;
double r55985 = r55946 ? r55970 : r55984;
return r55985;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -6.8563483521743725e+121Initial program 31.8
Taylor expanded around -inf 6.0
if -6.8563483521743725e+121 < b < 6.116927972497105e+145Initial program 8.3
rmApplied add-cube-cbrt8.7
if 6.116927972497105e+145 < b Initial program 60.8
rmApplied add-exp-log61.1
rmApplied pow161.1
Applied log-pow61.1
Applied exp-prod61.1
Simplified61.1
Taylor expanded around inf 3.1
Final simplification7.4
herbie shell --seed 2020049 +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)))))))