\begin{array}{l}
\mathbf{if}\;b \ge 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.9081232567651569 \cdot 10^{+149}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{\sqrt{\mathsf{fma}\left(c, a \cdot -4, b \cdot b\right)}} \cdot \sqrt{\sqrt{\sqrt[3]{\mathsf{fma}\left(c, a \cdot -4, b \cdot b\right)} \cdot \sqrt[3]{\mathsf{fma}\left(c, a \cdot -4, b \cdot b\right)}} \cdot \sqrt{\sqrt[3]{\left(\sqrt[3]{\mathsf{fma}\left(c, a \cdot -4, b \cdot b\right)} \cdot \sqrt[3]{\mathsf{fma}\left(c, a \cdot -4, b \cdot b\right)}\right) \cdot \sqrt[3]{\mathsf{fma}\left(c, a \cdot -4, b \cdot b\right)}}}}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{\frac{\sqrt{\mathsf{fma}\left(c, a \cdot -4, b \cdot b\right)} - b}{2}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{\left(\frac{a}{\frac{b}{c}} - b\right) \cdot 2}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{\frac{\sqrt{\mathsf{fma}\left(c, a \cdot -4, b \cdot b\right)} - b}{2}}\\
\end{array}double f(double a, double b, double c) {
double r1004420 = b;
double r1004421 = 0.0;
bool r1004422 = r1004420 >= r1004421;
double r1004423 = -r1004420;
double r1004424 = r1004420 * r1004420;
double r1004425 = 4.0;
double r1004426 = a;
double r1004427 = r1004425 * r1004426;
double r1004428 = c;
double r1004429 = r1004427 * r1004428;
double r1004430 = r1004424 - r1004429;
double r1004431 = sqrt(r1004430);
double r1004432 = r1004423 - r1004431;
double r1004433 = 2.0;
double r1004434 = r1004433 * r1004426;
double r1004435 = r1004432 / r1004434;
double r1004436 = r1004433 * r1004428;
double r1004437 = r1004423 + r1004431;
double r1004438 = r1004436 / r1004437;
double r1004439 = r1004422 ? r1004435 : r1004438;
return r1004439;
}
double f(double a, double b, double c) {
double r1004440 = b;
double r1004441 = 1.9081232567651569e+149;
bool r1004442 = r1004440 <= r1004441;
double r1004443 = 0.0;
bool r1004444 = r1004440 >= r1004443;
double r1004445 = -r1004440;
double r1004446 = c;
double r1004447 = a;
double r1004448 = -4.0;
double r1004449 = r1004447 * r1004448;
double r1004450 = r1004440 * r1004440;
double r1004451 = fma(r1004446, r1004449, r1004450);
double r1004452 = sqrt(r1004451);
double r1004453 = sqrt(r1004452);
double r1004454 = cbrt(r1004451);
double r1004455 = r1004454 * r1004454;
double r1004456 = sqrt(r1004455);
double r1004457 = r1004455 * r1004454;
double r1004458 = cbrt(r1004457);
double r1004459 = sqrt(r1004458);
double r1004460 = r1004456 * r1004459;
double r1004461 = sqrt(r1004460);
double r1004462 = r1004453 * r1004461;
double r1004463 = r1004445 - r1004462;
double r1004464 = 2.0;
double r1004465 = r1004464 * r1004447;
double r1004466 = r1004463 / r1004465;
double r1004467 = r1004452 - r1004440;
double r1004468 = r1004467 / r1004464;
double r1004469 = r1004446 / r1004468;
double r1004470 = r1004444 ? r1004466 : r1004469;
double r1004471 = r1004440 / r1004446;
double r1004472 = r1004447 / r1004471;
double r1004473 = r1004472 - r1004440;
double r1004474 = r1004473 * r1004464;
double r1004475 = r1004474 / r1004465;
double r1004476 = r1004444 ? r1004475 : r1004469;
double r1004477 = r1004442 ? r1004470 : r1004476;
return r1004477;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 1.9081232567651569e+149Initial program 14.8
Simplified14.8
rmApplied add-sqr-sqrt14.8
Applied sqrt-prod14.9
rmApplied add-cube-cbrt14.9
Applied sqrt-prod14.9
rmApplied add-cbrt-cube15.0
if 1.9081232567651569e+149 < b Initial program 58.8
Simplified58.7
Taylor expanded around inf 12.1
Simplified2.8
Final simplification13.6
herbie shell --seed 2019139 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 1"
(if (>= b 0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))