\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 -3.6617740146252804 \cdot 10^{128}:\\
\;\;\;\;\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.6651850726010021 \cdot 10^{84}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\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}}}{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{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}{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 r40334 = b;
double r40335 = 0.0;
bool r40336 = r40334 >= r40335;
double r40337 = -r40334;
double r40338 = r40334 * r40334;
double r40339 = 4.0;
double r40340 = a;
double r40341 = r40339 * r40340;
double r40342 = c;
double r40343 = r40341 * r40342;
double r40344 = r40338 - r40343;
double r40345 = sqrt(r40344);
double r40346 = r40337 - r40345;
double r40347 = 2.0;
double r40348 = r40347 * r40340;
double r40349 = r40346 / r40348;
double r40350 = r40347 * r40342;
double r40351 = r40337 + r40345;
double r40352 = r40350 / r40351;
double r40353 = r40336 ? r40349 : r40352;
return r40353;
}
double f(double a, double b, double c) {
double r40354 = b;
double r40355 = -3.6617740146252804e+128;
bool r40356 = r40354 <= r40355;
double r40357 = 0.0;
bool r40358 = r40354 >= r40357;
double r40359 = -r40354;
double r40360 = r40354 * r40354;
double r40361 = 4.0;
double r40362 = a;
double r40363 = r40361 * r40362;
double r40364 = c;
double r40365 = r40363 * r40364;
double r40366 = r40360 - r40365;
double r40367 = sqrt(r40366);
double r40368 = r40359 - r40367;
double r40369 = 2.0;
double r40370 = r40369 * r40362;
double r40371 = r40368 / r40370;
double r40372 = r40369 * r40364;
double r40373 = r40362 * r40364;
double r40374 = r40373 / r40354;
double r40375 = r40369 * r40374;
double r40376 = r40375 - r40354;
double r40377 = r40359 + r40376;
double r40378 = r40372 / r40377;
double r40379 = r40358 ? r40371 : r40378;
double r40380 = 3.665185072601002e+84;
bool r40381 = r40354 <= r40380;
double r40382 = cbrt(r40366);
double r40383 = fabs(r40382);
double r40384 = sqrt(r40382);
double r40385 = r40383 * r40384;
double r40386 = r40359 - r40385;
double r40387 = r40386 / r40370;
double r40388 = r40359 + r40367;
double r40389 = r40372 / r40388;
double r40390 = r40358 ? r40387 : r40389;
double r40391 = r40354 - r40375;
double r40392 = r40359 - r40391;
double r40393 = r40392 / r40370;
double r40394 = r40358 ? r40393 : r40389;
double r40395 = r40381 ? r40390 : r40394;
double r40396 = r40356 ? r40379 : r40395;
return r40396;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -3.6617740146252804e+128Initial program 33.7
Taylor expanded around -inf 7.3
if -3.6617740146252804e+128 < b < 3.665185072601002e+84Initial program 8.9
rmApplied add-cube-cbrt9.1
Applied sqrt-prod9.1
Simplified9.1
if 3.665185072601002e+84 < b Initial program 43.2
Taylor expanded around inf 10.1
Final simplification8.9
herbie shell --seed 2020056
(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)))))))