\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 -1.332628512181745325007346471841058575164 \cdot 10^{154}:\\
\;\;\;\;\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 5.663542808125346972065949754166106839438 \cdot 10^{107}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\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}}}{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 r38489 = b;
double r38490 = 0.0;
bool r38491 = r38489 >= r38490;
double r38492 = -r38489;
double r38493 = r38489 * r38489;
double r38494 = 4.0;
double r38495 = a;
double r38496 = r38494 * r38495;
double r38497 = c;
double r38498 = r38496 * r38497;
double r38499 = r38493 - r38498;
double r38500 = sqrt(r38499);
double r38501 = r38492 - r38500;
double r38502 = 2.0;
double r38503 = r38502 * r38495;
double r38504 = r38501 / r38503;
double r38505 = r38502 * r38497;
double r38506 = r38492 + r38500;
double r38507 = r38505 / r38506;
double r38508 = r38491 ? r38504 : r38507;
return r38508;
}
double f(double a, double b, double c) {
double r38509 = b;
double r38510 = -1.3326285121817453e+154;
bool r38511 = r38509 <= r38510;
double r38512 = 0.0;
bool r38513 = r38509 >= r38512;
double r38514 = -r38509;
double r38515 = r38509 * r38509;
double r38516 = 4.0;
double r38517 = a;
double r38518 = r38516 * r38517;
double r38519 = c;
double r38520 = r38518 * r38519;
double r38521 = r38515 - r38520;
double r38522 = sqrt(r38521);
double r38523 = r38514 - r38522;
double r38524 = 2.0;
double r38525 = r38524 * r38517;
double r38526 = r38523 / r38525;
double r38527 = r38524 * r38519;
double r38528 = r38517 * r38519;
double r38529 = r38528 / r38509;
double r38530 = r38524 * r38529;
double r38531 = r38530 - r38509;
double r38532 = r38514 + r38531;
double r38533 = r38527 / r38532;
double r38534 = r38513 ? r38526 : r38533;
double r38535 = 5.663542808125347e+107;
bool r38536 = r38509 <= r38535;
double r38537 = sqrt(r38522);
double r38538 = r38537 * r38537;
double r38539 = r38514 - r38538;
double r38540 = r38539 / r38525;
double r38541 = r38514 + r38522;
double r38542 = r38527 / r38541;
double r38543 = r38513 ? r38540 : r38542;
double r38544 = r38509 - r38530;
double r38545 = r38514 - r38544;
double r38546 = r38545 / r38525;
double r38547 = r38513 ? r38546 : r38542;
double r38548 = r38536 ? r38543 : r38547;
double r38549 = r38511 ? r38534 : r38548;
return r38549;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3326285121817453e+154Initial program 38.8
Taylor expanded around -inf 6.9
if -1.3326285121817453e+154 < b < 5.663542808125347e+107Initial program 8.4
rmApplied add-sqr-sqrt8.4
Applied sqrt-prod8.5
if 5.663542808125347e+107 < b Initial program 48.1
Taylor expanded around inf 10.0
Final simplification8.5
herbie shell --seed 2019352
(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)))))))