\begin{array}{l}
\mathbf{if}\;b \ge 0.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 -1.3459740091915103 \cdot 10^{154}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.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) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le -1.078731019298903 \cdot 10^{-310}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(b - 2 \cdot \left(\left(\frac{a}{\sqrt{b}} \cdot \left(e^{\log \left(\sqrt[3]{\frac{c}{{b}^{\frac{1}{2}}}}\right)} \cdot \sqrt[3]{\frac{c}{{b}^{\frac{1}{2}}}}\right)\right) \cdot \sqrt[3]{\frac{c}{{b}^{\frac{1}{2}}}}\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 3.6883396060119998 \cdot 10^{69}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.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) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(b - 2 \cdot \left(\frac{a}{\sqrt{b}} \cdot \frac{c}{{b}^{\frac{1}{2}}}\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\mathsf{fma}\left(b, b, -\left(b \cdot b - \left(4 \cdot a\right) \cdot c\right)\right)}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r42395 = b;
double r42396 = 0.0;
bool r42397 = r42395 >= r42396;
double r42398 = 2.0;
double r42399 = c;
double r42400 = r42398 * r42399;
double r42401 = -r42395;
double r42402 = r42395 * r42395;
double r42403 = 4.0;
double r42404 = a;
double r42405 = r42403 * r42404;
double r42406 = r42405 * r42399;
double r42407 = r42402 - r42406;
double r42408 = sqrt(r42407);
double r42409 = r42401 - r42408;
double r42410 = r42400 / r42409;
double r42411 = r42401 + r42408;
double r42412 = r42398 * r42404;
double r42413 = r42411 / r42412;
double r42414 = r42397 ? r42410 : r42413;
return r42414;
}
double f(double a, double b, double c) {
double r42415 = b;
double r42416 = -1.3459740091915103e+154;
bool r42417 = r42415 <= r42416;
double r42418 = 0.0;
bool r42419 = r42415 >= r42418;
double r42420 = 2.0;
double r42421 = c;
double r42422 = r42420 * r42421;
double r42423 = -r42415;
double r42424 = r42415 * r42415;
double r42425 = 4.0;
double r42426 = a;
double r42427 = r42425 * r42426;
double r42428 = r42427 * r42421;
double r42429 = r42424 - r42428;
double r42430 = sqrt(r42429);
double r42431 = r42423 - r42430;
double r42432 = r42422 / r42431;
double r42433 = r42426 * r42421;
double r42434 = r42433 / r42415;
double r42435 = r42420 * r42434;
double r42436 = r42435 - r42415;
double r42437 = r42423 + r42436;
double r42438 = r42420 * r42426;
double r42439 = r42437 / r42438;
double r42440 = r42419 ? r42432 : r42439;
double r42441 = -1.0787310192989e-310;
bool r42442 = r42415 <= r42441;
double r42443 = sqrt(r42415);
double r42444 = r42426 / r42443;
double r42445 = 0.5;
double r42446 = pow(r42415, r42445);
double r42447 = r42421 / r42446;
double r42448 = cbrt(r42447);
double r42449 = log(r42448);
double r42450 = exp(r42449);
double r42451 = r42450 * r42448;
double r42452 = r42444 * r42451;
double r42453 = r42452 * r42448;
double r42454 = r42420 * r42453;
double r42455 = r42415 - r42454;
double r42456 = r42423 - r42455;
double r42457 = r42422 / r42456;
double r42458 = r42423 + r42430;
double r42459 = r42458 / r42438;
double r42460 = r42419 ? r42457 : r42459;
double r42461 = 3.688339606012e+69;
bool r42462 = r42415 <= r42461;
double r42463 = r42444 * r42447;
double r42464 = r42420 * r42463;
double r42465 = r42415 - r42464;
double r42466 = r42423 - r42465;
double r42467 = r42422 / r42466;
double r42468 = -r42429;
double r42469 = fma(r42415, r42415, r42468);
double r42470 = r42469 / r42431;
double r42471 = r42470 / r42438;
double r42472 = r42419 ? r42467 : r42471;
double r42473 = r42462 ? r42440 : r42472;
double r42474 = r42442 ? r42460 : r42473;
double r42475 = r42417 ? r42440 : r42474;
return r42475;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -1.3459740091915103e+154 or -1.0787310192989e-310 < b < 3.688339606012e+69Initial program 24.9
Taylor expanded around -inf 9.8
if -1.3459740091915103e+154 < b < -1.0787310192989e-310Initial program 8.6
Taylor expanded around inf 8.6
rmApplied add-sqr-sqrt8.6
Applied times-frac8.6
Simplified8.6
rmApplied add-cube-cbrt8.6
Applied associate-*r*8.6
rmApplied add-exp-log8.6
if 3.688339606012e+69 < b Initial program 28.9
Taylor expanded around inf 7.4
rmApplied add-sqr-sqrt7.4
Applied times-frac3.4
Simplified3.4
rmApplied flip-+3.4
Simplified3.4
Final simplification7.7
herbie shell --seed 2020020 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 2"
:precision binary64
(if (>= b 0.0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))