\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.312255388883410786230973050020714403766 \cdot 10^{154}:\\
\;\;\;\;\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(2 \cdot \frac{a \cdot c}{b} - b\right) + \left(-b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 0.173897874048477174557802982235443778336:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\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}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}{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{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r1052343 = b;
double r1052344 = 0.0;
bool r1052345 = r1052343 >= r1052344;
double r1052346 = 2.0;
double r1052347 = c;
double r1052348 = r1052346 * r1052347;
double r1052349 = -r1052343;
double r1052350 = r1052343 * r1052343;
double r1052351 = 4.0;
double r1052352 = a;
double r1052353 = r1052351 * r1052352;
double r1052354 = r1052353 * r1052347;
double r1052355 = r1052350 - r1052354;
double r1052356 = sqrt(r1052355);
double r1052357 = r1052349 - r1052356;
double r1052358 = r1052348 / r1052357;
double r1052359 = r1052349 + r1052356;
double r1052360 = r1052346 * r1052352;
double r1052361 = r1052359 / r1052360;
double r1052362 = r1052345 ? r1052358 : r1052361;
return r1052362;
}
double f(double a, double b, double c) {
double r1052363 = b;
double r1052364 = -1.3122553888834108e+154;
bool r1052365 = r1052363 <= r1052364;
double r1052366 = 0.0;
bool r1052367 = r1052363 >= r1052366;
double r1052368 = 2.0;
double r1052369 = c;
double r1052370 = r1052368 * r1052369;
double r1052371 = -r1052363;
double r1052372 = r1052363 * r1052363;
double r1052373 = 4.0;
double r1052374 = a;
double r1052375 = r1052373 * r1052374;
double r1052376 = r1052375 * r1052369;
double r1052377 = r1052372 - r1052376;
double r1052378 = sqrt(r1052377);
double r1052379 = r1052371 - r1052378;
double r1052380 = r1052370 / r1052379;
double r1052381 = r1052374 * r1052369;
double r1052382 = r1052381 / r1052363;
double r1052383 = r1052368 * r1052382;
double r1052384 = r1052383 - r1052363;
double r1052385 = r1052384 + r1052371;
double r1052386 = r1052368 * r1052374;
double r1052387 = r1052385 / r1052386;
double r1052388 = r1052367 ? r1052380 : r1052387;
double r1052389 = 0.17389787404847717;
bool r1052390 = r1052363 <= r1052389;
double r1052391 = sqrt(r1052378);
double r1052392 = r1052391 * r1052391;
double r1052393 = r1052371 - r1052392;
double r1052394 = r1052370 / r1052393;
double r1052395 = r1052378 + r1052371;
double r1052396 = r1052395 / r1052386;
double r1052397 = r1052367 ? r1052394 : r1052396;
double r1052398 = r1052363 - r1052383;
double r1052399 = r1052371 - r1052398;
double r1052400 = r1052370 / r1052399;
double r1052401 = r1052367 ? r1052400 : r1052396;
double r1052402 = r1052390 ? r1052397 : r1052401;
double r1052403 = r1052365 ? r1052388 : r1052402;
return r1052403;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3122553888834108e+154Initial program 64.0
Taylor expanded around -inf 11.0
if -1.3122553888834108e+154 < b < 0.17389787404847717Initial program 9.4
rmApplied add-sqr-sqrt9.4
Applied sqrt-prod9.5
if 0.17389787404847717 < b Initial program 22.1
Taylor expanded around inf 8.2
Final simplification9.2
herbie shell --seed 2019168
(FPCore (a b c)
:name "jeff quadratic root 2"
(if (>= b 0.0) (/ (* 2.0 c) (- (- b) (sqrt (- (* b b) (* (* 4.0 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a))))