\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 -4.28731338523231927980681449927859365128 \cdot 10^{78}:\\
\;\;\;\;\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 4.010518318216094454334208981549678919556 \cdot 10^{99}:\\
\;\;\;\;\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}{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}\\
\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 r24297 = b;
double r24298 = 0.0;
bool r24299 = r24297 >= r24298;
double r24300 = 2.0;
double r24301 = c;
double r24302 = r24300 * r24301;
double r24303 = -r24297;
double r24304 = r24297 * r24297;
double r24305 = 4.0;
double r24306 = a;
double r24307 = r24305 * r24306;
double r24308 = r24307 * r24301;
double r24309 = r24304 - r24308;
double r24310 = sqrt(r24309);
double r24311 = r24303 - r24310;
double r24312 = r24302 / r24311;
double r24313 = r24303 + r24310;
double r24314 = r24300 * r24306;
double r24315 = r24313 / r24314;
double r24316 = r24299 ? r24312 : r24315;
return r24316;
}
double f(double a, double b, double c) {
double r24317 = b;
double r24318 = -4.287313385232319e+78;
bool r24319 = r24317 <= r24318;
double r24320 = 0.0;
bool r24321 = r24317 >= r24320;
double r24322 = 2.0;
double r24323 = c;
double r24324 = r24322 * r24323;
double r24325 = -r24317;
double r24326 = r24317 * r24317;
double r24327 = 4.0;
double r24328 = a;
double r24329 = r24327 * r24328;
double r24330 = r24329 * r24323;
double r24331 = r24326 - r24330;
double r24332 = sqrt(r24331);
double r24333 = r24325 - r24332;
double r24334 = r24324 / r24333;
double r24335 = r24328 * r24323;
double r24336 = r24335 / r24317;
double r24337 = r24322 * r24336;
double r24338 = 2.0;
double r24339 = r24338 * r24317;
double r24340 = r24337 - r24339;
double r24341 = r24322 * r24328;
double r24342 = r24340 / r24341;
double r24343 = r24321 ? r24334 : r24342;
double r24344 = 4.0105183182160945e+99;
bool r24345 = r24317 <= r24344;
double r24346 = sqrt(r24332);
double r24347 = r24346 * r24346;
double r24348 = r24325 + r24347;
double r24349 = r24348 / r24341;
double r24350 = r24321 ? r24334 : r24349;
double r24351 = r24317 - r24337;
double r24352 = r24325 - r24351;
double r24353 = r24324 / r24352;
double r24354 = r24325 + r24332;
double r24355 = r24354 / r24341;
double r24356 = r24321 ? r24353 : r24355;
double r24357 = r24345 ? r24350 : r24356;
double r24358 = r24319 ? r24343 : r24357;
return r24358;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -4.287313385232319e+78Initial program 41.5
rmApplied add-sqr-sqrt41.5
Applied sqrt-prod41.6
Taylor expanded around -inf 10.5
if -4.287313385232319e+78 < b < 4.0105183182160945e+99Initial program 8.8
rmApplied add-sqr-sqrt8.8
Applied sqrt-prod8.9
if 4.0105183182160945e+99 < b Initial program 29.3
Taylor expanded around inf 6.2
Final simplification8.5
herbie shell --seed 2019352
(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))))