\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 0.2734354104749027:\\
\;\;\;\;\frac{\left(b \cdot b - 4 \cdot \left(c \cdot a\right)\right) \cdot \sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)} - \left(b \cdot b\right) \cdot b}{\left(2 \cdot a\right) \cdot \left(\left(b \cdot b + b \cdot \sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)}\right) + \sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)} \cdot \sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)}\right)}\\
\mathbf{else}:\\
\;\;\;\;-\frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r5890425 = b;
double r5890426 = -r5890425;
double r5890427 = r5890425 * r5890425;
double r5890428 = 4.0;
double r5890429 = a;
double r5890430 = r5890428 * r5890429;
double r5890431 = c;
double r5890432 = r5890430 * r5890431;
double r5890433 = r5890427 - r5890432;
double r5890434 = sqrt(r5890433);
double r5890435 = r5890426 + r5890434;
double r5890436 = 2.0;
double r5890437 = r5890436 * r5890429;
double r5890438 = r5890435 / r5890437;
return r5890438;
}
double f(double a, double b, double c) {
double r5890439 = b;
double r5890440 = 0.2734354104749027;
bool r5890441 = r5890439 <= r5890440;
double r5890442 = r5890439 * r5890439;
double r5890443 = 4.0;
double r5890444 = c;
double r5890445 = a;
double r5890446 = r5890444 * r5890445;
double r5890447 = r5890443 * r5890446;
double r5890448 = r5890442 - r5890447;
double r5890449 = sqrt(r5890448);
double r5890450 = r5890448 * r5890449;
double r5890451 = r5890442 * r5890439;
double r5890452 = r5890450 - r5890451;
double r5890453 = 2.0;
double r5890454 = r5890453 * r5890445;
double r5890455 = r5890439 * r5890449;
double r5890456 = r5890442 + r5890455;
double r5890457 = r5890449 * r5890449;
double r5890458 = r5890456 + r5890457;
double r5890459 = r5890454 * r5890458;
double r5890460 = r5890452 / r5890459;
double r5890461 = r5890444 / r5890439;
double r5890462 = -r5890461;
double r5890463 = r5890441 ? r5890460 : r5890462;
return r5890463;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < 0.2734354104749027Initial program 23.4
Simplified23.4
rmApplied flip3--23.5
Applied associate-/l/23.5
Simplified22.9
if 0.2734354104749027 < b Initial program 47.6
Simplified47.6
Taylor expanded around inf 9.3
Simplified9.3
Final simplification11.3
herbie shell --seed 2019107
(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)))