\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.0461303908572575 \cdot 10^{65}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le 2.98127510036099003 \cdot 10^{-264}:\\
\;\;\;\;\frac{1}{\frac{2 \cdot a}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\
\mathbf{elif}\;b \le 2114787851.2472425:\\
\;\;\;\;\frac{\frac{\left({b}^{2} - {b}^{2}\right) + 4 \cdot \left(a \cdot c\right)}{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 r53396 = b;
double r53397 = -r53396;
double r53398 = r53396 * r53396;
double r53399 = 4.0;
double r53400 = a;
double r53401 = r53399 * r53400;
double r53402 = c;
double r53403 = r53401 * r53402;
double r53404 = r53398 - r53403;
double r53405 = sqrt(r53404);
double r53406 = r53397 + r53405;
double r53407 = 2.0;
double r53408 = r53407 * r53400;
double r53409 = r53406 / r53408;
return r53409;
}
double f(double a, double b, double c) {
double r53410 = b;
double r53411 = -1.0461303908572575e+65;
bool r53412 = r53410 <= r53411;
double r53413 = 1.0;
double r53414 = c;
double r53415 = r53414 / r53410;
double r53416 = a;
double r53417 = r53410 / r53416;
double r53418 = r53415 - r53417;
double r53419 = r53413 * r53418;
double r53420 = 2.98127510036099e-264;
bool r53421 = r53410 <= r53420;
double r53422 = 1.0;
double r53423 = 2.0;
double r53424 = r53423 * r53416;
double r53425 = -r53410;
double r53426 = r53410 * r53410;
double r53427 = 4.0;
double r53428 = r53427 * r53416;
double r53429 = r53428 * r53414;
double r53430 = r53426 - r53429;
double r53431 = sqrt(r53430);
double r53432 = r53425 + r53431;
double r53433 = r53424 / r53432;
double r53434 = r53422 / r53433;
double r53435 = 2114787851.2472425;
bool r53436 = r53410 <= r53435;
double r53437 = 2.0;
double r53438 = pow(r53410, r53437);
double r53439 = r53438 - r53438;
double r53440 = r53416 * r53414;
double r53441 = r53427 * r53440;
double r53442 = r53439 + r53441;
double r53443 = r53442 / r53424;
double r53444 = r53425 - r53431;
double r53445 = r53443 / r53444;
double r53446 = -1.0;
double r53447 = r53446 * r53415;
double r53448 = r53436 ? r53445 : r53447;
double r53449 = r53421 ? r53434 : r53448;
double r53450 = r53412 ? r53419 : r53449;
return r53450;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.0461303908572575e+65Initial program 41.3
Taylor expanded around -inf 4.6
Simplified4.6
if -1.0461303908572575e+65 < b < 2.98127510036099e-264Initial program 10.7
rmApplied clear-num10.8
if 2.98127510036099e-264 < b < 2114787851.2472425Initial program 27.8
rmApplied clear-num27.8
rmApplied flip-+27.8
Applied associate-/r/27.9
Applied associate-/r*27.9
Simplified17.7
if 2114787851.2472425 < b Initial program 56.3
Taylor expanded around inf 4.8
Final simplification9.1
herbie shell --seed 2020059
(FPCore (a b c)
:name "Quadratic roots, full range"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))