\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 -1.027838679822259950174029113890452076746 \cdot 10^{156}:\\
\;\;\;\;\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) + \left(2 \cdot \frac{a \cdot c}{b} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 3.105253194134238377582270254884804095768 \cdot 10^{94}:\\
\;\;\;\;\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{\left|\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right| \cdot \sqrt{\sqrt[3]{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}\\
\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 r38351 = b;
double r38352 = 0.0;
bool r38353 = r38351 >= r38352;
double r38354 = -r38351;
double r38355 = r38351 * r38351;
double r38356 = 4.0;
double r38357 = a;
double r38358 = r38356 * r38357;
double r38359 = c;
double r38360 = r38358 * r38359;
double r38361 = r38355 - r38360;
double r38362 = sqrt(r38361);
double r38363 = r38354 - r38362;
double r38364 = 2.0;
double r38365 = r38364 * r38357;
double r38366 = r38363 / r38365;
double r38367 = r38364 * r38359;
double r38368 = r38354 + r38362;
double r38369 = r38367 / r38368;
double r38370 = r38353 ? r38366 : r38369;
return r38370;
}
double f(double a, double b, double c) {
double r38371 = b;
double r38372 = -1.02783867982226e+156;
bool r38373 = r38371 <= r38372;
double r38374 = 0.0;
bool r38375 = r38371 >= r38374;
double r38376 = -r38371;
double r38377 = r38371 * r38371;
double r38378 = 4.0;
double r38379 = a;
double r38380 = r38378 * r38379;
double r38381 = c;
double r38382 = r38380 * r38381;
double r38383 = r38377 - r38382;
double r38384 = sqrt(r38383);
double r38385 = r38376 - r38384;
double r38386 = 2.0;
double r38387 = r38386 * r38379;
double r38388 = r38385 / r38387;
double r38389 = r38386 * r38381;
double r38390 = r38379 * r38381;
double r38391 = r38390 / r38371;
double r38392 = r38386 * r38391;
double r38393 = r38392 - r38371;
double r38394 = r38376 + r38393;
double r38395 = r38389 / r38394;
double r38396 = r38375 ? r38388 : r38395;
double r38397 = 3.1052531941342384e+94;
bool r38398 = r38371 <= r38397;
double r38399 = sqrt(r38384);
double r38400 = cbrt(r38383);
double r38401 = fabs(r38400);
double r38402 = sqrt(r38400);
double r38403 = r38401 * r38402;
double r38404 = sqrt(r38403);
double r38405 = r38399 * r38404;
double r38406 = r38376 - r38405;
double r38407 = r38406 / r38387;
double r38408 = r38376 + r38384;
double r38409 = r38389 / r38408;
double r38410 = r38375 ? r38407 : r38409;
double r38411 = 2.0;
double r38412 = r38411 * r38371;
double r38413 = r38392 - r38412;
double r38414 = r38413 / r38387;
double r38415 = r38375 ? r38414 : r38409;
double r38416 = r38398 ? r38410 : r38415;
double r38417 = r38373 ? r38396 : r38416;
return r38417;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.02783867982226e+156Initial program 37.5
Taylor expanded around -inf 6.7
if -1.02783867982226e+156 < b < 3.1052531941342384e+94Initial program 8.6
rmApplied add-sqr-sqrt8.6
Applied sqrt-prod8.7
rmApplied add-cube-cbrt8.7
Applied sqrt-prod8.7
Simplified8.7
if 3.1052531941342384e+94 < b Initial program 44.8
rmApplied add-sqr-sqrt44.8
Applied sqrt-prod44.9
Taylor expanded around inf 10.4
Final simplification8.6
herbie shell --seed 2019346 +o rules:numerics
(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)))))))