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



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
rmApplied add-sqr-sqrt28.8
Applied sqrt-prod28.9
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))))