\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 -1.3596472614638946 \cdot 10^{154}:\\
\;\;\;\;\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2 \cdot a}\\
\mathbf{elif}\;b \le -4.9276367402926466 \cdot 10^{-151}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(\left(4 \cdot a\right) \cdot \left(\sqrt[3]{c} \cdot \sqrt[3]{c}\right)\right) \cdot \sqrt[3]{c}}}{2 \cdot a}\\
\mathbf{elif}\;b \le 1.3192555879554789 \cdot 10^{90}:\\
\;\;\;\;\frac{\frac{1}{-1} \cdot \frac{4 \cdot a}{\frac{b + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{c}}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{-2 \cdot \frac{a \cdot c}{b}}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r55829 = b;
double r55830 = -r55829;
double r55831 = r55829 * r55829;
double r55832 = 4.0;
double r55833 = a;
double r55834 = r55832 * r55833;
double r55835 = c;
double r55836 = r55834 * r55835;
double r55837 = r55831 - r55836;
double r55838 = sqrt(r55837);
double r55839 = r55830 + r55838;
double r55840 = 2.0;
double r55841 = r55840 * r55833;
double r55842 = r55839 / r55841;
return r55842;
}
double f(double a, double b, double c) {
double r55843 = b;
double r55844 = -1.3596472614638946e+154;
bool r55845 = r55843 <= r55844;
double r55846 = 2.0;
double r55847 = a;
double r55848 = c;
double r55849 = r55847 * r55848;
double r55850 = r55849 / r55843;
double r55851 = r55846 * r55850;
double r55852 = 2.0;
double r55853 = r55852 * r55843;
double r55854 = r55851 - r55853;
double r55855 = r55846 * r55847;
double r55856 = r55854 / r55855;
double r55857 = -4.9276367402926466e-151;
bool r55858 = r55843 <= r55857;
double r55859 = -r55843;
double r55860 = r55843 * r55843;
double r55861 = 4.0;
double r55862 = r55861 * r55847;
double r55863 = cbrt(r55848);
double r55864 = r55863 * r55863;
double r55865 = r55862 * r55864;
double r55866 = r55865 * r55863;
double r55867 = r55860 - r55866;
double r55868 = sqrt(r55867);
double r55869 = r55859 + r55868;
double r55870 = r55869 / r55855;
double r55871 = 1.319255587955479e+90;
bool r55872 = r55843 <= r55871;
double r55873 = 1.0;
double r55874 = -r55873;
double r55875 = r55873 / r55874;
double r55876 = r55862 * r55848;
double r55877 = r55860 - r55876;
double r55878 = sqrt(r55877);
double r55879 = r55843 + r55878;
double r55880 = r55879 / r55848;
double r55881 = r55862 / r55880;
double r55882 = r55875 * r55881;
double r55883 = r55882 / r55855;
double r55884 = -2.0;
double r55885 = r55884 * r55850;
double r55886 = r55885 / r55855;
double r55887 = r55872 ? r55883 : r55886;
double r55888 = r55858 ? r55870 : r55887;
double r55889 = r55845 ? r55856 : r55888;
return r55889;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3596472614638946e+154Initial program 64.0
Taylor expanded around -inf 10.9
if -1.3596472614638946e+154 < b < -4.9276367402926466e-151Initial program 6.3
rmApplied add-cube-cbrt6.4
Applied associate-*r*6.4
if -4.9276367402926466e-151 < b < 1.319255587955479e+90Initial program 27.7
rmApplied add-sqr-sqrt27.7
Applied sqrt-prod28.5
rmApplied flip-+29.0
Simplified16.4
Simplified16.3
rmApplied *-un-lft-identity16.3
Applied distribute-lft-neg-in16.3
Applied *-un-lft-identity16.3
Applied times-frac16.3
Simplified14.5
if 1.319255587955479e+90 < b Initial program 59.1
Taylor expanded around inf 14.9
Final simplification12.2
herbie shell --seed 2020021 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, full range"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))