\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 1459.466396695320781873306259512901306152:\\
\;\;\;\;\frac{\frac{b \cdot b - \mathsf{fma}\left(b, b, 4 \cdot \left(a \cdot c\right)\right)}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + b}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r26381 = b;
double r26382 = -r26381;
double r26383 = r26381 * r26381;
double r26384 = 4.0;
double r26385 = a;
double r26386 = r26384 * r26385;
double r26387 = c;
double r26388 = r26386 * r26387;
double r26389 = r26383 - r26388;
double r26390 = sqrt(r26389);
double r26391 = r26382 + r26390;
double r26392 = 2.0;
double r26393 = r26392 * r26385;
double r26394 = r26391 / r26393;
return r26394;
}
double f(double a, double b, double c) {
double r26395 = b;
double r26396 = 1459.4663966953208;
bool r26397 = r26395 <= r26396;
double r26398 = r26395 * r26395;
double r26399 = 4.0;
double r26400 = a;
double r26401 = c;
double r26402 = r26400 * r26401;
double r26403 = r26399 * r26402;
double r26404 = fma(r26395, r26395, r26403);
double r26405 = r26398 - r26404;
double r26406 = r26399 * r26400;
double r26407 = r26406 * r26401;
double r26408 = r26398 - r26407;
double r26409 = sqrt(r26408);
double r26410 = r26409 + r26395;
double r26411 = r26405 / r26410;
double r26412 = 2.0;
double r26413 = r26412 * r26400;
double r26414 = r26411 / r26413;
double r26415 = -1.0;
double r26416 = r26401 / r26395;
double r26417 = r26415 * r26416;
double r26418 = r26397 ? r26414 : r26417;
return r26418;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 1459.4663966953208Initial program 17.8
Simplified17.8
rmApplied flip--17.8
Simplified17.1
if 1459.4663966953208 < b Initial program 36.9
Simplified36.9
Taylor expanded around inf 15.8
Final simplification16.3
herbie shell --seed 2019304 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, narrow range"
:precision binary64
:pre (and (< 1.05367121277235087e-8 a 94906265.6242515594) (< 1.05367121277235087e-8 b 94906265.6242515594) (< 1.05367121277235087e-8 c 94906265.6242515594))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))