\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.50529903241060843 \cdot 10^{27}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le -6.63395785424786023 \cdot 10^{-258}:\\
\;\;\;\;\left(\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right) \cdot \frac{1}{2 \cdot a}\\
\mathbf{elif}\;b \le 1.16896907782470713 \cdot 10^{-19}:\\
\;\;\;\;\frac{\frac{1}{\frac{\frac{\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{4}}{a}}{c}}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r93480 = b;
double r93481 = -r93480;
double r93482 = r93480 * r93480;
double r93483 = 4.0;
double r93484 = a;
double r93485 = r93483 * r93484;
double r93486 = c;
double r93487 = r93485 * r93486;
double r93488 = r93482 - r93487;
double r93489 = sqrt(r93488);
double r93490 = r93481 + r93489;
double r93491 = 2.0;
double r93492 = r93491 * r93484;
double r93493 = r93490 / r93492;
return r93493;
}
double f(double a, double b, double c) {
double r93494 = b;
double r93495 = -1.5052990324106084e+27;
bool r93496 = r93494 <= r93495;
double r93497 = 1.0;
double r93498 = c;
double r93499 = r93498 / r93494;
double r93500 = a;
double r93501 = r93494 / r93500;
double r93502 = r93499 - r93501;
double r93503 = r93497 * r93502;
double r93504 = -6.63395785424786e-258;
bool r93505 = r93494 <= r93504;
double r93506 = -r93494;
double r93507 = r93494 * r93494;
double r93508 = 4.0;
double r93509 = r93508 * r93500;
double r93510 = r93509 * r93498;
double r93511 = r93507 - r93510;
double r93512 = sqrt(r93511);
double r93513 = r93506 + r93512;
double r93514 = 1.0;
double r93515 = 2.0;
double r93516 = r93515 * r93500;
double r93517 = r93514 / r93516;
double r93518 = r93513 * r93517;
double r93519 = 1.1689690778247071e-19;
bool r93520 = r93494 <= r93519;
double r93521 = r93506 - r93512;
double r93522 = r93521 / r93508;
double r93523 = r93522 / r93500;
double r93524 = r93523 / r93498;
double r93525 = r93514 / r93524;
double r93526 = r93525 / r93516;
double r93527 = -1.0;
double r93528 = r93527 * r93499;
double r93529 = r93520 ? r93526 : r93528;
double r93530 = r93505 ? r93518 : r93529;
double r93531 = r93496 ? r93503 : r93530;
return r93531;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.5052990324106084e+27Initial program 35.7
Taylor expanded around -inf 6.7
Simplified6.7
if -1.5052990324106084e+27 < b < -6.63395785424786e-258Initial program 9.0
rmApplied div-inv9.1
if -6.63395785424786e-258 < b < 1.1689690778247071e-19Initial program 23.8
rmApplied flip-+23.9
Simplified17.8
rmApplied clear-num17.8
Simplified17.8
rmApplied associate-/r*15.2
if 1.1689690778247071e-19 < b Initial program 55.0
Taylor expanded around inf 6.2
Final simplification8.9
herbie shell --seed 2020081 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, full range"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))