\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 1647.131571019072:\\
\;\;\;\;\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{\frac{-2 \cdot \frac{\frac{1}{\frac{\sqrt{b}}{a}}}{\frac{\sqrt{b}}{c}}}{a}}{2}\\
\end{array}double f(double a, double b, double c) {
double r1188891 = b;
double r1188892 = -r1188891;
double r1188893 = r1188891 * r1188891;
double r1188894 = 4.0;
double r1188895 = a;
double r1188896 = r1188894 * r1188895;
double r1188897 = c;
double r1188898 = r1188896 * r1188897;
double r1188899 = r1188893 - r1188898;
double r1188900 = sqrt(r1188899);
double r1188901 = r1188892 + r1188900;
double r1188902 = 2.0;
double r1188903 = r1188902 * r1188895;
double r1188904 = r1188901 / r1188903;
return r1188904;
}
double f(double a, double b, double c) {
double r1188905 = b;
double r1188906 = 1647.131571019072;
bool r1188907 = r1188905 <= r1188906;
double r1188908 = a;
double r1188909 = c;
double r1188910 = r1188908 * r1188909;
double r1188911 = -4.0;
double r1188912 = r1188905 * r1188905;
double r1188913 = fma(r1188910, r1188911, r1188912);
double r1188914 = sqrt(r1188913);
double r1188915 = r1188914 * r1188913;
double r1188916 = r1188912 * r1188905;
double r1188917 = r1188915 - r1188916;
double r1188918 = r1188912 + r1188913;
double r1188919 = fma(r1188905, r1188914, r1188918);
double r1188920 = r1188917 / r1188919;
double r1188921 = r1188920 / r1188908;
double r1188922 = 2.0;
double r1188923 = r1188921 / r1188922;
double r1188924 = -2.0;
double r1188925 = 1.0;
double r1188926 = sqrt(r1188905);
double r1188927 = r1188926 / r1188908;
double r1188928 = r1188925 / r1188927;
double r1188929 = r1188926 / r1188909;
double r1188930 = r1188928 / r1188929;
double r1188931 = r1188924 * r1188930;
double r1188932 = r1188931 / r1188908;
double r1188933 = r1188932 / r1188922;
double r1188934 = r1188907 ? r1188923 : r1188933;
return r1188934;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 1647.131571019072Initial program 17.3
Simplified17.2
rmApplied flip3--17.3
Simplified16.7
Simplified16.7
if 1647.131571019072 < b Initial program 36.6
Simplified36.6
Taylor expanded around inf 16.0
rmApplied clear-num16.0
rmApplied add-sqr-sqrt16.1
Applied times-frac16.1
Applied associate-/r*16.1
Final simplification16.3
herbie shell --seed 2019149 +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)))