\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 17.714642954298647:\\
\;\;\;\;\frac{\frac{\frac{\left({b}^{2} - 4 \cdot \left(a \cdot c\right)\right) - {b}^{2}}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + b}}{2}}{a}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r24391 = b;
double r24392 = -r24391;
double r24393 = r24391 * r24391;
double r24394 = 4.0;
double r24395 = a;
double r24396 = r24394 * r24395;
double r24397 = c;
double r24398 = r24396 * r24397;
double r24399 = r24393 - r24398;
double r24400 = sqrt(r24399);
double r24401 = r24392 + r24400;
double r24402 = 2.0;
double r24403 = r24402 * r24395;
double r24404 = r24401 / r24403;
return r24404;
}
double f(double a, double b, double c) {
double r24405 = b;
double r24406 = 17.714642954298647;
bool r24407 = r24405 <= r24406;
double r24408 = 2.0;
double r24409 = pow(r24405, r24408);
double r24410 = 4.0;
double r24411 = a;
double r24412 = c;
double r24413 = r24411 * r24412;
double r24414 = r24410 * r24413;
double r24415 = r24409 - r24414;
double r24416 = r24415 - r24409;
double r24417 = r24405 * r24405;
double r24418 = r24410 * r24411;
double r24419 = r24418 * r24412;
double r24420 = r24417 - r24419;
double r24421 = sqrt(r24420);
double r24422 = r24421 + r24405;
double r24423 = r24416 / r24422;
double r24424 = 2.0;
double r24425 = r24423 / r24424;
double r24426 = r24425 / r24411;
double r24427 = -1.0;
double r24428 = r24412 / r24405;
double r24429 = r24427 * r24428;
double r24430 = r24407 ? r24426 : r24429;
return r24430;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < 17.714642954298647Initial program 13.9
Simplified13.9
rmApplied flip--13.9
Simplified12.9
if 17.714642954298647 < b Initial program 33.3
Simplified33.3
Taylor expanded around inf 18.6
Final simplification17.2
herbie shell --seed 2020046
(FPCore (a b c)
:name "Quadratic roots, narrow range"
:precision binary64
:pre (and (< 1.0536712127723509e-08 a 94906265.62425156) (< 1.0536712127723509e-08 b 94906265.62425156) (< 1.0536712127723509e-08 c 94906265.62425156))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))