\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.896735429482593 \cdot 10^{+46}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\mathbf{elif}\;b \le 1.1815645801505244 \cdot 10^{-79}:\\
\;\;\;\;\left(\sqrt{\left(c \cdot -4\right) \cdot a + b \cdot b} - b\right) \cdot \frac{1}{a \cdot 2}\\
\mathbf{else}:\\
\;\;\;\;-\frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r5161192 = b;
double r5161193 = -r5161192;
double r5161194 = r5161192 * r5161192;
double r5161195 = 4.0;
double r5161196 = a;
double r5161197 = r5161195 * r5161196;
double r5161198 = c;
double r5161199 = r5161197 * r5161198;
double r5161200 = r5161194 - r5161199;
double r5161201 = sqrt(r5161200);
double r5161202 = r5161193 + r5161201;
double r5161203 = 2.0;
double r5161204 = r5161203 * r5161196;
double r5161205 = r5161202 / r5161204;
return r5161205;
}
double f(double a, double b, double c) {
double r5161206 = b;
double r5161207 = -4.896735429482593e+46;
bool r5161208 = r5161206 <= r5161207;
double r5161209 = c;
double r5161210 = r5161209 / r5161206;
double r5161211 = a;
double r5161212 = r5161206 / r5161211;
double r5161213 = r5161210 - r5161212;
double r5161214 = 1.1815645801505244e-79;
bool r5161215 = r5161206 <= r5161214;
double r5161216 = -4.0;
double r5161217 = r5161209 * r5161216;
double r5161218 = r5161217 * r5161211;
double r5161219 = r5161206 * r5161206;
double r5161220 = r5161218 + r5161219;
double r5161221 = sqrt(r5161220);
double r5161222 = r5161221 - r5161206;
double r5161223 = 1.0;
double r5161224 = 2.0;
double r5161225 = r5161211 * r5161224;
double r5161226 = r5161223 / r5161225;
double r5161227 = r5161222 * r5161226;
double r5161228 = -r5161210;
double r5161229 = r5161215 ? r5161227 : r5161228;
double r5161230 = r5161208 ? r5161213 : r5161229;
return r5161230;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -4.896735429482593e+46Initial program 34.6
Simplified34.5
Taylor expanded around 0 34.5
Simplified34.6
rmApplied div-inv34.7
Taylor expanded around -inf 5.4
if -4.896735429482593e+46 < b < 1.1815645801505244e-79Initial program 12.7
Simplified12.8
Taylor expanded around 0 12.8
Simplified12.8
rmApplied div-inv12.9
if 1.1815645801505244e-79 < b Initial program 52.3
Simplified52.3
Taylor expanded around 0 52.3
Simplified52.3
rmApplied div-inv52.3
Taylor expanded around inf 9.6
Simplified9.6
Final simplification10.0
herbie shell --seed 2019119
(FPCore (a b c)
:name "Quadratic roots, full range"
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))