\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 -4.50175066608075403047889481788174137359 \cdot 10^{151}:\\
\;\;\;\;\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{c \cdot 2}{\mathsf{fma}\left(-2, b, \frac{2 \cdot \left(a \cdot c\right)}{b}\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 2.216005534325192969068322454808916428103 \cdot 10^{86}:\\
\;\;\;\;\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{c \cdot 2}{\sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\sqrt{\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}} \cdot \sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}}} + \left(-b\right)}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{\mathsf{fma}\left(b, -2, \frac{2 \cdot a}{\frac{b}{c}}\right)}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}\\
\end{array}double f(double a, double b, double c) {
double r1161465 = b;
double r1161466 = 0.0;
bool r1161467 = r1161465 >= r1161466;
double r1161468 = -r1161465;
double r1161469 = r1161465 * r1161465;
double r1161470 = 4.0;
double r1161471 = a;
double r1161472 = r1161470 * r1161471;
double r1161473 = c;
double r1161474 = r1161472 * r1161473;
double r1161475 = r1161469 - r1161474;
double r1161476 = sqrt(r1161475);
double r1161477 = r1161468 - r1161476;
double r1161478 = 2.0;
double r1161479 = r1161478 * r1161471;
double r1161480 = r1161477 / r1161479;
double r1161481 = r1161478 * r1161473;
double r1161482 = r1161468 + r1161476;
double r1161483 = r1161481 / r1161482;
double r1161484 = r1161467 ? r1161480 : r1161483;
return r1161484;
}
double f(double a, double b, double c) {
double r1161485 = b;
double r1161486 = -4.501750666080754e+151;
bool r1161487 = r1161485 <= r1161486;
double r1161488 = 0.0;
bool r1161489 = r1161485 >= r1161488;
double r1161490 = -r1161485;
double r1161491 = r1161485 * r1161485;
double r1161492 = 4.0;
double r1161493 = a;
double r1161494 = r1161492 * r1161493;
double r1161495 = c;
double r1161496 = r1161494 * r1161495;
double r1161497 = r1161491 - r1161496;
double r1161498 = sqrt(r1161497);
double r1161499 = r1161490 - r1161498;
double r1161500 = 2.0;
double r1161501 = r1161500 * r1161493;
double r1161502 = r1161499 / r1161501;
double r1161503 = r1161495 * r1161500;
double r1161504 = -2.0;
double r1161505 = r1161493 * r1161495;
double r1161506 = r1161500 * r1161505;
double r1161507 = r1161506 / r1161485;
double r1161508 = fma(r1161504, r1161485, r1161507);
double r1161509 = r1161503 / r1161508;
double r1161510 = r1161489 ? r1161502 : r1161509;
double r1161511 = 2.216005534325193e+86;
bool r1161512 = r1161485 <= r1161511;
double r1161513 = sqrt(r1161498);
double r1161514 = cbrt(r1161497);
double r1161515 = r1161514 * r1161514;
double r1161516 = sqrt(r1161515);
double r1161517 = sqrt(r1161514);
double r1161518 = r1161516 * r1161517;
double r1161519 = sqrt(r1161518);
double r1161520 = r1161513 * r1161519;
double r1161521 = r1161520 + r1161490;
double r1161522 = r1161503 / r1161521;
double r1161523 = r1161489 ? r1161502 : r1161522;
double r1161524 = r1161485 / r1161495;
double r1161525 = r1161501 / r1161524;
double r1161526 = fma(r1161485, r1161504, r1161525);
double r1161527 = r1161526 / r1161501;
double r1161528 = r1161498 + r1161490;
double r1161529 = r1161503 / r1161528;
double r1161530 = r1161489 ? r1161527 : r1161529;
double r1161531 = r1161512 ? r1161523 : r1161530;
double r1161532 = r1161487 ? r1161510 : r1161531;
return r1161532;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -4.501750666080754e+151Initial program 37.9
rmApplied add-sqr-sqrt37.9
Applied sqrt-prod37.9
Taylor expanded around -inf 7.0
Simplified7.0
if -4.501750666080754e+151 < b < 2.216005534325193e+86Initial program 9.0
rmApplied add-sqr-sqrt9.0
Applied sqrt-prod9.1
rmApplied add-cube-cbrt9.1
Applied sqrt-prod9.1
if 2.216005534325193e+86 < b Initial program 44.1
rmApplied add-sqr-sqrt44.1
Applied sqrt-prod44.1
Taylor expanded around inf 9.6
Simplified4.1
Final simplification7.9
herbie shell --seed 2019170 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 1"
(if (>= b 0.0) (/ (- (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)) (/ (* 2.0 c) (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))))))