\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{\frac{\sqrt{b \cdot b - \left(c \cdot a\right) \cdot 4}}{a}}{2} - \frac{\frac{b}{a}}{2}\\
\mathbf{else}:\\
\;\;\;\;-\frac{c}{b}\\
\end{array}double f(double a, double b, double c) {
double r663726 = b;
double r663727 = -r663726;
double r663728 = r663726 * r663726;
double r663729 = 4.0;
double r663730 = a;
double r663731 = r663729 * r663730;
double r663732 = c;
double r663733 = r663731 * r663732;
double r663734 = r663728 - r663733;
double r663735 = sqrt(r663734);
double r663736 = r663727 + r663735;
double r663737 = 2.0;
double r663738 = r663737 * r663730;
double r663739 = r663736 / r663738;
return r663739;
}
double f(double a, double b, double c) {
double r663740 = b;
double r663741 = -9.088000531423294e+152;
bool r663742 = r663740 <= r663741;
double r663743 = c;
double r663744 = r663743 / r663740;
double r663745 = a;
double r663746 = r663740 / r663745;
double r663747 = r663744 - r663746;
double r663748 = 9.354082991670835e-125;
bool r663749 = r663740 <= r663748;
double r663750 = r663740 * r663740;
double r663751 = r663743 * r663745;
double r663752 = 4.0;
double r663753 = r663751 * r663752;
double r663754 = r663750 - r663753;
double r663755 = sqrt(r663754);
double r663756 = r663755 / r663745;
double r663757 = 2.0;
double r663758 = r663756 / r663757;
double r663759 = r663746 / r663757;
double r663760 = r663758 - r663759;
double r663761 = -r663744;
double r663762 = r663749 ? r663760 : r663761;
double r663763 = r663742 ? r663747 : r663762;
return r663763;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
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 div-sub10.9
Applied div-sub10.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
(FPCore (a b c)
:name "Quadratic roots, full range"
(/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)))