\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 -2.415824536209924848227828718073588940264 \cdot 10^{141}:\\
\;\;\;\;\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 \left(\frac{a}{\sqrt[3]{b} \cdot \sqrt[3]{b}} \cdot \frac{c}{\sqrt[3]{b}}\right) - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 4.623731436085776951393488738523920016456 \cdot 10^{144}:\\
\;\;\;\;\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|\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right| \cdot \sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{\mathsf{fma}\left(2, \frac{a \cdot c}{b}, -2 \cdot 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 r34974 = b;
double r34975 = 0.0;
bool r34976 = r34974 >= r34975;
double r34977 = -r34974;
double r34978 = r34974 * r34974;
double r34979 = 4.0;
double r34980 = a;
double r34981 = r34979 * r34980;
double r34982 = c;
double r34983 = r34981 * r34982;
double r34984 = r34978 - r34983;
double r34985 = sqrt(r34984);
double r34986 = r34977 - r34985;
double r34987 = 2.0;
double r34988 = r34987 * r34980;
double r34989 = r34986 / r34988;
double r34990 = r34987 * r34982;
double r34991 = r34977 + r34985;
double r34992 = r34990 / r34991;
double r34993 = r34976 ? r34989 : r34992;
return r34993;
}
double f(double a, double b, double c) {
double r34994 = b;
double r34995 = -2.415824536209925e+141;
bool r34996 = r34994 <= r34995;
double r34997 = 0.0;
bool r34998 = r34994 >= r34997;
double r34999 = -r34994;
double r35000 = r34994 * r34994;
double r35001 = 4.0;
double r35002 = a;
double r35003 = r35001 * r35002;
double r35004 = c;
double r35005 = r35003 * r35004;
double r35006 = r35000 - r35005;
double r35007 = sqrt(r35006);
double r35008 = r34999 - r35007;
double r35009 = 2.0;
double r35010 = r35009 * r35002;
double r35011 = r35008 / r35010;
double r35012 = r35009 * r35004;
double r35013 = cbrt(r34994);
double r35014 = r35013 * r35013;
double r35015 = r35002 / r35014;
double r35016 = r35004 / r35013;
double r35017 = r35015 * r35016;
double r35018 = r35009 * r35017;
double r35019 = r35018 - r34994;
double r35020 = r34999 + r35019;
double r35021 = r35012 / r35020;
double r35022 = r34998 ? r35011 : r35021;
double r35023 = 4.623731436085777e+144;
bool r35024 = r34994 <= r35023;
double r35025 = cbrt(r35006);
double r35026 = fabs(r35025);
double r35027 = sqrt(r35025);
double r35028 = r35026 * r35027;
double r35029 = r34999 + r35028;
double r35030 = r35012 / r35029;
double r35031 = r34998 ? r35011 : r35030;
double r35032 = r35002 * r35004;
double r35033 = r35032 / r34994;
double r35034 = -2.0;
double r35035 = r35034 * r34994;
double r35036 = fma(r35009, r35033, r35035);
double r35037 = r35036 / r35010;
double r35038 = r34999 + r35007;
double r35039 = r35012 / r35038;
double r35040 = r34998 ? r35037 : r35039;
double r35041 = r35024 ? r35031 : r35040;
double r35042 = r34996 ? r35022 : r35041;
return r35042;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -2.415824536209925e+141Initial program 36.1
Taylor expanded around -inf 6.5
rmApplied add-cube-cbrt6.5
Applied times-frac1.2
if -2.415824536209925e+141 < b < 4.623731436085777e+144Initial program 8.3
rmApplied add-cube-cbrt8.5
Applied sqrt-prod8.5
Simplified8.5
if 4.623731436085777e+144 < b Initial program 59.8
Taylor expanded around inf 10.2
Simplified10.2
Final simplification7.2
herbie shell --seed 2019325 +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)))))))