\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 -7.3975762435547 \cdot 10^{+118}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\mathbf{elif}\;b \le 1.3115303715225787 \cdot 10^{-131}:\\
\;\;\;\;\frac{\frac{\sqrt{b \cdot b - \left(a \cdot 4\right) \cdot c} - b}{2}}{a}\\
\mathbf{else}:\\
\;\;\;\;-\frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r1764698 = b;
double r1764699 = -r1764698;
double r1764700 = r1764698 * r1764698;
double r1764701 = 4.0;
double r1764702 = a;
double r1764703 = r1764701 * r1764702;
double r1764704 = c;
double r1764705 = r1764703 * r1764704;
double r1764706 = r1764700 - r1764705;
double r1764707 = sqrt(r1764706);
double r1764708 = r1764699 + r1764707;
double r1764709 = 2.0;
double r1764710 = r1764709 * r1764702;
double r1764711 = r1764708 / r1764710;
return r1764711;
}
double f(double a, double b, double c) {
double r1764712 = b;
double r1764713 = -7.3975762435547e+118;
bool r1764714 = r1764712 <= r1764713;
double r1764715 = c;
double r1764716 = r1764715 / r1764712;
double r1764717 = a;
double r1764718 = r1764712 / r1764717;
double r1764719 = r1764716 - r1764718;
double r1764720 = 1.3115303715225787e-131;
bool r1764721 = r1764712 <= r1764720;
double r1764722 = r1764712 * r1764712;
double r1764723 = 4.0;
double r1764724 = r1764717 * r1764723;
double r1764725 = r1764724 * r1764715;
double r1764726 = r1764722 - r1764725;
double r1764727 = sqrt(r1764726);
double r1764728 = r1764727 - r1764712;
double r1764729 = 2.0;
double r1764730 = r1764728 / r1764729;
double r1764731 = r1764730 / r1764717;
double r1764732 = -r1764716;
double r1764733 = r1764721 ? r1764731 : r1764732;
double r1764734 = r1764714 ? r1764719 : r1764733;
return r1764734;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -7.3975762435547e+118Initial program 49.0
Simplified49.0
Taylor expanded around -inf 49.0
Simplified49.0
Taylor expanded around -inf 3.0
if -7.3975762435547e+118 < b < 1.3115303715225787e-131Initial program 10.7
Simplified10.7
Taylor expanded around -inf 10.7
Simplified10.7
if 1.3115303715225787e-131 < b Initial program 50.3
Simplified50.3
Taylor expanded around -inf 50.3
Simplified50.3
Taylor expanded around inf 11.7
Simplified11.7
Final simplification10.0
herbie shell --seed 2019134 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, full range"
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))