\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.05734525598461 \cdot 10^{150}:\\
\;\;\;\;\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) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 2.824222875658889 \cdot 10^{106}:\\
\;\;\;\;\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 r39313 = b;
double r39314 = 0.0;
bool r39315 = r39313 >= r39314;
double r39316 = 2.0;
double r39317 = c;
double r39318 = r39316 * r39317;
double r39319 = -r39313;
double r39320 = r39313 * r39313;
double r39321 = 4.0;
double r39322 = a;
double r39323 = r39321 * r39322;
double r39324 = r39323 * r39317;
double r39325 = r39320 - r39324;
double r39326 = sqrt(r39325);
double r39327 = r39319 - r39326;
double r39328 = r39318 / r39327;
double r39329 = r39319 + r39326;
double r39330 = r39316 * r39322;
double r39331 = r39329 / r39330;
double r39332 = r39315 ? r39328 : r39331;
return r39332;
}
double f(double a, double b, double c) {
double r39333 = b;
double r39334 = -4.05734525598461e+150;
bool r39335 = r39333 <= r39334;
double r39336 = 0.0;
bool r39337 = r39333 >= r39336;
double r39338 = 2.0;
double r39339 = c;
double r39340 = r39338 * r39339;
double r39341 = -r39333;
double r39342 = r39333 * r39333;
double r39343 = 4.0;
double r39344 = a;
double r39345 = r39343 * r39344;
double r39346 = r39345 * r39339;
double r39347 = r39342 - r39346;
double r39348 = sqrt(r39347);
double r39349 = r39341 - r39348;
double r39350 = r39340 / r39349;
double r39351 = r39344 * r39339;
double r39352 = r39351 / r39333;
double r39353 = r39338 * r39352;
double r39354 = r39353 - r39333;
double r39355 = r39341 + r39354;
double r39356 = r39338 * r39344;
double r39357 = r39355 / r39356;
double r39358 = r39337 ? r39350 : r39357;
double r39359 = 2.8242228756588895e+106;
bool r39360 = r39333 <= r39359;
double r39361 = sqrt(r39348);
double r39362 = r39361 * r39361;
double r39363 = r39341 + r39362;
double r39364 = r39363 / r39356;
double r39365 = r39337 ? r39350 : r39364;
double r39366 = r39333 - r39353;
double r39367 = r39341 - r39366;
double r39368 = r39340 / r39367;
double r39369 = r39341 + r39348;
double r39370 = r39369 / r39356;
double r39371 = r39337 ? r39368 : r39370;
double r39372 = r39360 ? r39365 : r39371;
double r39373 = r39335 ? r39358 : r39372;
return r39373;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -4.05734525598461e+150Initial program 61.3
Taylor expanded around -inf 11.3
if -4.05734525598461e+150 < b < 2.8242228756588895e+106Initial program 8.8
rmApplied add-sqr-sqrt8.8
Applied sqrt-prod8.9
if 2.8242228756588895e+106 < b Initial program 30.5
Taylor expanded around inf 6.9
Final simplification8.7
herbie shell --seed 2020062 +o rules:numerics
(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))))