\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\begin{array}{l}
\mathbf{if}\;b \le 4.197456508925139 \cdot 10^{-05}:\\
\;\;\;\;\frac{\frac{\frac{\left(b \cdot b + \left(c \cdot a\right) \cdot -4\right) \cdot \sqrt{b \cdot b + \left(c \cdot a\right) \cdot -4} - \left(b \cdot b\right) \cdot b}{\left(b + \sqrt{b \cdot b + \left(c \cdot a\right) \cdot -4}\right) \cdot \sqrt{b \cdot b + \left(c \cdot a\right) \cdot -4} + b \cdot b}}{a}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{-2 \cdot \frac{c}{b}}{2}\\
\end{array}double f(double a, double b, double c) {
double r1246477 = b;
double r1246478 = -r1246477;
double r1246479 = r1246477 * r1246477;
double r1246480 = 4.0;
double r1246481 = a;
double r1246482 = r1246480 * r1246481;
double r1246483 = c;
double r1246484 = r1246482 * r1246483;
double r1246485 = r1246479 - r1246484;
double r1246486 = sqrt(r1246485);
double r1246487 = r1246478 + r1246486;
double r1246488 = 2.0;
double r1246489 = r1246488 * r1246481;
double r1246490 = r1246487 / r1246489;
return r1246490;
}
double f(double a, double b, double c) {
double r1246491 = b;
double r1246492 = 4.197456508925139e-05;
bool r1246493 = r1246491 <= r1246492;
double r1246494 = r1246491 * r1246491;
double r1246495 = c;
double r1246496 = a;
double r1246497 = r1246495 * r1246496;
double r1246498 = -4.0;
double r1246499 = r1246497 * r1246498;
double r1246500 = r1246494 + r1246499;
double r1246501 = sqrt(r1246500);
double r1246502 = r1246500 * r1246501;
double r1246503 = r1246494 * r1246491;
double r1246504 = r1246502 - r1246503;
double r1246505 = r1246491 + r1246501;
double r1246506 = r1246505 * r1246501;
double r1246507 = r1246506 + r1246494;
double r1246508 = r1246504 / r1246507;
double r1246509 = r1246508 / r1246496;
double r1246510 = 2.0;
double r1246511 = r1246509 / r1246510;
double r1246512 = -2.0;
double r1246513 = r1246495 / r1246491;
double r1246514 = r1246512 * r1246513;
double r1246515 = r1246514 / r1246510;
double r1246516 = r1246493 ? r1246511 : r1246515;
return r1246516;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < 4.197456508925139e-05Initial program 18.7
Simplified18.7
rmApplied flip3--18.9
Simplified18.1
Simplified18.1
if 4.197456508925139e-05 < b Initial program 45.3
Simplified45.3
Taylor expanded around inf 10.9
Final simplification11.3
herbie shell --seed 2019149
(FPCore (a b c)
:name "Quadratic roots, medium range"
:pre (and (< 1.1102230246251565e-16 a 9007199254740992.0) (< 1.1102230246251565e-16 b 9007199254740992.0) (< 1.1102230246251565e-16 c 9007199254740992.0))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))