\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 -1.359648585223011851077522396013723801172 \cdot 10^{154}:\\
\;\;\;\;\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(2 \cdot \frac{a \cdot c}{b} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 2.125563079851438727208684227808951636731 \cdot 10^{135}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{\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) \cdot \sqrt[3]{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}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}{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}double f(double a, double b, double c) {
double r32404 = b;
double r32405 = 0.0;
bool r32406 = r32404 >= r32405;
double r32407 = -r32404;
double r32408 = r32404 * r32404;
double r32409 = 4.0;
double r32410 = a;
double r32411 = r32409 * r32410;
double r32412 = c;
double r32413 = r32411 * r32412;
double r32414 = r32408 - r32413;
double r32415 = sqrt(r32414);
double r32416 = r32407 - r32415;
double r32417 = 2.0;
double r32418 = r32417 * r32410;
double r32419 = r32416 / r32418;
double r32420 = r32417 * r32412;
double r32421 = r32407 + r32415;
double r32422 = r32420 / r32421;
double r32423 = r32406 ? r32419 : r32422;
return r32423;
}
double f(double a, double b, double c) {
double r32424 = b;
double r32425 = -1.3596485852230119e+154;
bool r32426 = r32424 <= r32425;
double r32427 = 0.0;
bool r32428 = r32424 >= r32427;
double r32429 = -r32424;
double r32430 = r32424 * r32424;
double r32431 = 4.0;
double r32432 = a;
double r32433 = r32431 * r32432;
double r32434 = c;
double r32435 = r32433 * r32434;
double r32436 = r32430 - r32435;
double r32437 = sqrt(r32436);
double r32438 = r32429 - r32437;
double r32439 = 2.0;
double r32440 = r32439 * r32432;
double r32441 = r32438 / r32440;
double r32442 = r32439 * r32434;
double r32443 = r32432 * r32434;
double r32444 = r32443 / r32424;
double r32445 = r32439 * r32444;
double r32446 = r32445 - r32424;
double r32447 = r32429 + r32446;
double r32448 = r32442 / r32447;
double r32449 = r32428 ? r32441 : r32448;
double r32450 = 2.1255630798514387e+135;
bool r32451 = r32424 <= r32450;
double r32452 = cbrt(r32436);
double r32453 = r32452 * r32452;
double r32454 = r32453 * r32452;
double r32455 = sqrt(r32454);
double r32456 = r32429 - r32455;
double r32457 = r32456 / r32440;
double r32458 = r32429 + r32437;
double r32459 = r32442 / r32458;
double r32460 = r32428 ? r32457 : r32459;
double r32461 = r32424 - r32445;
double r32462 = r32429 - r32461;
double r32463 = r32462 / r32440;
double r32464 = r32428 ? r32463 : r32459;
double r32465 = r32451 ? r32460 : r32464;
double r32466 = r32426 ? r32449 : r32465;
return r32466;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3596485852230119e+154Initial program 38.5
Taylor expanded around -inf 5.3
if -1.3596485852230119e+154 < b < 2.1255630798514387e+135Initial program 8.6
rmApplied add-cube-cbrt8.9
if 2.1255630798514387e+135 < b Initial program 58.2
Taylor expanded around inf 11.8
Final simplification8.6
herbie shell --seed 2019306 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 1"
:precision binary64
(if (>= b 0.0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))