\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 6094.521206369936:\\
\;\;\;\;\frac{\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(b \cdot b - 4 \cdot \left(c \cdot a\right)\right) + \left(b \cdot \sqrt{b \cdot b - 4 \cdot \left(c \cdot a\right)} + b \cdot b\right)}}{a \cdot 2}\\
\mathbf{else}:\\
\;\;\;\;\frac{-c}{b}\\
\end{array}double f(double a, double b, double c) {
double r1011367 = b;
double r1011368 = -r1011367;
double r1011369 = r1011367 * r1011367;
double r1011370 = 4.0;
double r1011371 = a;
double r1011372 = r1011370 * r1011371;
double r1011373 = c;
double r1011374 = r1011372 * r1011373;
double r1011375 = r1011369 - r1011374;
double r1011376 = sqrt(r1011375);
double r1011377 = r1011368 + r1011376;
double r1011378 = 2.0;
double r1011379 = r1011378 * r1011371;
double r1011380 = r1011377 / r1011379;
return r1011380;
}
double f(double a, double b, double c) {
double r1011381 = b;
double r1011382 = 6094.521206369936;
bool r1011383 = r1011381 <= r1011382;
double r1011384 = r1011381 * r1011381;
double r1011385 = 4.0;
double r1011386 = c;
double r1011387 = a;
double r1011388 = r1011386 * r1011387;
double r1011389 = r1011385 * r1011388;
double r1011390 = r1011384 - r1011389;
double r1011391 = sqrt(r1011390);
double r1011392 = r1011390 * r1011391;
double r1011393 = r1011384 * r1011381;
double r1011394 = r1011392 - r1011393;
double r1011395 = r1011381 * r1011391;
double r1011396 = r1011395 + r1011384;
double r1011397 = r1011390 + r1011396;
double r1011398 = r1011394 / r1011397;
double r1011399 = 2.0;
double r1011400 = r1011387 * r1011399;
double r1011401 = r1011398 / r1011400;
double r1011402 = -r1011386;
double r1011403 = r1011402 / r1011381;
double r1011404 = r1011383 ? r1011401 : r1011403;
return r1011404;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < 6094.521206369936Initial program 19.2
Simplified19.2
rmApplied flip3--19.2
Simplified18.5
Simplified18.5
if 6094.521206369936 < b Initial program 37.3
Simplified37.3
Taylor expanded around inf 15.4
Simplified15.4
Final simplification16.9
herbie shell --seed 2019129
(FPCore (a b c)
:name "Quadratic roots, narrow range"
: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)))