\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 -3.50519849908317111 \cdot 10^{136}:\\
\;\;\;\;\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) + \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.1199128263687574 \cdot 10^{46}:\\
\;\;\;\;\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{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{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 r47259 = b;
double r47260 = 0.0;
bool r47261 = r47259 >= r47260;
double r47262 = -r47259;
double r47263 = r47259 * r47259;
double r47264 = 4.0;
double r47265 = a;
double r47266 = r47264 * r47265;
double r47267 = c;
double r47268 = r47266 * r47267;
double r47269 = r47263 - r47268;
double r47270 = sqrt(r47269);
double r47271 = r47262 - r47270;
double r47272 = 2.0;
double r47273 = r47272 * r47265;
double r47274 = r47271 / r47273;
double r47275 = r47272 * r47267;
double r47276 = r47262 + r47270;
double r47277 = r47275 / r47276;
double r47278 = r47261 ? r47274 : r47277;
return r47278;
}
double f(double a, double b, double c) {
double r47279 = b;
double r47280 = -3.505198499083171e+136;
bool r47281 = r47279 <= r47280;
double r47282 = 0.0;
bool r47283 = r47279 >= r47282;
double r47284 = -r47279;
double r47285 = r47279 * r47279;
double r47286 = 4.0;
double r47287 = a;
double r47288 = r47286 * r47287;
double r47289 = c;
double r47290 = r47288 * r47289;
double r47291 = r47285 - r47290;
double r47292 = sqrt(r47291);
double r47293 = sqrt(r47292);
double r47294 = r47293 * r47293;
double r47295 = r47284 - r47294;
double r47296 = 2.0;
double r47297 = r47296 * r47287;
double r47298 = r47295 / r47297;
double r47299 = r47296 * r47289;
double r47300 = cbrt(r47279);
double r47301 = r47300 * r47300;
double r47302 = r47287 / r47301;
double r47303 = r47289 / r47300;
double r47304 = r47302 * r47303;
double r47305 = r47296 * r47304;
double r47306 = r47305 - r47279;
double r47307 = r47284 + r47306;
double r47308 = r47299 / r47307;
double r47309 = r47283 ? r47298 : r47308;
double r47310 = 4.1199128263687574e+46;
bool r47311 = r47279 <= r47310;
double r47312 = r47284 - r47292;
double r47313 = r47312 / r47297;
double r47314 = r47284 + r47294;
double r47315 = r47299 / r47314;
double r47316 = r47283 ? r47313 : r47315;
double r47317 = r47287 * r47289;
double r47318 = r47317 / r47279;
double r47319 = r47296 * r47318;
double r47320 = 2.0;
double r47321 = r47320 * r47279;
double r47322 = r47319 - r47321;
double r47323 = r47322 / r47297;
double r47324 = r47284 + r47292;
double r47325 = r47299 / r47324;
double r47326 = r47283 ? r47323 : r47325;
double r47327 = r47311 ? r47316 : r47326;
double r47328 = r47281 ? r47309 : r47327;
return r47328;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -3.505198499083171e+136Initial program 34.4
Taylor expanded around -inf 5.8
rmApplied add-cube-cbrt5.8
Applied times-frac1.8
rmApplied add-sqr-sqrt1.8
Applied sqrt-prod1.8
if -3.505198499083171e+136 < b < 4.1199128263687574e+46Initial program 9.2
rmApplied add-sqr-sqrt9.2
Applied sqrt-prod9.3
if 4.1199128263687574e+46 < b Initial program 36.8
Taylor expanded around inf 10.1
Final simplification7.9
herbie shell --seed 2020046
(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)))))))