\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\end{array}\begin{array}{l}
\mathbf{if}\;b \le -4.05734525598461 \cdot 10^{150}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 7.4471423651860946 \cdot 10^{108}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\end{array}double f(double a, double b, double c) {
double r47852 = b;
double r47853 = 0.0;
bool r47854 = r47852 >= r47853;
double r47855 = -r47852;
double r47856 = r47852 * r47852;
double r47857 = 4.0;
double r47858 = a;
double r47859 = r47857 * r47858;
double r47860 = c;
double r47861 = r47859 * r47860;
double r47862 = r47856 - r47861;
double r47863 = sqrt(r47862);
double r47864 = r47855 - r47863;
double r47865 = 2.0;
double r47866 = r47865 * r47858;
double r47867 = r47864 / r47866;
double r47868 = r47865 * r47860;
double r47869 = r47855 + r47863;
double r47870 = r47868 / r47869;
double r47871 = r47854 ? r47867 : r47870;
return r47871;
}
double f(double a, double b, double c) {
double r47872 = b;
double r47873 = -4.05734525598461e+150;
bool r47874 = r47872 <= r47873;
double r47875 = 0.0;
bool r47876 = r47872 >= r47875;
double r47877 = -r47872;
double r47878 = r47872 * r47872;
double r47879 = 4.0;
double r47880 = a;
double r47881 = r47879 * r47880;
double r47882 = c;
double r47883 = r47881 * r47882;
double r47884 = r47878 - r47883;
double r47885 = sqrt(r47884);
double r47886 = r47877 - r47885;
double r47887 = 2.0;
double r47888 = r47887 * r47880;
double r47889 = r47886 / r47888;
double r47890 = r47887 * r47882;
double r47891 = r47880 * r47882;
double r47892 = r47891 / r47872;
double r47893 = r47887 * r47892;
double r47894 = r47893 - r47872;
double r47895 = r47877 + r47894;
double r47896 = r47890 / r47895;
double r47897 = r47876 ? r47889 : r47896;
double r47898 = 7.447142365186095e+108;
bool r47899 = r47872 <= r47898;
double r47900 = sqrt(r47885);
double r47901 = r47900 * r47900;
double r47902 = r47877 + r47901;
double r47903 = r47890 / r47902;
double r47904 = r47876 ? r47889 : r47903;
double r47905 = r47872 - r47893;
double r47906 = r47877 - r47905;
double r47907 = r47906 / r47888;
double r47908 = r47877 + r47885;
double r47909 = r47890 / r47908;
double r47910 = r47876 ? r47907 : r47909;
double r47911 = r47899 ? r47904 : r47910;
double r47912 = r47874 ? r47897 : r47911;
return r47912;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -4.05734525598461e+150Initial program 37.8
Taylor expanded around -inf 6.6
if -4.05734525598461e+150 < b < 7.447142365186095e+108Initial program 8.6
rmApplied add-sqr-sqrt8.6
Applied sqrt-prod8.7
if 7.447142365186095e+108 < b Initial program 50.2
Taylor expanded around inf 10.9
Final simplification8.7
herbie shell --seed 2020062 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 1"
:precision binary64
(if (>= b 0.0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))