\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.23272213655908676 \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 5.57925007375450966 \cdot 10^{51}:\\
\;\;\;\;\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]{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}}}\\
\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 r42203 = b;
double r42204 = 0.0;
bool r42205 = r42203 >= r42204;
double r42206 = -r42203;
double r42207 = r42203 * r42203;
double r42208 = 4.0;
double r42209 = a;
double r42210 = r42208 * r42209;
double r42211 = c;
double r42212 = r42210 * r42211;
double r42213 = r42207 - r42212;
double r42214 = sqrt(r42213);
double r42215 = r42206 - r42214;
double r42216 = 2.0;
double r42217 = r42216 * r42209;
double r42218 = r42215 / r42217;
double r42219 = r42216 * r42211;
double r42220 = r42206 + r42214;
double r42221 = r42219 / r42220;
double r42222 = r42205 ? r42218 : r42221;
return r42222;
}
double f(double a, double b, double c) {
double r42223 = b;
double r42224 = -1.2327221365590868e+154;
bool r42225 = r42223 <= r42224;
double r42226 = 0.0;
bool r42227 = r42223 >= r42226;
double r42228 = -r42223;
double r42229 = r42223 * r42223;
double r42230 = 4.0;
double r42231 = a;
double r42232 = r42230 * r42231;
double r42233 = c;
double r42234 = r42232 * r42233;
double r42235 = r42229 - r42234;
double r42236 = sqrt(r42235);
double r42237 = r42228 - r42236;
double r42238 = 2.0;
double r42239 = r42238 * r42231;
double r42240 = r42237 / r42239;
double r42241 = r42238 * r42233;
double r42242 = r42231 * r42233;
double r42243 = r42242 / r42223;
double r42244 = r42238 * r42243;
double r42245 = r42244 - r42223;
double r42246 = r42228 + r42245;
double r42247 = r42241 / r42246;
double r42248 = r42227 ? r42240 : r42247;
double r42249 = 5.5792500737545097e+51;
bool r42250 = r42223 <= r42249;
double r42251 = cbrt(r42235);
double r42252 = fabs(r42251);
double r42253 = sqrt(r42251);
double r42254 = r42252 * r42253;
double r42255 = r42228 + r42254;
double r42256 = r42241 / r42255;
double r42257 = r42227 ? r42240 : r42256;
double r42258 = 2.0;
double r42259 = r42258 * r42223;
double r42260 = r42244 - r42259;
double r42261 = r42260 / r42239;
double r42262 = r42228 + r42236;
double r42263 = r42241 / r42262;
double r42264 = r42227 ? r42261 : r42263;
double r42265 = r42250 ? r42257 : r42264;
double r42266 = r42225 ? r42248 : r42265;
return r42266;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.2327221365590868e+154Initial program 39.6
Taylor expanded around -inf 6.0
if -1.2327221365590868e+154 < b < 5.5792500737545097e+51Initial program 8.5
rmApplied add-cube-cbrt8.8
Applied sqrt-prod8.8
Simplified8.8
if 5.5792500737545097e+51 < b Initial program 38.1
rmApplied add-sqr-sqrt38.1
Applied sqrt-prod38.2
Taylor expanded around inf 11.2
Final simplification8.8
herbie shell --seed 2020018 +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)))))))