\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 1083.7283358723973:\\
\;\;\;\;\frac{\frac{\frac{\sqrt{\mathsf{fma}\left(c \cdot -4, a, b \cdot b\right)} \cdot \mathsf{fma}\left(c \cdot -4, a, b \cdot b\right) - \left(b \cdot b\right) \cdot b}{\mathsf{fma}\left(b, \sqrt{\mathsf{fma}\left(c \cdot -4, a, b \cdot b\right)}, b \cdot b + \mathsf{fma}\left(c \cdot -4, a, 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 r677599 = b;
double r677600 = -r677599;
double r677601 = r677599 * r677599;
double r677602 = 4.0;
double r677603 = a;
double r677604 = r677602 * r677603;
double r677605 = c;
double r677606 = r677604 * r677605;
double r677607 = r677601 - r677606;
double r677608 = sqrt(r677607);
double r677609 = r677600 + r677608;
double r677610 = 2.0;
double r677611 = r677610 * r677603;
double r677612 = r677609 / r677611;
return r677612;
}
double f(double a, double b, double c) {
double r677613 = b;
double r677614 = 1083.7283358723973;
bool r677615 = r677613 <= r677614;
double r677616 = c;
double r677617 = -4.0;
double r677618 = r677616 * r677617;
double r677619 = a;
double r677620 = r677613 * r677613;
double r677621 = fma(r677618, r677619, r677620);
double r677622 = sqrt(r677621);
double r677623 = r677622 * r677621;
double r677624 = r677620 * r677613;
double r677625 = r677623 - r677624;
double r677626 = r677620 + r677621;
double r677627 = fma(r677613, r677622, r677626);
double r677628 = r677625 / r677627;
double r677629 = r677628 / r677619;
double r677630 = 2.0;
double r677631 = r677629 / r677630;
double r677632 = -2.0;
double r677633 = r677616 / r677613;
double r677634 = r677632 * r677633;
double r677635 = r677634 / r677630;
double r677636 = r677615 ? r677631 : r677635;
return r677636;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 1083.7283358723973Initial program 17.4
Simplified17.3
rmApplied flip3--17.4
Simplified16.7
Simplified16.7
if 1083.7283358723973 < b Initial program 36.7
Simplified36.6
Taylor expanded around inf 15.9
Final simplification16.2
herbie shell --seed 2019151 +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)))