\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 -5.58543573862810322 \cdot 10^{150}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le -2.3730540219645598 \cdot 10^{-278}:\\
\;\;\;\;\frac{1}{\frac{2 \cdot a}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\
\mathbf{elif}\;b \le 1.55563303224959 \cdot 10^{106}:\\
\;\;\;\;\frac{1}{\left(\frac{2}{4} \cdot \frac{1}{c}\right) \cdot \left(\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r56887 = b;
double r56888 = -r56887;
double r56889 = r56887 * r56887;
double r56890 = 4.0;
double r56891 = a;
double r56892 = r56890 * r56891;
double r56893 = c;
double r56894 = r56892 * r56893;
double r56895 = r56889 - r56894;
double r56896 = sqrt(r56895);
double r56897 = r56888 + r56896;
double r56898 = 2.0;
double r56899 = r56898 * r56891;
double r56900 = r56897 / r56899;
return r56900;
}
double f(double a, double b, double c) {
double r56901 = b;
double r56902 = -5.585435738628103e+150;
bool r56903 = r56901 <= r56902;
double r56904 = 1.0;
double r56905 = c;
double r56906 = r56905 / r56901;
double r56907 = a;
double r56908 = r56901 / r56907;
double r56909 = r56906 - r56908;
double r56910 = r56904 * r56909;
double r56911 = -2.3730540219645598e-278;
bool r56912 = r56901 <= r56911;
double r56913 = 1.0;
double r56914 = 2.0;
double r56915 = r56914 * r56907;
double r56916 = -r56901;
double r56917 = r56901 * r56901;
double r56918 = 4.0;
double r56919 = r56918 * r56907;
double r56920 = r56919 * r56905;
double r56921 = r56917 - r56920;
double r56922 = sqrt(r56921);
double r56923 = r56916 + r56922;
double r56924 = r56915 / r56923;
double r56925 = r56913 / r56924;
double r56926 = 1.55563303224959e+106;
bool r56927 = r56901 <= r56926;
double r56928 = r56914 / r56918;
double r56929 = r56913 / r56905;
double r56930 = r56928 * r56929;
double r56931 = r56916 - r56922;
double r56932 = r56930 * r56931;
double r56933 = r56913 / r56932;
double r56934 = -1.0;
double r56935 = r56934 * r56906;
double r56936 = r56927 ? r56933 : r56935;
double r56937 = r56912 ? r56925 : r56936;
double r56938 = r56903 ? r56910 : r56937;
return r56938;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -5.585435738628103e+150Initial program 61.5
Taylor expanded around -inf 2.2
Simplified2.2
if -5.585435738628103e+150 < b < -2.3730540219645598e-278Initial program 8.1
rmApplied clear-num8.3
if -2.3730540219645598e-278 < b < 1.55563303224959e+106Initial program 31.3
rmApplied flip-+31.3
Simplified16.7
rmApplied clear-num16.9
Simplified16.2
rmApplied times-frac16.2
Simplified9.9
if 1.55563303224959e+106 < b Initial program 60.3
Taylor expanded around inf 2.7
Final simplification6.9
herbie shell --seed 2020062 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, full range"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))