\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 2650.8680979433148:\\
\;\;\;\;\frac{\frac{\frac{\sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)} \cdot \mathsf{fma}\left(a \cdot c, -4, b \cdot b\right) - \left(b \cdot b\right) \cdot b}{\mathsf{fma}\left(b, \sqrt{\mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)}, b \cdot b + \mathsf{fma}\left(a \cdot c, -4, b \cdot b\right)\right)}}{a}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{-2 \cdot \frac{c}{b}}{2}\\
\end{array}double f(double a, double b, double c) {
double r1114439 = b;
double r1114440 = -r1114439;
double r1114441 = r1114439 * r1114439;
double r1114442 = 4.0;
double r1114443 = a;
double r1114444 = r1114442 * r1114443;
double r1114445 = c;
double r1114446 = r1114444 * r1114445;
double r1114447 = r1114441 - r1114446;
double r1114448 = sqrt(r1114447);
double r1114449 = r1114440 + r1114448;
double r1114450 = 2.0;
double r1114451 = r1114450 * r1114443;
double r1114452 = r1114449 / r1114451;
return r1114452;
}
double f(double a, double b, double c) {
double r1114453 = b;
double r1114454 = 2650.8680979433148;
bool r1114455 = r1114453 <= r1114454;
double r1114456 = a;
double r1114457 = c;
double r1114458 = r1114456 * r1114457;
double r1114459 = -4.0;
double r1114460 = r1114453 * r1114453;
double r1114461 = fma(r1114458, r1114459, r1114460);
double r1114462 = sqrt(r1114461);
double r1114463 = r1114462 * r1114461;
double r1114464 = r1114460 * r1114453;
double r1114465 = r1114463 - r1114464;
double r1114466 = r1114460 + r1114461;
double r1114467 = fma(r1114453, r1114462, r1114466);
double r1114468 = r1114465 / r1114467;
double r1114469 = r1114468 / r1114456;
double r1114470 = 2.0;
double r1114471 = r1114469 / r1114470;
double r1114472 = -2.0;
double r1114473 = r1114457 / r1114453;
double r1114474 = r1114472 * r1114473;
double r1114475 = r1114474 / r1114470;
double r1114476 = r1114455 ? r1114471 : r1114475;
return r1114476;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 2650.8680979433148Initial program 18.1
Simplified18.0
rmApplied flip3--18.0
Simplified17.4
Simplified17.4
if 2650.8680979433148 < b Initial program 37.5
Simplified37.4
Taylor expanded around inf 15.3
Final simplification16.2
herbie shell --seed 2019146 +o rules:numerics
(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)))