\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 -5.503931209509311823152460653836804887804 \cdot 10^{150}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{else}:\\
\;\;\;\;-1 \cdot \frac{c}{b}\\
\end{array}\\
\mathbf{elif}\;b \le 7.613007054465526370435384505937457344391 \cdot 10^{97}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\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}}}{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}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{\frac{\left({b}^{2} - {b}^{2}\right) + 4 \cdot \left(a \cdot c\right)}{2}} \cdot \left(\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}\right)\\
\end{array}double f(double a, double b, double c) {
double r34978 = b;
double r34979 = 0.0;
bool r34980 = r34978 >= r34979;
double r34981 = -r34978;
double r34982 = r34978 * r34978;
double r34983 = 4.0;
double r34984 = a;
double r34985 = r34983 * r34984;
double r34986 = c;
double r34987 = r34985 * r34986;
double r34988 = r34982 - r34987;
double r34989 = sqrt(r34988);
double r34990 = r34981 - r34989;
double r34991 = 2.0;
double r34992 = r34991 * r34984;
double r34993 = r34990 / r34992;
double r34994 = r34991 * r34986;
double r34995 = r34981 + r34989;
double r34996 = r34994 / r34995;
double r34997 = r34980 ? r34993 : r34996;
return r34997;
}
double f(double a, double b, double c) {
double r34998 = b;
double r34999 = -5.503931209509312e+150;
bool r35000 = r34998 <= r34999;
double r35001 = 0.0;
bool r35002 = r34998 >= r35001;
double r35003 = 1.0;
double r35004 = c;
double r35005 = r35004 / r34998;
double r35006 = a;
double r35007 = r34998 / r35006;
double r35008 = r35005 - r35007;
double r35009 = r35003 * r35008;
double r35010 = -1.0;
double r35011 = r35010 * r35005;
double r35012 = r35002 ? r35009 : r35011;
double r35013 = 7.613007054465526e+97;
bool r35014 = r34998 <= r35013;
double r35015 = -r34998;
double r35016 = r34998 * r34998;
double r35017 = 4.0;
double r35018 = r35017 * r35006;
double r35019 = r35018 * r35004;
double r35020 = r35016 - r35019;
double r35021 = cbrt(r35020);
double r35022 = fabs(r35021);
double r35023 = sqrt(r35021);
double r35024 = r35022 * r35023;
double r35025 = r35015 - r35024;
double r35026 = 2.0;
double r35027 = r35026 * r35006;
double r35028 = r35025 / r35027;
double r35029 = r35026 * r35004;
double r35030 = sqrt(r35020);
double r35031 = r35015 + r35030;
double r35032 = r35029 / r35031;
double r35033 = r35002 ? r35028 : r35032;
double r35034 = 2.0;
double r35035 = pow(r34998, r35034);
double r35036 = r35035 - r35035;
double r35037 = r35006 * r35004;
double r35038 = r35017 * r35037;
double r35039 = r35036 + r35038;
double r35040 = r35039 / r35026;
double r35041 = r35004 / r35040;
double r35042 = r35015 - r35030;
double r35043 = r35041 * r35042;
double r35044 = r35002 ? r35009 : r35043;
double r35045 = r35014 ? r35033 : r35044;
double r35046 = r35000 ? r35012 : r35045;
return r35046;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -5.503931209509312e+150Initial program 37.5
Taylor expanded around inf 37.5
Taylor expanded around 0 37.5
Simplified37.5
rmApplied associate-/l*37.5
Taylor expanded around -inf 1.5
if -5.503931209509312e+150 < b < 7.613007054465526e+97Initial program 8.5
rmApplied add-cube-cbrt8.7
Applied sqrt-prod8.7
Simplified8.7
if 7.613007054465526e+97 < b Initial program 47.4
Taylor expanded around inf 10.2
Taylor expanded around 0 3.8
Simplified3.8
rmApplied flip-+3.8
Applied associate-/r/3.8
Simplified3.8
Final simplification6.6
herbie shell --seed 2019297
(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)))))))