\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.72893889301538444 \cdot 10^{27}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;-2 \cdot \frac{c}{b}\\
\mathbf{else}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\end{array}\\
\mathbf{elif}\;b \le 6.51740022507215 \cdot 10^{112}:\\
\;\;\;\;\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(\sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\right) \cdot \sqrt[3]{\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 r30364 = b;
double r30365 = 0.0;
bool r30366 = r30364 >= r30365;
double r30367 = 2.0;
double r30368 = c;
double r30369 = r30367 * r30368;
double r30370 = -r30364;
double r30371 = r30364 * r30364;
double r30372 = 4.0;
double r30373 = a;
double r30374 = r30372 * r30373;
double r30375 = r30374 * r30368;
double r30376 = r30371 - r30375;
double r30377 = sqrt(r30376);
double r30378 = r30370 - r30377;
double r30379 = r30369 / r30378;
double r30380 = r30370 + r30377;
double r30381 = r30367 * r30373;
double r30382 = r30380 / r30381;
double r30383 = r30366 ? r30379 : r30382;
return r30383;
}
double f(double a, double b, double c) {
double r30384 = b;
double r30385 = -1.7289388930153844e+27;
bool r30386 = r30384 <= r30385;
double r30387 = 0.0;
bool r30388 = r30384 >= r30387;
double r30389 = -2.0;
double r30390 = c;
double r30391 = r30390 / r30384;
double r30392 = r30389 * r30391;
double r30393 = 1.0;
double r30394 = a;
double r30395 = r30384 / r30394;
double r30396 = r30391 - r30395;
double r30397 = r30393 * r30396;
double r30398 = r30388 ? r30392 : r30397;
double r30399 = 6.51740022507215e+112;
bool r30400 = r30384 <= r30399;
double r30401 = 2.0;
double r30402 = r30401 * r30390;
double r30403 = -r30384;
double r30404 = r30384 * r30384;
double r30405 = 4.0;
double r30406 = r30405 * r30394;
double r30407 = r30406 * r30390;
double r30408 = r30404 - r30407;
double r30409 = sqrt(r30408);
double r30410 = r30403 - r30409;
double r30411 = r30402 / r30410;
double r30412 = cbrt(r30409);
double r30413 = r30412 * r30412;
double r30414 = r30413 * r30412;
double r30415 = r30403 + r30414;
double r30416 = r30401 * r30394;
double r30417 = r30415 / r30416;
double r30418 = r30388 ? r30411 : r30417;
double r30419 = r30394 * r30390;
double r30420 = r30419 / r30384;
double r30421 = r30401 * r30420;
double r30422 = r30384 - r30421;
double r30423 = r30403 - r30422;
double r30424 = r30402 / r30423;
double r30425 = r30403 + r30409;
double r30426 = r30425 / r30416;
double r30427 = r30388 ? r30424 : r30426;
double r30428 = r30400 ? r30418 : r30427;
double r30429 = r30386 ? r30398 : r30428;
return r30429;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.7289388930153844e+27Initial program 35.3
Taylor expanded around -inf 11.4
Taylor expanded around 0 6.7
Simplified6.7
Taylor expanded around inf 6.7
if -1.7289388930153844e+27 < b < 6.51740022507215e+112Initial program 9.5
rmApplied add-cube-cbrt9.9
if 6.51740022507215e+112 < b Initial program 31.3
Taylor expanded around inf 6.5
Final simplification8.4
herbie shell --seed 2020064
(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))))