\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.354463241095530386991161875851795265829 \cdot 10^{156}:\\
\;\;\;\;\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) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 1.527442601092759761187944926566644531594 \cdot 10^{96}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left|\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right| \cdot \sqrt{\sqrt[3]{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}\\
\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 r30907 = b;
double r30908 = 0.0;
bool r30909 = r30907 >= r30908;
double r30910 = 2.0;
double r30911 = c;
double r30912 = r30910 * r30911;
double r30913 = -r30907;
double r30914 = r30907 * r30907;
double r30915 = 4.0;
double r30916 = a;
double r30917 = r30915 * r30916;
double r30918 = r30917 * r30911;
double r30919 = r30914 - r30918;
double r30920 = sqrt(r30919);
double r30921 = r30913 - r30920;
double r30922 = r30912 / r30921;
double r30923 = r30913 + r30920;
double r30924 = r30910 * r30916;
double r30925 = r30923 / r30924;
double r30926 = r30909 ? r30922 : r30925;
return r30926;
}
double f(double a, double b, double c) {
double r30927 = b;
double r30928 = -1.3544632410955304e+156;
bool r30929 = r30927 <= r30928;
double r30930 = 0.0;
bool r30931 = r30927 >= r30930;
double r30932 = 2.0;
double r30933 = c;
double r30934 = r30932 * r30933;
double r30935 = -r30927;
double r30936 = r30927 * r30927;
double r30937 = 4.0;
double r30938 = a;
double r30939 = r30937 * r30938;
double r30940 = r30939 * r30933;
double r30941 = r30936 - r30940;
double r30942 = sqrt(r30941);
double r30943 = r30935 - r30942;
double r30944 = r30934 / r30943;
double r30945 = r30938 * r30933;
double r30946 = r30945 / r30927;
double r30947 = r30932 * r30946;
double r30948 = r30947 - r30927;
double r30949 = r30935 + r30948;
double r30950 = r30932 * r30938;
double r30951 = r30949 / r30950;
double r30952 = r30931 ? r30944 : r30951;
double r30953 = 1.5274426010927598e+96;
bool r30954 = r30927 <= r30953;
double r30955 = cbrt(r30941);
double r30956 = fabs(r30955);
double r30957 = sqrt(r30955);
double r30958 = r30956 * r30957;
double r30959 = r30935 - r30958;
double r30960 = r30934 / r30959;
double r30961 = r30935 + r30942;
double r30962 = r30961 / r30950;
double r30963 = r30931 ? r30960 : r30962;
double r30964 = r30927 - r30947;
double r30965 = r30935 - r30964;
double r30966 = r30934 / r30965;
double r30967 = r30931 ? r30966 : r30962;
double r30968 = r30954 ? r30963 : r30967;
double r30969 = r30929 ? r30952 : r30968;
return r30969;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3544632410955304e+156Initial program 64.0
Taylor expanded around -inf 10.6
if -1.3544632410955304e+156 < b < 1.5274426010927598e+96Initial program 8.6
rmApplied add-cube-cbrt8.9
Applied sqrt-prod8.9
Simplified8.9
if 1.5274426010927598e+96 < b Initial program 30.1
Taylor expanded around inf 6.6
Final simplification8.5
herbie shell --seed 2019291
(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))))