\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.8371925747446876 \cdot 10^{53}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le 8.67970785211126629 \cdot 10^{-40}:\\
\;\;\;\;\frac{1}{\frac{2 \cdot a}{\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 r56187 = b;
double r56188 = -r56187;
double r56189 = r56187 * r56187;
double r56190 = 4.0;
double r56191 = a;
double r56192 = r56190 * r56191;
double r56193 = c;
double r56194 = r56192 * r56193;
double r56195 = r56189 - r56194;
double r56196 = sqrt(r56195);
double r56197 = r56188 + r56196;
double r56198 = 2.0;
double r56199 = r56198 * r56191;
double r56200 = r56197 / r56199;
return r56200;
}
double f(double a, double b, double c) {
double r56201 = b;
double r56202 = -4.837192574744688e+53;
bool r56203 = r56201 <= r56202;
double r56204 = 1.0;
double r56205 = c;
double r56206 = r56205 / r56201;
double r56207 = a;
double r56208 = r56201 / r56207;
double r56209 = r56206 - r56208;
double r56210 = r56204 * r56209;
double r56211 = 8.679707852111266e-40;
bool r56212 = r56201 <= r56211;
double r56213 = 1.0;
double r56214 = 2.0;
double r56215 = r56214 * r56207;
double r56216 = -r56201;
double r56217 = r56201 * r56201;
double r56218 = 4.0;
double r56219 = r56218 * r56207;
double r56220 = r56219 * r56205;
double r56221 = r56217 - r56220;
double r56222 = sqrt(r56221);
double r56223 = r56216 + r56222;
double r56224 = r56215 / r56223;
double r56225 = r56213 / r56224;
double r56226 = -1.0;
double r56227 = r56226 * r56206;
double r56228 = r56212 ? r56225 : r56227;
double r56229 = r56203 ? r56210 : r56228;
return r56229;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -4.837192574744688e+53Initial program 37.6
Taylor expanded around -inf 5.7
Simplified5.7
if -4.837192574744688e+53 < b < 8.679707852111266e-40Initial program 15.4
rmApplied clear-num15.5
if 8.679707852111266e-40 < b Initial program 55.1
Taylor expanded around inf 7.5
Final simplification10.7
herbie shell --seed 2020025 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, full range"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))