\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.1144981103869975 \cdot 10^{+131}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\mathbf{elif}\;b \le 4.5810084990875205 \cdot 10^{-68}:\\
\;\;\;\;\frac{1}{\frac{a}{\frac{\sqrt{\left(a \cdot -4\right) \cdot c + b \cdot b} - b}{2}}}\\
\mathbf{else}:\\
\;\;\;\;-\frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r2366174 = b;
double r2366175 = -r2366174;
double r2366176 = r2366174 * r2366174;
double r2366177 = 4.0;
double r2366178 = a;
double r2366179 = r2366177 * r2366178;
double r2366180 = c;
double r2366181 = r2366179 * r2366180;
double r2366182 = r2366176 - r2366181;
double r2366183 = sqrt(r2366182);
double r2366184 = r2366175 + r2366183;
double r2366185 = 2.0;
double r2366186 = r2366185 * r2366178;
double r2366187 = r2366184 / r2366186;
return r2366187;
}
double f(double a, double b, double c) {
double r2366188 = b;
double r2366189 = -2.1144981103869975e+131;
bool r2366190 = r2366188 <= r2366189;
double r2366191 = c;
double r2366192 = r2366191 / r2366188;
double r2366193 = a;
double r2366194 = r2366188 / r2366193;
double r2366195 = r2366192 - r2366194;
double r2366196 = 4.5810084990875205e-68;
bool r2366197 = r2366188 <= r2366196;
double r2366198 = 1.0;
double r2366199 = -4.0;
double r2366200 = r2366193 * r2366199;
double r2366201 = r2366200 * r2366191;
double r2366202 = r2366188 * r2366188;
double r2366203 = r2366201 + r2366202;
double r2366204 = sqrt(r2366203);
double r2366205 = r2366204 - r2366188;
double r2366206 = 2.0;
double r2366207 = r2366205 / r2366206;
double r2366208 = r2366193 / r2366207;
double r2366209 = r2366198 / r2366208;
double r2366210 = -r2366192;
double r2366211 = r2366197 ? r2366209 : r2366210;
double r2366212 = r2366190 ? r2366195 : r2366211;
return r2366212;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -2.1144981103869975e+131Initial program 53.8
Taylor expanded around -inf 2.6
if -2.1144981103869975e+131 < b < 4.5810084990875205e-68Initial program 13.3
rmApplied div-inv13.5
Simplified13.5
rmApplied associate-*r/13.3
Simplified13.3
rmApplied clear-num13.4
if 4.5810084990875205e-68 < b Initial program 52.0
rmApplied div-inv52.0
Simplified52.0
rmApplied associate-*r/52.0
Simplified52.0
Taylor expanded around 0 51.9
Simplified51.9
Taylor expanded around inf 9.3
Simplified9.3
Final simplification10.4
herbie shell --seed 2019163
(FPCore (a b c)
:name "Quadratic roots, full range"
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))