\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.10455593216828488:\\
\;\;\;\;\frac{\frac{\frac{\sqrt{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)} \cdot \mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right) - \left(b \cdot b\right) \cdot b}{\mathsf{fma}\left(b, b + \sqrt{\mathsf{fma}\left(-4 \cdot a, c, b \cdot b\right)}, \mathsf{fma}\left(-4 \cdot a, c, 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 r1520913 = b;
double r1520914 = -r1520913;
double r1520915 = r1520913 * r1520913;
double r1520916 = 4.0;
double r1520917 = a;
double r1520918 = r1520916 * r1520917;
double r1520919 = c;
double r1520920 = r1520918 * r1520919;
double r1520921 = r1520915 - r1520920;
double r1520922 = sqrt(r1520921);
double r1520923 = r1520914 + r1520922;
double r1520924 = 2.0;
double r1520925 = r1520924 * r1520917;
double r1520926 = r1520923 / r1520925;
return r1520926;
}
double f(double a, double b, double c) {
double r1520927 = b;
double r1520928 = 0.10455593216828488;
bool r1520929 = r1520927 <= r1520928;
double r1520930 = -4.0;
double r1520931 = a;
double r1520932 = r1520930 * r1520931;
double r1520933 = c;
double r1520934 = r1520927 * r1520927;
double r1520935 = fma(r1520932, r1520933, r1520934);
double r1520936 = sqrt(r1520935);
double r1520937 = r1520936 * r1520935;
double r1520938 = r1520934 * r1520927;
double r1520939 = r1520937 - r1520938;
double r1520940 = r1520927 + r1520936;
double r1520941 = fma(r1520927, r1520940, r1520935);
double r1520942 = r1520939 / r1520941;
double r1520943 = r1520942 / r1520931;
double r1520944 = 2.0;
double r1520945 = r1520943 / r1520944;
double r1520946 = -2.0;
double r1520947 = r1520933 / r1520927;
double r1520948 = r1520946 * r1520947;
double r1520949 = r1520948 / r1520944;
double r1520950 = r1520929 ? r1520945 : r1520949;
return r1520950;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 0.10455593216828488Initial program 23.0
Simplified23.0
rmApplied flip3--23.0
Simplified22.3
Simplified22.4
if 0.10455593216828488 < b Initial program 47.3
Simplified47.2
Taylor expanded around inf 9.5
Final simplification11.2
herbie shell --seed 2019162 +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)))