\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.52779163831840318 \cdot 10^{117}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{elif}\;b \le 4.3062534203630095 \cdot 10^{-45}:\\
\;\;\;\;\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 r61613 = b;
double r61614 = -r61613;
double r61615 = r61613 * r61613;
double r61616 = 4.0;
double r61617 = a;
double r61618 = r61616 * r61617;
double r61619 = c;
double r61620 = r61618 * r61619;
double r61621 = r61615 - r61620;
double r61622 = sqrt(r61621);
double r61623 = r61614 + r61622;
double r61624 = 2.0;
double r61625 = r61624 * r61617;
double r61626 = r61623 / r61625;
return r61626;
}
double f(double a, double b, double c) {
double r61627 = b;
double r61628 = -1.5277916383184032e+117;
bool r61629 = r61627 <= r61628;
double r61630 = 1.0;
double r61631 = c;
double r61632 = r61631 / r61627;
double r61633 = a;
double r61634 = r61627 / r61633;
double r61635 = r61632 - r61634;
double r61636 = r61630 * r61635;
double r61637 = 4.3062534203630095e-45;
bool r61638 = r61627 <= r61637;
double r61639 = 1.0;
double r61640 = 2.0;
double r61641 = r61640 * r61633;
double r61642 = -r61627;
double r61643 = r61627 * r61627;
double r61644 = 4.0;
double r61645 = r61644 * r61633;
double r61646 = r61645 * r61631;
double r61647 = r61643 - r61646;
double r61648 = sqrt(r61647);
double r61649 = r61642 + r61648;
double r61650 = r61641 / r61649;
double r61651 = r61639 / r61650;
double r61652 = -1.0;
double r61653 = r61652 * r61632;
double r61654 = r61638 ? r61651 : r61653;
double r61655 = r61629 ? r61636 : r61654;
return r61655;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.5277916383184032e+117Initial program 51.3
Taylor expanded around -inf 3.7
Simplified3.7
if -1.5277916383184032e+117 < b < 4.3062534203630095e-45Initial program 13.6
rmApplied clear-num13.7
if 4.3062534203630095e-45 < b Initial program 54.8
Taylor expanded around inf 7.5
Final simplification9.9
herbie shell --seed 2020064 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, full range"
:precision binary64
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))