\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 -9.72071777755916 \cdot 10^{58}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}\\
\end{array}\\
\mathbf{elif}\;b \le 3.9113328923616163 \cdot 10^{98}:\\
\;\;\;\;\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|\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right| \cdot \sqrt{\left(\sqrt[3]{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt[3]{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}}\right) \cdot \sqrt[3]{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}}}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\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 r35396 = b;
double r35397 = 0.0;
bool r35398 = r35396 >= r35397;
double r35399 = -r35396;
double r35400 = r35396 * r35396;
double r35401 = 4.0;
double r35402 = a;
double r35403 = r35401 * r35402;
double r35404 = c;
double r35405 = r35403 * r35404;
double r35406 = r35400 - r35405;
double r35407 = sqrt(r35406);
double r35408 = r35399 - r35407;
double r35409 = 2.0;
double r35410 = r35409 * r35402;
double r35411 = r35408 / r35410;
double r35412 = r35409 * r35404;
double r35413 = r35399 + r35407;
double r35414 = r35412 / r35413;
double r35415 = r35398 ? r35411 : r35414;
return r35415;
}
double f(double a, double b, double c) {
double r35416 = b;
double r35417 = -9.72071777755916e+58;
bool r35418 = r35416 <= r35417;
double r35419 = 0.0;
bool r35420 = r35416 >= r35419;
double r35421 = 2.0;
double r35422 = a;
double r35423 = c;
double r35424 = r35422 * r35423;
double r35425 = r35424 / r35416;
double r35426 = r35421 * r35425;
double r35427 = 2.0;
double r35428 = r35427 * r35416;
double r35429 = r35426 - r35428;
double r35430 = r35421 * r35422;
double r35431 = r35429 / r35430;
double r35432 = r35421 * r35423;
double r35433 = r35432 / r35429;
double r35434 = r35420 ? r35431 : r35433;
double r35435 = 3.911332892361616e+98;
bool r35436 = r35416 <= r35435;
double r35437 = -r35416;
double r35438 = r35416 * r35416;
double r35439 = 4.0;
double r35440 = r35439 * r35422;
double r35441 = r35440 * r35423;
double r35442 = r35438 - r35441;
double r35443 = sqrt(r35442);
double r35444 = r35437 - r35443;
double r35445 = r35444 / r35430;
double r35446 = cbrt(r35442);
double r35447 = fabs(r35446);
double r35448 = cbrt(r35446);
double r35449 = r35448 * r35448;
double r35450 = r35449 * r35448;
double r35451 = sqrt(r35450);
double r35452 = r35447 * r35451;
double r35453 = r35437 + r35452;
double r35454 = r35432 / r35453;
double r35455 = r35420 ? r35445 : r35454;
double r35456 = 1.0;
double r35457 = r35423 / r35416;
double r35458 = r35416 / r35422;
double r35459 = r35457 - r35458;
double r35460 = r35456 * r35459;
double r35461 = r35437 + r35443;
double r35462 = r35432 / r35461;
double r35463 = r35420 ? r35460 : r35462;
double r35464 = r35436 ? r35455 : r35463;
double r35465 = r35418 ? r35434 : r35464;
return r35465;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -9.72071777755916e+58Initial program 26.0
Taylor expanded around inf 26.0
Taylor expanded around -inf 6.8
if -9.72071777755916e+58 < b < 3.911332892361616e+98Initial program 9.4
rmApplied add-cube-cbrt9.6
Applied sqrt-prod9.6
Simplified9.6
rmApplied add-cube-cbrt9.7
if 3.911332892361616e+98 < b Initial program 47.8
Taylor expanded around inf 10.4
Taylor expanded around 0 3.7
Simplified3.7
Final simplification8.0
herbie shell --seed 2019195
(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)))))))