\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 -1.34427541693066155 \cdot 10^{154}:\\
\;\;\;\;\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 8.8641081105864164 \cdot 10^{28}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\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}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b\right) + \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}{2 \cdot \left(\frac{a}{\sqrt{b}} \cdot \frac{c}{{b}^{\frac{1}{2}}}\right) - 2 \cdot b}\\
\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 r24346 = b;
double r24347 = 0.0;
bool r24348 = r24346 >= r24347;
double r24349 = 2.0;
double r24350 = c;
double r24351 = r24349 * r24350;
double r24352 = -r24346;
double r24353 = r24346 * r24346;
double r24354 = 4.0;
double r24355 = a;
double r24356 = r24354 * r24355;
double r24357 = r24356 * r24350;
double r24358 = r24353 - r24357;
double r24359 = sqrt(r24358);
double r24360 = r24352 - r24359;
double r24361 = r24351 / r24360;
double r24362 = r24352 + r24359;
double r24363 = r24349 * r24355;
double r24364 = r24362 / r24363;
double r24365 = r24348 ? r24361 : r24364;
return r24365;
}
double f(double a, double b, double c) {
double r24366 = b;
double r24367 = -1.3442754169306616e+154;
bool r24368 = r24366 <= r24367;
double r24369 = 0.0;
bool r24370 = r24366 >= r24369;
double r24371 = 2.0;
double r24372 = c;
double r24373 = r24371 * r24372;
double r24374 = -r24366;
double r24375 = r24366 * r24366;
double r24376 = 4.0;
double r24377 = a;
double r24378 = r24376 * r24377;
double r24379 = r24378 * r24372;
double r24380 = r24375 - r24379;
double r24381 = sqrt(r24380);
double r24382 = r24374 - r24381;
double r24383 = r24373 / r24382;
double r24384 = r24377 * r24372;
double r24385 = r24384 / r24366;
double r24386 = r24371 * r24385;
double r24387 = 2.0;
double r24388 = r24387 * r24366;
double r24389 = r24386 - r24388;
double r24390 = r24371 * r24377;
double r24391 = r24389 / r24390;
double r24392 = r24370 ? r24383 : r24391;
double r24393 = 8.864108110586416e+28;
bool r24394 = r24366 <= r24393;
double r24395 = sqrt(r24381);
double r24396 = r24395 * r24395;
double r24397 = r24374 - r24396;
double r24398 = r24373 / r24397;
double r24399 = r24374 + r24381;
double r24400 = r24399 / r24390;
double r24401 = r24370 ? r24398 : r24400;
double r24402 = sqrt(r24366);
double r24403 = r24377 / r24402;
double r24404 = 0.5;
double r24405 = pow(r24366, r24404);
double r24406 = r24372 / r24405;
double r24407 = r24403 * r24406;
double r24408 = r24371 * r24407;
double r24409 = r24408 - r24388;
double r24410 = r24373 / r24409;
double r24411 = r24370 ? r24410 : r24400;
double r24412 = r24394 ? r24401 : r24411;
double r24413 = r24368 ? r24392 : r24412;
return r24413;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.3442754169306616e+154Initial program 64.0
rmApplied add-sqr-sqrt64.0
Applied sqrt-prod64.0
Taylor expanded around -inf 9.9
if -1.3442754169306616e+154 < b < 8.864108110586416e+28Initial program 9.4
rmApplied add-sqr-sqrt9.4
Applied sqrt-prod9.5
if 8.864108110586416e+28 < b Initial program 24.3
rmApplied add-sqr-sqrt24.3
Applied sqrt-prod24.4
Taylor expanded around inf 8.0
rmApplied add-sqr-sqrt8.0
Applied times-frac4.7
Simplified4.7
Final simplification8.1
herbie shell --seed 2020100
(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))))