\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 -3.177289780863109 \cdot 10^{+94}:\\
\;\;\;\;\frac{\left(\frac{c}{b} - \frac{b}{a}\right) \cdot 2}{2}\\
\mathbf{elif}\;b \le 7.296044290893796 \cdot 10^{-114}:\\
\;\;\;\;\frac{\frac{\sqrt{b \cdot b - 4 \cdot \left(a \cdot c\right)} - b}{a}}{2}\\
\mathbf{else}:\\
\;\;\;\;\frac{-2 \cdot \frac{c}{b}}{2}\\
\end{array}double f(double a, double b, double c) {
double r1312520 = b;
double r1312521 = -r1312520;
double r1312522 = r1312520 * r1312520;
double r1312523 = 4.0;
double r1312524 = a;
double r1312525 = r1312523 * r1312524;
double r1312526 = c;
double r1312527 = r1312525 * r1312526;
double r1312528 = r1312522 - r1312527;
double r1312529 = sqrt(r1312528);
double r1312530 = r1312521 + r1312529;
double r1312531 = 2.0;
double r1312532 = r1312531 * r1312524;
double r1312533 = r1312530 / r1312532;
return r1312533;
}
double f(double a, double b, double c) {
double r1312534 = b;
double r1312535 = -3.177289780863109e+94;
bool r1312536 = r1312534 <= r1312535;
double r1312537 = c;
double r1312538 = r1312537 / r1312534;
double r1312539 = a;
double r1312540 = r1312534 / r1312539;
double r1312541 = r1312538 - r1312540;
double r1312542 = 2.0;
double r1312543 = r1312541 * r1312542;
double r1312544 = r1312543 / r1312542;
double r1312545 = 7.296044290893796e-114;
bool r1312546 = r1312534 <= r1312545;
double r1312547 = r1312534 * r1312534;
double r1312548 = 4.0;
double r1312549 = r1312539 * r1312537;
double r1312550 = r1312548 * r1312549;
double r1312551 = r1312547 - r1312550;
double r1312552 = sqrt(r1312551);
double r1312553 = r1312552 - r1312534;
double r1312554 = r1312553 / r1312539;
double r1312555 = r1312554 / r1312542;
double r1312556 = -2.0;
double r1312557 = r1312556 * r1312538;
double r1312558 = r1312557 / r1312542;
double r1312559 = r1312546 ? r1312555 : r1312558;
double r1312560 = r1312536 ? r1312544 : r1312559;
return r1312560;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -3.177289780863109e+94Initial program 43.6
Simplified43.5
Taylor expanded around -inf 3.8
Simplified3.8
if -3.177289780863109e+94 < b < 7.296044290893796e-114Initial program 12.4
Simplified12.3
if 7.296044290893796e-114 < b Initial program 51.6
Simplified51.6
Taylor expanded around inf 10.8
Final simplification10.3
herbie shell --seed 2019141
(FPCore (a b c)
:name "Quadratic roots, full range"
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))