\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 -0.1973887031618163923063491438369965180755:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le 1.724197465942408751027868496272110613308 \cdot 10^{-216}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{elif}\;b \le 813278.22458350402303040027618408203125:\\
\;\;\;\;\frac{\frac{0 + 4 \cdot \left(a \cdot c\right)}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r44910 = b;
double r44911 = -r44910;
double r44912 = r44910 * r44910;
double r44913 = 4.0;
double r44914 = a;
double r44915 = r44913 * r44914;
double r44916 = c;
double r44917 = r44915 * r44916;
double r44918 = r44912 - r44917;
double r44919 = sqrt(r44918);
double r44920 = r44911 + r44919;
double r44921 = 2.0;
double r44922 = r44921 * r44914;
double r44923 = r44920 / r44922;
return r44923;
}
double f(double a, double b, double c) {
double r44924 = b;
double r44925 = -0.1973887031618164;
bool r44926 = r44924 <= r44925;
double r44927 = 1.0;
double r44928 = c;
double r44929 = r44928 / r44924;
double r44930 = a;
double r44931 = r44924 / r44930;
double r44932 = r44929 - r44931;
double r44933 = r44927 * r44932;
double r44934 = 1.7241974659424088e-216;
bool r44935 = r44924 <= r44934;
double r44936 = -r44924;
double r44937 = r44924 * r44924;
double r44938 = 4.0;
double r44939 = r44938 * r44930;
double r44940 = r44939 * r44928;
double r44941 = r44937 - r44940;
double r44942 = sqrt(r44941);
double r44943 = r44936 + r44942;
double r44944 = 2.0;
double r44945 = r44944 * r44930;
double r44946 = r44943 / r44945;
double r44947 = 813278.224583504;
bool r44948 = r44924 <= r44947;
double r44949 = 0.0;
double r44950 = r44930 * r44928;
double r44951 = r44938 * r44950;
double r44952 = r44949 + r44951;
double r44953 = r44936 - r44942;
double r44954 = r44952 / r44953;
double r44955 = r44954 / r44945;
double r44956 = -1.0;
double r44957 = r44956 * r44929;
double r44958 = r44948 ? r44955 : r44957;
double r44959 = r44935 ? r44946 : r44958;
double r44960 = r44926 ? r44933 : r44959;
return r44960;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -0.1973887031618164Initial program 32.2
Taylor expanded around -inf 8.0
Simplified8.0
if -0.1973887031618164 < b < 1.7241974659424088e-216Initial program 11.9
if 1.7241974659424088e-216 < b < 813278.224583504Initial program 28.8
rmApplied flip-+28.9
Simplified17.9
if 813278.224583504 < b Initial program 55.9
Taylor expanded around inf 5.8
Final simplification9.9
herbie shell --seed 2019308
(FPCore (a b c)
:name "Quadratic roots, full range"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))