\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 -1.566577234736048594271680252121402983446 \cdot 10^{69}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le 2.649990358912618894034395734880511734682 \cdot 10^{-53}:\\
\;\;\;\;\frac{1}{\frac{2 \cdot a}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r40289 = b;
double r40290 = -r40289;
double r40291 = r40289 * r40289;
double r40292 = 4.0;
double r40293 = a;
double r40294 = r40292 * r40293;
double r40295 = c;
double r40296 = r40294 * r40295;
double r40297 = r40291 - r40296;
double r40298 = sqrt(r40297);
double r40299 = r40290 + r40298;
double r40300 = 2.0;
double r40301 = r40300 * r40293;
double r40302 = r40299 / r40301;
return r40302;
}
double f(double a, double b, double c) {
double r40303 = b;
double r40304 = -1.5665772347360486e+69;
bool r40305 = r40303 <= r40304;
double r40306 = 1.0;
double r40307 = c;
double r40308 = r40307 / r40303;
double r40309 = a;
double r40310 = r40303 / r40309;
double r40311 = r40308 - r40310;
double r40312 = r40306 * r40311;
double r40313 = 2.649990358912619e-53;
bool r40314 = r40303 <= r40313;
double r40315 = 1.0;
double r40316 = 2.0;
double r40317 = r40316 * r40309;
double r40318 = r40303 * r40303;
double r40319 = 4.0;
double r40320 = r40319 * r40309;
double r40321 = r40320 * r40307;
double r40322 = r40318 - r40321;
double r40323 = sqrt(r40322);
double r40324 = r40323 - r40303;
double r40325 = r40317 / r40324;
double r40326 = r40315 / r40325;
double r40327 = -1.0;
double r40328 = r40327 * r40308;
double r40329 = r40314 ? r40326 : r40328;
double r40330 = r40305 ? r40312 : r40329;
return r40330;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.5665772347360486e+69Initial program 41.7
Taylor expanded around -inf 4.4
Simplified4.4
if -1.5665772347360486e+69 < b < 2.649990358912619e-53Initial program 14.6
rmApplied clear-num14.7
Simplified14.7
if 2.649990358912619e-53 < b Initial program 54.0
Taylor expanded around inf 8.4
Final simplification10.5
herbie shell --seed 2019306 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, full range"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))