\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.34945082225245682 \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{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 1.81055510267725717 \cdot 10^{91}:\\
\;\;\;\;\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 r41405 = b;
double r41406 = 0.0;
bool r41407 = r41405 >= r41406;
double r41408 = 2.0;
double r41409 = c;
double r41410 = r41408 * r41409;
double r41411 = -r41405;
double r41412 = r41405 * r41405;
double r41413 = 4.0;
double r41414 = a;
double r41415 = r41413 * r41414;
double r41416 = r41415 * r41409;
double r41417 = r41412 - r41416;
double r41418 = sqrt(r41417);
double r41419 = r41411 - r41418;
double r41420 = r41410 / r41419;
double r41421 = r41411 + r41418;
double r41422 = r41408 * r41414;
double r41423 = r41421 / r41422;
double r41424 = r41407 ? r41420 : r41423;
return r41424;
}
double f(double a, double b, double c) {
double r41425 = b;
double r41426 = -1.3494508222524568e+154;
bool r41427 = r41425 <= r41426;
double r41428 = 0.0;
bool r41429 = r41425 >= r41428;
double r41430 = 2.0;
double r41431 = c;
double r41432 = r41430 * r41431;
double r41433 = -r41425;
double r41434 = r41425 * r41425;
double r41435 = 4.0;
double r41436 = a;
double r41437 = r41435 * r41436;
double r41438 = r41437 * r41431;
double r41439 = r41434 - r41438;
double r41440 = sqrt(r41439);
double r41441 = r41433 - r41440;
double r41442 = r41432 / r41441;
double r41443 = r41436 * r41431;
double r41444 = r41443 / r41425;
double r41445 = r41430 * r41444;
double r41446 = 2.0;
double r41447 = r41446 * r41425;
double r41448 = r41445 - r41447;
double r41449 = r41430 * r41436;
double r41450 = r41448 / r41449;
double r41451 = r41429 ? r41442 : r41450;
double r41452 = 1.810555102677257e+91;
bool r41453 = r41425 <= r41452;
double r41454 = sqrt(r41440);
double r41455 = r41454 * r41454;
double r41456 = r41433 - r41455;
double r41457 = r41432 / r41456;
double r41458 = r41433 + r41440;
double r41459 = r41458 / r41449;
double r41460 = r41429 ? r41457 : r41459;
double r41461 = r41432 / r41448;
double r41462 = r41429 ? r41461 : r41459;
double r41463 = r41453 ? r41460 : r41462;
double r41464 = r41427 ? r41451 : r41463;
return r41464;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3494508222524568e+154Initial program 64.0
Taylor expanded around -inf 11.3
if -1.3494508222524568e+154 < b < 1.810555102677257e+91Initial program 8.9
rmApplied add-sqr-sqrt8.9
Applied sqrt-prod9.0
if 1.810555102677257e+91 < b Initial program 28.9
Taylor expanded around inf 6.5
Final simplification8.6
herbie shell --seed 2020035
(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))))