\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 0.09946845057046652:\\
\;\;\;\;\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 r1113719 = b;
double r1113720 = -r1113719;
double r1113721 = r1113719 * r1113719;
double r1113722 = 4.0;
double r1113723 = a;
double r1113724 = r1113722 * r1113723;
double r1113725 = c;
double r1113726 = r1113724 * r1113725;
double r1113727 = r1113721 - r1113726;
double r1113728 = sqrt(r1113727);
double r1113729 = r1113720 + r1113728;
double r1113730 = 2.0;
double r1113731 = r1113730 * r1113723;
double r1113732 = r1113729 / r1113731;
return r1113732;
}
double f(double a, double b, double c) {
double r1113733 = b;
double r1113734 = 0.09946845057046652;
bool r1113735 = r1113733 <= r1113734;
double r1113736 = a;
double r1113737 = c;
double r1113738 = r1113736 * r1113737;
double r1113739 = -4.0;
double r1113740 = r1113733 * r1113733;
double r1113741 = fma(r1113738, r1113739, r1113740);
double r1113742 = sqrt(r1113741);
double r1113743 = r1113742 * r1113741;
double r1113744 = r1113740 * r1113733;
double r1113745 = r1113743 - r1113744;
double r1113746 = r1113740 + r1113741;
double r1113747 = fma(r1113733, r1113742, r1113746);
double r1113748 = r1113745 / r1113747;
double r1113749 = r1113748 / r1113736;
double r1113750 = 2.0;
double r1113751 = r1113749 / r1113750;
double r1113752 = -2.0;
double r1113753 = r1113737 / r1113733;
double r1113754 = r1113752 * r1113753;
double r1113755 = r1113754 / r1113750;
double r1113756 = r1113735 ? r1113751 : r1113755;
return r1113756;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 0.09946845057046652Initial program 24.0
Simplified23.9
rmApplied flip3--24.0
Simplified23.4
Simplified23.4
if 0.09946845057046652 < b Initial program 47.7
Simplified47.7
Taylor expanded around inf 9.2
Final simplification11.0
herbie shell --seed 2019152 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, medium range"
:pre (and (< 1.1102230246251565e-16 a 9007199254740992.0) (< 1.1102230246251565e-16 b 9007199254740992.0) (< 1.1102230246251565e-16 c 9007199254740992.0))
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))