\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 -9.088000531423294 \cdot 10^{+152}:\\
\;\;\;\;\frac{c}{b} - \frac{b}{a}\\
\mathbf{elif}\;b \le 9.354082991670835 \cdot 10^{-125}:\\
\;\;\;\;\frac{\left(\sqrt{\mathsf{fma}\left(a \cdot -4, c, b \cdot b\right)} - b\right) \cdot \frac{1}{2}}{a}\\
\mathbf{else}:\\
\;\;\;\;\frac{-c}{b}\\
\end{array}double f(double a, double b, double c) {
double r910580 = b;
double r910581 = -r910580;
double r910582 = r910580 * r910580;
double r910583 = 4.0;
double r910584 = a;
double r910585 = r910583 * r910584;
double r910586 = c;
double r910587 = r910585 * r910586;
double r910588 = r910582 - r910587;
double r910589 = sqrt(r910588);
double r910590 = r910581 + r910589;
double r910591 = 2.0;
double r910592 = r910591 * r910584;
double r910593 = r910590 / r910592;
return r910593;
}
double f(double a, double b, double c) {
double r910594 = b;
double r910595 = -9.088000531423294e+152;
bool r910596 = r910594 <= r910595;
double r910597 = c;
double r910598 = r910597 / r910594;
double r910599 = a;
double r910600 = r910594 / r910599;
double r910601 = r910598 - r910600;
double r910602 = 9.354082991670835e-125;
bool r910603 = r910594 <= r910602;
double r910604 = -4.0;
double r910605 = r910599 * r910604;
double r910606 = r910594 * r910594;
double r910607 = fma(r910605, r910597, r910606);
double r910608 = sqrt(r910607);
double r910609 = r910608 - r910594;
double r910610 = 0.5;
double r910611 = r910609 * r910610;
double r910612 = r910611 / r910599;
double r910613 = -r910597;
double r910614 = r910613 / r910594;
double r910615 = r910603 ? r910612 : r910614;
double r910616 = r910596 ? r910601 : r910615;
return r910616;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -9.088000531423294e+152Initial program 60.4
Simplified60.4
Taylor expanded around -inf 1.5
if -9.088000531423294e+152 < b < 9.354082991670835e-125Initial program 10.9
Simplified10.9
rmApplied *-un-lft-identity10.9
Applied div-inv11.1
Applied times-frac11.1
Simplified11.1
Simplified11.1
rmApplied associate-*r/10.9
if 9.354082991670835e-125 < b Initial program 49.8
Simplified49.8
Taylor expanded around inf 11.9
Simplified11.9
Final simplification10.3
herbie shell --seed 2019153 +o rules:numerics
(FPCore (a b c)
:name "Quadratic roots, full range"
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))