\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.31883146340525189 \cdot 10^{107}:\\
\;\;\;\;\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.9699136206339502 \cdot 10^{103}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\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}\\
\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:\\
\;\;\;\;\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 r35049 = b;
double r35050 = 0.0;
bool r35051 = r35049 >= r35050;
double r35052 = -r35049;
double r35053 = r35049 * r35049;
double r35054 = 4.0;
double r35055 = a;
double r35056 = r35054 * r35055;
double r35057 = c;
double r35058 = r35056 * r35057;
double r35059 = r35053 - r35058;
double r35060 = sqrt(r35059);
double r35061 = r35052 - r35060;
double r35062 = 2.0;
double r35063 = r35062 * r35055;
double r35064 = r35061 / r35063;
double r35065 = r35062 * r35057;
double r35066 = r35052 + r35060;
double r35067 = r35065 / r35066;
double r35068 = r35051 ? r35064 : r35067;
return r35068;
}
double f(double a, double b, double c) {
double r35069 = b;
double r35070 = -2.318831463405252e+107;
bool r35071 = r35069 <= r35070;
double r35072 = 0.0;
bool r35073 = r35069 >= r35072;
double r35074 = -r35069;
double r35075 = r35069 * r35069;
double r35076 = 4.0;
double r35077 = a;
double r35078 = r35076 * r35077;
double r35079 = c;
double r35080 = r35078 * r35079;
double r35081 = r35075 - r35080;
double r35082 = sqrt(r35081);
double r35083 = r35074 - r35082;
double r35084 = 2.0;
double r35085 = r35084 * r35077;
double r35086 = r35083 / r35085;
double r35087 = r35084 * r35079;
double r35088 = r35077 * r35079;
double r35089 = r35088 / r35069;
double r35090 = r35084 * r35089;
double r35091 = r35090 - r35069;
double r35092 = r35074 + r35091;
double r35093 = r35087 / r35092;
double r35094 = r35073 ? r35086 : r35093;
double r35095 = 7.96991362063395e+103;
bool r35096 = r35069 <= r35095;
double r35097 = sqrt(r35082);
double r35098 = r35097 * r35097;
double r35099 = r35074 - r35098;
double r35100 = r35099 / r35085;
double r35101 = r35074 + r35082;
double r35102 = r35087 / r35101;
double r35103 = r35073 ? r35100 : r35102;
double r35104 = r35069 - r35090;
double r35105 = r35074 - r35104;
double r35106 = r35105 / r35085;
double r35107 = r35073 ? r35106 : r35102;
double r35108 = r35096 ? r35103 : r35107;
double r35109 = r35071 ? r35094 : r35108;
return r35109;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -2.318831463405252e+107Initial program 32.2
Taylor expanded around -inf 6.5
if -2.318831463405252e+107 < b < 7.96991362063395e+103Initial program 8.7
rmApplied add-sqr-sqrt8.7
Applied sqrt-prod8.8
if 7.96991362063395e+103 < b Initial program 47.9
Taylor expanded around inf 10.2
Final simplification8.5
herbie shell --seed 2020024 +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)))))))