\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.330125250050528 \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 3.29545095081340793 \cdot 10^{65}:\\
\;\;\;\;\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{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{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 r37458 = b;
double r37459 = 0.0;
bool r37460 = r37458 >= r37459;
double r37461 = -r37458;
double r37462 = r37458 * r37458;
double r37463 = 4.0;
double r37464 = a;
double r37465 = r37463 * r37464;
double r37466 = c;
double r37467 = r37465 * r37466;
double r37468 = r37462 - r37467;
double r37469 = sqrt(r37468);
double r37470 = r37461 - r37469;
double r37471 = 2.0;
double r37472 = r37471 * r37464;
double r37473 = r37470 / r37472;
double r37474 = r37471 * r37466;
double r37475 = r37461 + r37469;
double r37476 = r37474 / r37475;
double r37477 = r37460 ? r37473 : r37476;
return r37477;
}
double f(double a, double b, double c) {
double r37478 = b;
double r37479 = -1.3301252500505283e+154;
bool r37480 = r37478 <= r37479;
double r37481 = 0.0;
bool r37482 = r37478 >= r37481;
double r37483 = -r37478;
double r37484 = r37478 * r37478;
double r37485 = 4.0;
double r37486 = a;
double r37487 = r37485 * r37486;
double r37488 = c;
double r37489 = r37487 * r37488;
double r37490 = r37484 - r37489;
double r37491 = sqrt(r37490);
double r37492 = r37483 - r37491;
double r37493 = 2.0;
double r37494 = r37493 * r37486;
double r37495 = r37492 / r37494;
double r37496 = r37493 * r37488;
double r37497 = r37486 * r37488;
double r37498 = r37497 / r37478;
double r37499 = r37493 * r37498;
double r37500 = r37499 - r37478;
double r37501 = r37483 + r37500;
double r37502 = r37496 / r37501;
double r37503 = r37482 ? r37495 : r37502;
double r37504 = 3.295450950813408e+65;
bool r37505 = r37478 <= r37504;
double r37506 = sqrt(r37491);
double r37507 = r37506 * r37506;
double r37508 = r37483 - r37507;
double r37509 = r37508 / r37494;
double r37510 = r37483 + r37491;
double r37511 = r37496 / r37510;
double r37512 = r37482 ? r37509 : r37511;
double r37513 = 2.0;
double r37514 = r37513 * r37478;
double r37515 = r37499 - r37514;
double r37516 = r37515 / r37494;
double r37517 = r37482 ? r37516 : r37511;
double r37518 = r37505 ? r37512 : r37517;
double r37519 = r37480 ? r37503 : r37518;
return r37519;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3301252500505283e+154Initial program 38.8
Taylor expanded around -inf 7.1
if -1.3301252500505283e+154 < b < 3.295450950813408e+65Initial program 8.3
rmApplied add-sqr-sqrt8.3
Applied sqrt-prod8.4
if 3.295450950813408e+65 < b Initial program 40.1
rmApplied add-sqr-sqrt40.1
Applied sqrt-prod40.2
Taylor expanded around inf 10.3
Final simplification8.6
herbie shell --seed 2020057
(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)))))))