\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 2.49445624012960862396084940365110205816 \cdot 10^{-289}:\\
\;\;\;\;\frac{\frac{\sqrt{\mathsf{fma}\left(\left(-a\right) \cdot 4, c, b \cdot b\right)} - b}{a}}{2}\\
\mathbf{elif}\;b \le 3.224491050532555179035846228386712352959 \cdot 10^{112}:\\
\;\;\;\;\frac{\frac{\frac{-1}{\sqrt[3]{\sqrt{\mathsf{fma}\left(4, a \cdot \left(-c\right), b \cdot b\right)} + b}}}{\sqrt[3]{\sqrt{\mathsf{fma}\left(4, a \cdot \left(-c\right), b \cdot b\right)} + b}} \cdot \left(\frac{a}{a} \cdot \frac{4 \cdot c}{\sqrt[3]{\sqrt{\mathsf{fma}\left(4, a \cdot \left(-c\right), b \cdot b\right)} + b}}\right)}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\frac{\mathsf{fma}\left(a \cdot \left(-c\right), 4, 0\right)}{2 \cdot b}}{a}}{2}\\
\end{array}double f(double a, double b, double c) {
double r51897 = b;
double r51898 = -r51897;
double r51899 = r51897 * r51897;
double r51900 = 4.0;
double r51901 = a;
double r51902 = r51900 * r51901;
double r51903 = c;
double r51904 = r51902 * r51903;
double r51905 = r51899 - r51904;
double r51906 = sqrt(r51905);
double r51907 = r51898 + r51906;
double r51908 = 2.0;
double r51909 = r51908 * r51901;
double r51910 = r51907 / r51909;
return r51910;
}
double f(double a, double b, double c) {
double r51911 = b;
double r51912 = 2.4944562401296086e-289;
bool r51913 = r51911 <= r51912;
double r51914 = a;
double r51915 = -r51914;
double r51916 = 4.0;
double r51917 = r51915 * r51916;
double r51918 = c;
double r51919 = r51911 * r51911;
double r51920 = fma(r51917, r51918, r51919);
double r51921 = sqrt(r51920);
double r51922 = r51921 - r51911;
double r51923 = r51922 / r51914;
double r51924 = 2.0;
double r51925 = r51923 / r51924;
double r51926 = 3.224491050532555e+112;
bool r51927 = r51911 <= r51926;
double r51928 = -1.0;
double r51929 = -r51918;
double r51930 = r51914 * r51929;
double r51931 = fma(r51916, r51930, r51919);
double r51932 = sqrt(r51931);
double r51933 = r51932 + r51911;
double r51934 = cbrt(r51933);
double r51935 = r51928 / r51934;
double r51936 = r51935 / r51934;
double r51937 = r51914 / r51914;
double r51938 = r51916 * r51918;
double r51939 = r51938 / r51934;
double r51940 = r51937 * r51939;
double r51941 = r51936 * r51940;
double r51942 = r51941 / r51924;
double r51943 = 0.0;
double r51944 = fma(r51930, r51916, r51943);
double r51945 = 2.0;
double r51946 = r51945 * r51911;
double r51947 = r51944 / r51946;
double r51948 = r51947 / r51914;
double r51949 = r51948 / r51924;
double r51950 = r51927 ? r51942 : r51949;
double r51951 = r51913 ? r51925 : r51950;
return r51951;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 2.4944562401296086e-289Initial program 22.5
Simplified22.5
rmApplied *-un-lft-identity22.5
Applied *-un-lft-identity22.5
Applied times-frac22.5
Simplified22.5
Simplified22.5
if 2.4944562401296086e-289 < b < 3.224491050532555e+112Initial program 33.8
Simplified33.8
rmApplied flip--33.8
Simplified15.8
Simplified15.8
rmApplied *-un-lft-identity15.8
Applied add-cube-cbrt16.5
Applied *-un-lft-identity16.5
Applied times-frac16.5
Applied times-frac15.8
Simplified15.8
Simplified9.1
if 3.224491050532555e+112 < b Initial program 60.8
Simplified60.8
rmApplied flip--60.8
Simplified32.5
Simplified32.5
Taylor expanded around 0 13.1
Final simplification16.2
herbie shell --seed 2019194 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, full range"
(/ (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)))