\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 2.6220942974526774 \cdot 10^{+104}:\\
\;\;\;\;\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{b}{a}\\
\end{array}double f(double a, double b, double c) {
double r491365 = b;
double r491366 = 0.0;
bool r491367 = r491365 >= r491366;
double r491368 = -r491365;
double r491369 = r491365 * r491365;
double r491370 = 4.0;
double r491371 = a;
double r491372 = r491370 * r491371;
double r491373 = c;
double r491374 = r491372 * r491373;
double r491375 = r491369 - r491374;
double r491376 = sqrt(r491375);
double r491377 = r491368 - r491376;
double r491378 = 2.0;
double r491379 = r491378 * r491371;
double r491380 = r491377 / r491379;
double r491381 = r491378 * r491373;
double r491382 = r491368 + r491376;
double r491383 = r491381 / r491382;
double r491384 = r491367 ? r491380 : r491383;
return r491384;
}
double f(double a, double b, double c) {
double r491385 = b;
double r491386 = 2.6220942974526774e+104;
bool r491387 = r491385 <= r491386;
double r491388 = 0.0;
bool r491389 = r491385 >= r491388;
double r491390 = -r491385;
double r491391 = c;
double r491392 = a;
double r491393 = -4.0;
double r491394 = r491392 * r491393;
double r491395 = r491385 * r491385;
double r491396 = fma(r491391, r491394, r491395);
double r491397 = cbrt(r491396);
double r491398 = sqrt(r491397);
double r491399 = r491397 * r491397;
double r491400 = sqrt(r491399);
double r491401 = r491398 * r491400;
double r491402 = r491390 - r491401;
double r491403 = 2.0;
double r491404 = r491392 * r491403;
double r491405 = r491402 / r491404;
double r491406 = sqrt(r491396);
double r491407 = r491406 - r491385;
double r491408 = r491407 / r491403;
double r491409 = r491391 / r491408;
double r491410 = r491389 ? r491405 : r491409;
double r491411 = r491390 - r491385;
double r491412 = r491411 / r491404;
double r491413 = r491385 / r491392;
double r491414 = -r491413;
double r491415 = r491389 ? r491412 : r491414;
double r491416 = r491387 ? r491410 : r491415;
return r491416;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 2.6220942974526774e+104Initial program 14.9
Simplified14.9
rmApplied add-cube-cbrt15.0
Applied sqrt-prod15.0
if 2.6220942974526774e+104 < b Initial program 44.1
Simplified44.1
Taylor expanded around 0 3.1
Taylor expanded around 0 3.1
Simplified3.1
Final simplification13.3
herbie shell --seed 2019153 +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)))))))