\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.56941706508999029 \cdot 10^{163}:\\
\;\;\;\;\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.0963004586600293 \cdot 10^{99}:\\
\;\;\;\;\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{\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 r30386 = b;
double r30387 = 0.0;
bool r30388 = r30386 >= r30387;
double r30389 = 2.0;
double r30390 = c;
double r30391 = r30389 * r30390;
double r30392 = -r30386;
double r30393 = r30386 * r30386;
double r30394 = 4.0;
double r30395 = a;
double r30396 = r30394 * r30395;
double r30397 = r30396 * r30390;
double r30398 = r30393 - r30397;
double r30399 = sqrt(r30398);
double r30400 = r30392 - r30399;
double r30401 = r30391 / r30400;
double r30402 = r30392 + r30399;
double r30403 = r30389 * r30395;
double r30404 = r30402 / r30403;
double r30405 = r30388 ? r30401 : r30404;
return r30405;
}
double f(double a, double b, double c) {
double r30406 = b;
double r30407 = -1.5694170650899903e+163;
bool r30408 = r30406 <= r30407;
double r30409 = 0.0;
bool r30410 = r30406 >= r30409;
double r30411 = 2.0;
double r30412 = c;
double r30413 = r30411 * r30412;
double r30414 = -r30406;
double r30415 = r30406 * r30406;
double r30416 = 4.0;
double r30417 = a;
double r30418 = r30416 * r30417;
double r30419 = r30418 * r30412;
double r30420 = r30415 - r30419;
double r30421 = sqrt(r30420);
double r30422 = r30414 - r30421;
double r30423 = r30413 / r30422;
double r30424 = r30417 * r30412;
double r30425 = r30424 / r30406;
double r30426 = r30411 * r30425;
double r30427 = r30426 - r30406;
double r30428 = r30414 + r30427;
double r30429 = r30411 * r30417;
double r30430 = r30428 / r30429;
double r30431 = r30410 ? r30423 : r30430;
double r30432 = 1.0963004586600293e+99;
bool r30433 = r30406 <= r30432;
double r30434 = sqrt(r30421);
double r30435 = r30434 * r30434;
double r30436 = r30414 - r30435;
double r30437 = r30413 / r30436;
double r30438 = r30414 + r30421;
double r30439 = r30438 / r30429;
double r30440 = r30410 ? r30437 : r30439;
double r30441 = r30406 - r30426;
double r30442 = r30414 - r30441;
double r30443 = r30413 / r30442;
double r30444 = r30410 ? r30443 : r30439;
double r30445 = r30433 ? r30440 : r30444;
double r30446 = r30408 ? r30431 : r30445;
return r30446;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.5694170650899903e+163Initial program 64.0
Taylor expanded around -inf 12.9
if -1.5694170650899903e+163 < b < 1.0963004586600293e+99Initial program 9.5
rmApplied add-sqr-sqrt9.5
Applied sqrt-prod9.6
if 1.0963004586600293e+99 < b Initial program 28.8
Taylor expanded around inf 6.8
Final simplification9.2
herbie shell --seed 2020060
(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))))