\begin{array}{l}
\mathbf{if}\;b \ge 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 -1.3622257246714918 \cdot 10^{+154}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\left(-b\right) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 6.7864129831087 \cdot 10^{+143}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 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{c \cdot 2}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{\left(\frac{a}{\frac{b}{c}} - b\right) \cdot 2}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}\\
\end{array}double f(double a, double b, double c) {
double r1109055 = b;
double r1109056 = 0.0;
bool r1109057 = r1109055 >= r1109056;
double r1109058 = -r1109055;
double r1109059 = r1109055 * r1109055;
double r1109060 = 4.0;
double r1109061 = a;
double r1109062 = r1109060 * r1109061;
double r1109063 = c;
double r1109064 = r1109062 * r1109063;
double r1109065 = r1109059 - r1109064;
double r1109066 = sqrt(r1109065);
double r1109067 = r1109058 - r1109066;
double r1109068 = 2.0;
double r1109069 = r1109068 * r1109061;
double r1109070 = r1109067 / r1109069;
double r1109071 = r1109068 * r1109063;
double r1109072 = r1109058 + r1109066;
double r1109073 = r1109071 / r1109072;
double r1109074 = r1109057 ? r1109070 : r1109073;
return r1109074;
}
double f(double a, double b, double c) {
double r1109075 = b;
double r1109076 = -1.3622257246714918e+154;
bool r1109077 = r1109075 <= r1109076;
double r1109078 = 0.0;
bool r1109079 = r1109075 >= r1109078;
double r1109080 = -r1109075;
double r1109081 = r1109075 * r1109075;
double r1109082 = 4.0;
double r1109083 = a;
double r1109084 = r1109082 * r1109083;
double r1109085 = c;
double r1109086 = r1109084 * r1109085;
double r1109087 = r1109081 - r1109086;
double r1109088 = sqrt(r1109087);
double r1109089 = r1109080 - r1109088;
double r1109090 = 2.0;
double r1109091 = r1109090 * r1109083;
double r1109092 = r1109089 / r1109091;
double r1109093 = r1109085 * r1109090;
double r1109094 = r1109083 * r1109085;
double r1109095 = r1109094 / r1109075;
double r1109096 = r1109090 * r1109095;
double r1109097 = r1109096 - r1109075;
double r1109098 = r1109080 + r1109097;
double r1109099 = r1109093 / r1109098;
double r1109100 = r1109079 ? r1109092 : r1109099;
double r1109101 = 6.7864129831087e+143;
bool r1109102 = r1109075 <= r1109101;
double r1109103 = sqrt(r1109088);
double r1109104 = r1109103 * r1109103;
double r1109105 = r1109080 - r1109104;
double r1109106 = r1109105 / r1109091;
double r1109107 = r1109088 + r1109080;
double r1109108 = r1109093 / r1109107;
double r1109109 = r1109079 ? r1109106 : r1109108;
double r1109110 = r1109075 / r1109085;
double r1109111 = r1109083 / r1109110;
double r1109112 = r1109111 - r1109075;
double r1109113 = r1109112 * r1109090;
double r1109114 = r1109113 / r1109091;
double r1109115 = r1109079 ? r1109114 : r1109108;
double r1109116 = r1109102 ? r1109109 : r1109115;
double r1109117 = r1109077 ? r1109100 : r1109116;
return r1109117;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3622257246714918e+154Initial program 39.8
Taylor expanded around -inf 6.2
if -1.3622257246714918e+154 < b < 6.7864129831087e+143Initial program 8.1
rmApplied add-sqr-sqrt8.1
Applied sqrt-prod8.2
if 6.7864129831087e+143 < b Initial program 56.4
Taylor expanded around inf 10.5
Simplified2.6
Final simplification7.2
herbie shell --seed 2019143
(FPCore (a b c)
:name "jeff quadratic root 1"
(if (>= b 0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))