\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 -2.2572095326645574 \cdot 10^{165}:\\
\;\;\;\;\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 7.98976121086484385 \cdot 10^{108}:\\
\;\;\;\;\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 r43504 = b;
double r43505 = 0.0;
bool r43506 = r43504 >= r43505;
double r43507 = -r43504;
double r43508 = r43504 * r43504;
double r43509 = 4.0;
double r43510 = a;
double r43511 = r43509 * r43510;
double r43512 = c;
double r43513 = r43511 * r43512;
double r43514 = r43508 - r43513;
double r43515 = sqrt(r43514);
double r43516 = r43507 - r43515;
double r43517 = 2.0;
double r43518 = r43517 * r43510;
double r43519 = r43516 / r43518;
double r43520 = r43517 * r43512;
double r43521 = r43507 + r43515;
double r43522 = r43520 / r43521;
double r43523 = r43506 ? r43519 : r43522;
return r43523;
}
double f(double a, double b, double c) {
double r43524 = b;
double r43525 = -2.2572095326645574e+165;
bool r43526 = r43524 <= r43525;
double r43527 = 0.0;
bool r43528 = r43524 >= r43527;
double r43529 = -r43524;
double r43530 = r43524 * r43524;
double r43531 = 4.0;
double r43532 = a;
double r43533 = r43531 * r43532;
double r43534 = c;
double r43535 = r43533 * r43534;
double r43536 = r43530 - r43535;
double r43537 = sqrt(r43536);
double r43538 = r43529 - r43537;
double r43539 = 2.0;
double r43540 = r43539 * r43532;
double r43541 = r43538 / r43540;
double r43542 = r43539 * r43534;
double r43543 = r43532 * r43534;
double r43544 = r43543 / r43524;
double r43545 = r43539 * r43544;
double r43546 = r43545 - r43524;
double r43547 = r43529 + r43546;
double r43548 = r43542 / r43547;
double r43549 = r43528 ? r43541 : r43548;
double r43550 = 7.989761210864844e+108;
bool r43551 = r43524 <= r43550;
double r43552 = sqrt(r43537);
double r43553 = r43552 * r43552;
double r43554 = r43529 - r43553;
double r43555 = r43554 / r43540;
double r43556 = r43529 + r43537;
double r43557 = r43542 / r43556;
double r43558 = r43528 ? r43555 : r43557;
double r43559 = 2.0;
double r43560 = r43559 * r43524;
double r43561 = r43545 - r43560;
double r43562 = r43561 / r43540;
double r43563 = r43528 ? r43562 : r43557;
double r43564 = r43551 ? r43558 : r43563;
double r43565 = r43526 ? r43549 : r43564;
return r43565;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -2.2572095326645574e+165Initial program 36.2
Taylor expanded around -inf 6.2
if -2.2572095326645574e+165 < b < 7.989761210864844e+108Initial program 9.1
rmApplied add-sqr-sqrt9.1
Applied sqrt-prod9.2
if 7.989761210864844e+108 < b Initial program 48.9
rmApplied add-sqr-sqrt48.9
Applied sqrt-prod49.0
Taylor expanded around inf 9.8
Final simplification8.8
herbie shell --seed 2020047
(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)))))))