\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 -3.688468976067862917923558349816908192872 \cdot 10^{161}:\\
\;\;\;\;\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(2 \cdot \frac{a \cdot c}{b} - b\right) - b}\\
\end{array}\\
\mathbf{elif}\;b \le 1.822077811116170988501030000586664884528 \cdot 10^{78}:\\
\;\;\;\;\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}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}\\
\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}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}\\
\end{array}double f(double a, double b, double c) {
double r38417 = b;
double r38418 = 0.0;
bool r38419 = r38417 >= r38418;
double r38420 = -r38417;
double r38421 = r38417 * r38417;
double r38422 = 4.0;
double r38423 = a;
double r38424 = r38422 * r38423;
double r38425 = c;
double r38426 = r38424 * r38425;
double r38427 = r38421 - r38426;
double r38428 = sqrt(r38427);
double r38429 = r38420 - r38428;
double r38430 = 2.0;
double r38431 = r38430 * r38423;
double r38432 = r38429 / r38431;
double r38433 = r38430 * r38425;
double r38434 = r38420 + r38428;
double r38435 = r38433 / r38434;
double r38436 = r38419 ? r38432 : r38435;
return r38436;
}
double f(double a, double b, double c) {
double r38437 = b;
double r38438 = -3.688468976067863e+161;
bool r38439 = r38437 <= r38438;
double r38440 = 0.0;
bool r38441 = r38437 >= r38440;
double r38442 = -r38437;
double r38443 = r38437 * r38437;
double r38444 = 4.0;
double r38445 = a;
double r38446 = r38444 * r38445;
double r38447 = c;
double r38448 = r38446 * r38447;
double r38449 = r38443 - r38448;
double r38450 = sqrt(r38449);
double r38451 = r38442 - r38450;
double r38452 = 2.0;
double r38453 = r38452 * r38445;
double r38454 = r38451 / r38453;
double r38455 = r38452 * r38447;
double r38456 = r38445 * r38447;
double r38457 = r38456 / r38437;
double r38458 = r38452 * r38457;
double r38459 = r38458 - r38437;
double r38460 = r38459 - r38437;
double r38461 = r38455 / r38460;
double r38462 = r38441 ? r38454 : r38461;
double r38463 = 1.822077811116171e+78;
bool r38464 = r38437 <= r38463;
double r38465 = sqrt(r38450);
double r38466 = r38465 * r38465;
double r38467 = r38442 - r38466;
double r38468 = r38467 / r38453;
double r38469 = r38450 - r38437;
double r38470 = r38455 / r38469;
double r38471 = r38441 ? r38468 : r38470;
double r38472 = r38437 - r38458;
double r38473 = r38442 - r38472;
double r38474 = r38473 / r38453;
double r38475 = r38441 ? r38474 : r38470;
double r38476 = r38464 ? r38471 : r38475;
double r38477 = r38439 ? r38462 : r38476;
return r38477;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -3.688468976067863e+161Initial program 39.1
Simplified39.1
Taylor expanded around -inf 7.5
if -3.688468976067863e+161 < b < 1.822077811116171e+78Initial program 8.9
Simplified8.9
rmApplied add-sqr-sqrt8.9
Applied sqrt-prod9.0
if 1.822077811116171e+78 < b Initial program 43.0
Simplified43.0
Taylor expanded around inf 11.2
Final simplification9.1
herbie shell --seed 2019303
(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)))))))