\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 r1150419 = b;
double r1150420 = 0.0;
bool r1150421 = r1150419 >= r1150420;
double r1150422 = -r1150419;
double r1150423 = r1150419 * r1150419;
double r1150424 = 4.0;
double r1150425 = a;
double r1150426 = r1150424 * r1150425;
double r1150427 = c;
double r1150428 = r1150426 * r1150427;
double r1150429 = r1150423 - r1150428;
double r1150430 = sqrt(r1150429);
double r1150431 = r1150422 - r1150430;
double r1150432 = 2.0;
double r1150433 = r1150432 * r1150425;
double r1150434 = r1150431 / r1150433;
double r1150435 = r1150432 * r1150427;
double r1150436 = r1150422 + r1150430;
double r1150437 = r1150435 / r1150436;
double r1150438 = r1150421 ? r1150434 : r1150437;
return r1150438;
}
double f(double a, double b, double c) {
double r1150439 = b;
double r1150440 = 9.19242293018462e+63;
bool r1150441 = r1150439 <= r1150440;
double r1150442 = 0.0;
bool r1150443 = r1150439 >= r1150442;
double r1150444 = -r1150439;
double r1150445 = c;
double r1150446 = a;
double r1150447 = -4.0;
double r1150448 = r1150446 * r1150447;
double r1150449 = r1150439 * r1150439;
double r1150450 = fma(r1150445, r1150448, r1150449);
double r1150451 = cbrt(r1150450);
double r1150452 = sqrt(r1150451);
double r1150453 = r1150451 * r1150451;
double r1150454 = sqrt(r1150453);
double r1150455 = r1150452 * r1150454;
double r1150456 = r1150444 - r1150455;
double r1150457 = 2.0;
double r1150458 = r1150446 * r1150457;
double r1150459 = r1150456 / r1150458;
double r1150460 = sqrt(r1150450);
double r1150461 = r1150460 - r1150439;
double r1150462 = r1150461 / r1150457;
double r1150463 = r1150445 / r1150462;
double r1150464 = r1150443 ? r1150459 : r1150463;
double r1150465 = r1150444 - r1150439;
double r1150466 = r1150465 / r1150458;
double r1150467 = r1150443 ? r1150466 : r1150463;
double r1150468 = r1150441 ? r1150464 : r1150467;
return r1150468;
}



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)))))))