\begin{array}{l}
\mathbf{if}\;b \ge 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 4.1813913858897907 \cdot 10^{+68}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{\sqrt{\mathsf{fma}\left(-4, a \cdot c, b \cdot b\right)}} \cdot \sqrt{\sqrt{\mathsf{fma}\left(-4, a \cdot c, b \cdot b\right)}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\sqrt{\mathsf{fma}\left(-4, a \cdot c, b \cdot b\right)} - b}{2}}{a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - b}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\sqrt{\mathsf{fma}\left(-4, a \cdot c, b \cdot b\right)} - b}{2}}{a}\\
\end{array}double f(double a, double b, double c) {
double r488439 = b;
double r488440 = 0.0;
bool r488441 = r488439 >= r488440;
double r488442 = 2.0;
double r488443 = c;
double r488444 = r488442 * r488443;
double r488445 = -r488439;
double r488446 = r488439 * r488439;
double r488447 = 4.0;
double r488448 = a;
double r488449 = r488447 * r488448;
double r488450 = r488449 * r488443;
double r488451 = r488446 - r488450;
double r488452 = sqrt(r488451);
double r488453 = r488445 - r488452;
double r488454 = r488444 / r488453;
double r488455 = r488445 + r488452;
double r488456 = r488442 * r488448;
double r488457 = r488455 / r488456;
double r488458 = r488441 ? r488454 : r488457;
return r488458;
}
double f(double a, double b, double c) {
double r488459 = b;
double r488460 = 4.1813913858897907e+68;
bool r488461 = r488459 <= r488460;
double r488462 = 0.0;
bool r488463 = r488459 >= r488462;
double r488464 = 2.0;
double r488465 = c;
double r488466 = r488464 * r488465;
double r488467 = -r488459;
double r488468 = -4.0;
double r488469 = a;
double r488470 = r488469 * r488465;
double r488471 = r488459 * r488459;
double r488472 = fma(r488468, r488470, r488471);
double r488473 = sqrt(r488472);
double r488474 = sqrt(r488473);
double r488475 = r488474 * r488474;
double r488476 = r488467 - r488475;
double r488477 = r488466 / r488476;
double r488478 = r488473 - r488459;
double r488479 = r488478 / r488464;
double r488480 = r488479 / r488469;
double r488481 = r488463 ? r488477 : r488480;
double r488482 = r488467 - r488459;
double r488483 = r488466 / r488482;
double r488484 = r488463 ? r488483 : r488480;
double r488485 = r488461 ? r488481 : r488484;
return r488485;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 4.1813913858897907e+68Initial program 16.3
Simplified16.3
rmApplied add-sqr-sqrt16.4
if 4.1813913858897907e+68 < b Initial program 26.4
Simplified26.4
Taylor expanded around 0 3.5
Final simplification13.1
herbie shell --seed 2019152 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 2"
(if (>= b 0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))