\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 -4.739519777490095733488952130644039307968 \cdot 10^{139}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le 1.034940633201112123069802876954999016687 \cdot 10^{-134}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{elif}\;b \le 1.942537531933752129700502847729005312685 \cdot 10^{102}:\\
\;\;\;\;\frac{\sqrt[3]{c \cdot \left(4 \cdot a\right)} \cdot \sqrt[3]{c \cdot \left(4 \cdot a\right)}}{2} \cdot \frac{\frac{\sqrt[3]{c \cdot \left(4 \cdot a\right)}}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{a}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r41895 = b;
double r41896 = -r41895;
double r41897 = r41895 * r41895;
double r41898 = 4.0;
double r41899 = a;
double r41900 = r41898 * r41899;
double r41901 = c;
double r41902 = r41900 * r41901;
double r41903 = r41897 - r41902;
double r41904 = sqrt(r41903);
double r41905 = r41896 + r41904;
double r41906 = 2.0;
double r41907 = r41906 * r41899;
double r41908 = r41905 / r41907;
return r41908;
}
double f(double a, double b, double c) {
double r41909 = b;
double r41910 = -4.7395197774900957e+139;
bool r41911 = r41909 <= r41910;
double r41912 = 1.0;
double r41913 = c;
double r41914 = r41913 / r41909;
double r41915 = a;
double r41916 = r41909 / r41915;
double r41917 = r41914 - r41916;
double r41918 = r41912 * r41917;
double r41919 = 1.0349406332011121e-134;
bool r41920 = r41909 <= r41919;
double r41921 = -r41909;
double r41922 = r41909 * r41909;
double r41923 = 4.0;
double r41924 = r41923 * r41915;
double r41925 = r41924 * r41913;
double r41926 = r41922 - r41925;
double r41927 = sqrt(r41926);
double r41928 = r41921 + r41927;
double r41929 = 2.0;
double r41930 = r41929 * r41915;
double r41931 = r41928 / r41930;
double r41932 = 1.9425375319337521e+102;
bool r41933 = r41909 <= r41932;
double r41934 = r41913 * r41924;
double r41935 = cbrt(r41934);
double r41936 = r41935 * r41935;
double r41937 = r41936 / r41929;
double r41938 = r41921 - r41927;
double r41939 = r41935 / r41938;
double r41940 = r41939 / r41915;
double r41941 = r41937 * r41940;
double r41942 = -1.0;
double r41943 = r41942 * r41914;
double r41944 = r41933 ? r41941 : r41943;
double r41945 = r41920 ? r41931 : r41944;
double r41946 = r41911 ? r41918 : r41945;
return r41946;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -4.7395197774900957e+139Initial program 58.8
Taylor expanded around -inf 2.5
Simplified2.5
if -4.7395197774900957e+139 < b < 1.0349406332011121e-134Initial program 10.8
rmApplied div-inv11.0
rmApplied un-div-inv10.8
if 1.0349406332011121e-134 < b < 1.9425375319337521e+102Initial program 39.4
rmApplied flip-+39.4
Simplified14.9
rmApplied *-un-lft-identity14.9
Applied add-cube-cbrt15.6
Applied times-frac15.6
Applied times-frac15.6
Simplified15.6
Simplified15.6
if 1.9425375319337521e+102 < b Initial program 59.0
Taylor expanded around inf 2.2
Final simplification8.8
herbie shell --seed 2019212
(FPCore (a b c)
:name "Quadratic roots, full range"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))