\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 -3.4397859828859872 \cdot 10^{117}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le -1.0621980184587312 \cdot 10^{-219}:\\
\;\;\;\;\frac{e^{\log \left(\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)}}{2 \cdot a}\\
\mathbf{elif}\;b \le 1.66563346804975556 \cdot 10^{146}:\\
\;\;\;\;\frac{\left(\frac{1}{2} \cdot 4\right) \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r50967 = b;
double r50968 = -r50967;
double r50969 = r50967 * r50967;
double r50970 = 4.0;
double r50971 = a;
double r50972 = r50970 * r50971;
double r50973 = c;
double r50974 = r50972 * r50973;
double r50975 = r50969 - r50974;
double r50976 = sqrt(r50975);
double r50977 = r50968 + r50976;
double r50978 = 2.0;
double r50979 = r50978 * r50971;
double r50980 = r50977 / r50979;
return r50980;
}
double f(double a, double b, double c) {
double r50981 = b;
double r50982 = -3.439785982885987e+117;
bool r50983 = r50981 <= r50982;
double r50984 = 1.0;
double r50985 = c;
double r50986 = r50985 / r50981;
double r50987 = a;
double r50988 = r50981 / r50987;
double r50989 = r50986 - r50988;
double r50990 = r50984 * r50989;
double r50991 = -1.0621980184587312e-219;
bool r50992 = r50981 <= r50991;
double r50993 = -r50981;
double r50994 = r50981 * r50981;
double r50995 = 4.0;
double r50996 = r50995 * r50987;
double r50997 = r50996 * r50985;
double r50998 = r50994 - r50997;
double r50999 = sqrt(r50998);
double r51000 = r50993 + r50999;
double r51001 = log(r51000);
double r51002 = exp(r51001);
double r51003 = 2.0;
double r51004 = r51003 * r50987;
double r51005 = r51002 / r51004;
double r51006 = 1.6656334680497556e+146;
bool r51007 = r50981 <= r51006;
double r51008 = 1.0;
double r51009 = r51008 / r51003;
double r51010 = r51009 * r50995;
double r51011 = r51010 * r50985;
double r51012 = r50993 - r50999;
double r51013 = r51011 / r51012;
double r51014 = -1.0;
double r51015 = r51014 * r50986;
double r51016 = r51007 ? r51013 : r51015;
double r51017 = r50992 ? r51005 : r51016;
double r51018 = r50983 ? r50990 : r51017;
return r51018;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -3.439785982885987e+117Initial program 51.7
Taylor expanded around -inf 2.9
Simplified2.9
if -3.439785982885987e+117 < b < -1.0621980184587312e-219Initial program 6.7
rmApplied add-exp-log10.5
if -1.0621980184587312e-219 < b < 1.6656334680497556e+146Initial program 32.0
rmApplied flip-+32.0
Simplified16.0
rmApplied clear-num16.2
Simplified15.0
rmApplied associate-/l*15.1
Simplified9.6
rmApplied associate-/r*9.1
Simplified9.0
if 1.6656334680497556e+146 < b Initial program 63.3
Taylor expanded around inf 1.8
Final simplification7.2
herbie shell --seed 2020049
(FPCore (a b c)
:name "Quadratic roots, full range"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))