\begin{array}{l}
\mathbf{if}\;b \ge 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 -4.5754430728629 \cdot 10^{+59}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot \left(a \cdot \frac{c}{b} - b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 4.1432508585428765 \cdot 10^{+166}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c} \cdot \left(\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c} \cdot \sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)} + \left(-b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(b - \frac{a \cdot c}{b} \cdot 2\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r1892386 = b;
double r1892387 = 0.0;
bool r1892388 = r1892386 >= r1892387;
double r1892389 = 2.0;
double r1892390 = c;
double r1892391 = r1892389 * r1892390;
double r1892392 = -r1892386;
double r1892393 = r1892386 * r1892386;
double r1892394 = 4.0;
double r1892395 = a;
double r1892396 = r1892394 * r1892395;
double r1892397 = r1892396 * r1892390;
double r1892398 = r1892393 - r1892397;
double r1892399 = sqrt(r1892398);
double r1892400 = r1892392 - r1892399;
double r1892401 = r1892391 / r1892400;
double r1892402 = r1892392 + r1892399;
double r1892403 = r1892389 * r1892395;
double r1892404 = r1892402 / r1892403;
double r1892405 = r1892388 ? r1892401 : r1892404;
return r1892405;
}
double f(double a, double b, double c) {
double r1892406 = b;
double r1892407 = -4.5754430728629e+59;
bool r1892408 = r1892406 <= r1892407;
double r1892409 = 0.0;
bool r1892410 = r1892406 >= r1892409;
double r1892411 = 2.0;
double r1892412 = c;
double r1892413 = r1892411 * r1892412;
double r1892414 = -r1892406;
double r1892415 = r1892406 * r1892406;
double r1892416 = 4.0;
double r1892417 = a;
double r1892418 = r1892416 * r1892417;
double r1892419 = r1892418 * r1892412;
double r1892420 = r1892415 - r1892419;
double r1892421 = sqrt(r1892420);
double r1892422 = r1892414 - r1892421;
double r1892423 = r1892413 / r1892422;
double r1892424 = r1892412 / r1892406;
double r1892425 = r1892417 * r1892424;
double r1892426 = r1892425 - r1892406;
double r1892427 = r1892411 * r1892426;
double r1892428 = r1892411 * r1892417;
double r1892429 = r1892427 / r1892428;
double r1892430 = r1892410 ? r1892423 : r1892429;
double r1892431 = 4.1432508585428765e+166;
bool r1892432 = r1892406 <= r1892431;
double r1892433 = cbrt(r1892420);
double r1892434 = r1892433 * r1892433;
double r1892435 = r1892433 * r1892434;
double r1892436 = sqrt(r1892435);
double r1892437 = r1892436 + r1892414;
double r1892438 = r1892437 / r1892428;
double r1892439 = r1892410 ? r1892423 : r1892438;
double r1892440 = r1892417 * r1892412;
double r1892441 = r1892440 / r1892406;
double r1892442 = r1892441 * r1892411;
double r1892443 = r1892406 - r1892442;
double r1892444 = r1892414 - r1892443;
double r1892445 = r1892413 / r1892444;
double r1892446 = r1892421 + r1892414;
double r1892447 = r1892446 / r1892428;
double r1892448 = r1892410 ? r1892445 : r1892447;
double r1892449 = r1892432 ? r1892439 : r1892448;
double r1892450 = r1892408 ? r1892430 : r1892449;
return r1892450;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -4.5754430728629e+59Initial program 38.2
rmApplied add-sqr-sqrt38.2
Applied sqrt-prod38.2
Taylor expanded around -inf 11.4
Simplified5.9
if -4.5754430728629e+59 < b < 4.1432508585428765e+166Initial program 9.6
rmApplied add-cube-cbrt9.7
if 4.1432508585428765e+166 < b Initial program 37.9
Taylor expanded around inf 7.1
Final simplification8.6
herbie shell --seed 2019121
(FPCore (a b c)
:name "jeff quadratic root 2"
(if (>= b 0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))