\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}\begin{array}{l}
\mathbf{if}\;b \le -6.64932438357787709 \cdot 10^{95}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 6.573970333421884 \cdot 10^{98}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\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}}}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r36985 = b;
double r36986 = 0.0;
bool r36987 = r36985 >= r36986;
double r36988 = 2.0;
double r36989 = c;
double r36990 = r36988 * r36989;
double r36991 = -r36985;
double r36992 = r36985 * r36985;
double r36993 = 4.0;
double r36994 = a;
double r36995 = r36993 * r36994;
double r36996 = r36995 * r36989;
double r36997 = r36992 - r36996;
double r36998 = sqrt(r36997);
double r36999 = r36991 - r36998;
double r37000 = r36990 / r36999;
double r37001 = r36991 + r36998;
double r37002 = r36988 * r36994;
double r37003 = r37001 / r37002;
double r37004 = r36987 ? r37000 : r37003;
return r37004;
}
double f(double a, double b, double c) {
double r37005 = b;
double r37006 = -6.649324383577877e+95;
bool r37007 = r37005 <= r37006;
double r37008 = 0.0;
bool r37009 = r37005 >= r37008;
double r37010 = 2.0;
double r37011 = c;
double r37012 = r37010 * r37011;
double r37013 = -r37005;
double r37014 = r37005 * r37005;
double r37015 = 4.0;
double r37016 = a;
double r37017 = r37015 * r37016;
double r37018 = r37017 * r37011;
double r37019 = r37014 - r37018;
double r37020 = sqrt(r37019);
double r37021 = r37013 - r37020;
double r37022 = r37012 / r37021;
double r37023 = r37016 * r37011;
double r37024 = r37023 / r37005;
double r37025 = r37010 * r37024;
double r37026 = 2.0;
double r37027 = r37026 * r37005;
double r37028 = r37025 - r37027;
double r37029 = r37010 * r37016;
double r37030 = r37028 / r37029;
double r37031 = r37009 ? r37022 : r37030;
double r37032 = 6.573970333421884e+98;
bool r37033 = r37005 <= r37032;
double r37034 = sqrt(r37020);
double r37035 = r37034 * r37034;
double r37036 = r37013 + r37035;
double r37037 = r37036 / r37029;
double r37038 = r37009 ? r37022 : r37037;
double r37039 = r37012 / r37028;
double r37040 = r37013 + r37020;
double r37041 = r37040 / r37029;
double r37042 = r37009 ? r37039 : r37041;
double r37043 = r37033 ? r37038 : r37042;
double r37044 = r37007 ? r37031 : r37043;
return r37044;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -6.649324383577877e+95Initial program 45.7
Taylor expanded around -inf 11.6
if -6.649324383577877e+95 < b < 6.573970333421884e+98Initial program 9.1
rmApplied add-sqr-sqrt9.1
Applied sqrt-prod9.2
if 6.573970333421884e+98 < b Initial program 29.9
Taylor expanded around inf 7.0
Final simplification9.1
herbie shell --seed 2020065
(FPCore (a b c)
:name "jeff quadratic root 2"
:precision binary64
(if (>= b 0.0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))