\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 9.19242293018462 \cdot 10^{+63}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{\sqrt[3]{\mathsf{fma}\left(c, a \cdot -4, b \cdot b\right)}} \cdot \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)}}}{a \cdot 2}\\
\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(-b\right) - b}{a \cdot 2}\\
\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 r1150416 = b;
double r1150417 = 0.0;
bool r1150418 = r1150416 >= r1150417;
double r1150419 = -r1150416;
double r1150420 = r1150416 * r1150416;
double r1150421 = 4.0;
double r1150422 = a;
double r1150423 = r1150421 * r1150422;
double r1150424 = c;
double r1150425 = r1150423 * r1150424;
double r1150426 = r1150420 - r1150425;
double r1150427 = sqrt(r1150426);
double r1150428 = r1150419 - r1150427;
double r1150429 = 2.0;
double r1150430 = r1150429 * r1150422;
double r1150431 = r1150428 / r1150430;
double r1150432 = r1150429 * r1150424;
double r1150433 = r1150419 + r1150427;
double r1150434 = r1150432 / r1150433;
double r1150435 = r1150418 ? r1150431 : r1150434;
return r1150435;
}
double f(double a, double b, double c) {
double r1150436 = b;
double r1150437 = 9.19242293018462e+63;
bool r1150438 = r1150436 <= r1150437;
double r1150439 = 0.0;
bool r1150440 = r1150436 >= r1150439;
double r1150441 = -r1150436;
double r1150442 = c;
double r1150443 = a;
double r1150444 = -4.0;
double r1150445 = r1150443 * r1150444;
double r1150446 = r1150436 * r1150436;
double r1150447 = fma(r1150442, r1150445, r1150446);
double r1150448 = cbrt(r1150447);
double r1150449 = sqrt(r1150448);
double r1150450 = r1150448 * r1150448;
double r1150451 = sqrt(r1150450);
double r1150452 = r1150449 * r1150451;
double r1150453 = r1150441 - r1150452;
double r1150454 = 2.0;
double r1150455 = r1150443 * r1150454;
double r1150456 = r1150453 / r1150455;
double r1150457 = sqrt(r1150447);
double r1150458 = r1150457 - r1150436;
double r1150459 = r1150458 / r1150454;
double r1150460 = r1150442 / r1150459;
double r1150461 = r1150440 ? r1150456 : r1150460;
double r1150462 = r1150441 - r1150436;
double r1150463 = r1150462 / r1150455;
double r1150464 = r1150440 ? r1150463 : r1150460;
double r1150465 = r1150438 ? r1150461 : r1150464;
return r1150465;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 9.19242293018462e+63Initial program 14.7
Simplified14.7
rmApplied add-cube-cbrt14.8
Applied sqrt-prod14.8
if 9.19242293018462e+63 < b Initial program 38.2
Simplified38.1
Taylor expanded around 0 4.8
Final simplification13.1
herbie shell --seed 2019158 +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)))))))