\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 1.3914912380743042 \cdot 10^{+88}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{\mathsf{fma}\left(a, -4 \cdot c, b \cdot b\right)}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(a, -4 \cdot c, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(a, -4 \cdot c, b \cdot b\right)}}, -b\right)}{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(a, -4 \cdot c, b \cdot b\right)} - b}{2}}{a}\\
\end{array}double f(double a, double b, double c) {
double r1114409 = b;
double r1114410 = 0.0;
bool r1114411 = r1114409 >= r1114410;
double r1114412 = 2.0;
double r1114413 = c;
double r1114414 = r1114412 * r1114413;
double r1114415 = -r1114409;
double r1114416 = r1114409 * r1114409;
double r1114417 = 4.0;
double r1114418 = a;
double r1114419 = r1114417 * r1114418;
double r1114420 = r1114419 * r1114413;
double r1114421 = r1114416 - r1114420;
double r1114422 = sqrt(r1114421);
double r1114423 = r1114415 - r1114422;
double r1114424 = r1114414 / r1114423;
double r1114425 = r1114415 + r1114422;
double r1114426 = r1114412 * r1114418;
double r1114427 = r1114425 / r1114426;
double r1114428 = r1114411 ? r1114424 : r1114427;
return r1114428;
}
double f(double a, double b, double c) {
double r1114429 = b;
double r1114430 = 1.3914912380743042e+88;
bool r1114431 = r1114429 <= r1114430;
double r1114432 = 0.0;
bool r1114433 = r1114429 >= r1114432;
double r1114434 = 2.0;
double r1114435 = c;
double r1114436 = r1114434 * r1114435;
double r1114437 = -r1114429;
double r1114438 = a;
double r1114439 = -4.0;
double r1114440 = r1114439 * r1114435;
double r1114441 = r1114429 * r1114429;
double r1114442 = fma(r1114438, r1114440, r1114441);
double r1114443 = sqrt(r1114442);
double r1114444 = r1114437 - r1114443;
double r1114445 = r1114436 / r1114444;
double r1114446 = sqrt(r1114443);
double r1114447 = fma(r1114446, r1114446, r1114437);
double r1114448 = r1114447 / r1114434;
double r1114449 = r1114448 / r1114438;
double r1114450 = r1114433 ? r1114445 : r1114449;
double r1114451 = r1114437 - r1114429;
double r1114452 = r1114436 / r1114451;
double r1114453 = r1114443 - r1114429;
double r1114454 = r1114453 / r1114434;
double r1114455 = r1114454 / r1114438;
double r1114456 = r1114433 ? r1114452 : r1114455;
double r1114457 = r1114431 ? r1114450 : r1114456;
return r1114457;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 1.3914912380743042e+88Initial program 16.9
Simplified16.8
rmApplied add-sqr-sqrt16.8
Applied sqrt-prod16.9
Applied fma-neg16.9
if 1.3914912380743042e+88 < b Initial program 29.4
Simplified29.3
Taylor expanded around 0 2.7
Final simplification13.4
herbie shell --seed 2019163 +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))))