\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.00655881829761357 \cdot 10^{145}:\\
\;\;\;\;\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.402171051432718 \cdot 10^{122}:\\
\;\;\;\;\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 \left(\frac{a}{\sqrt[3]{b} \cdot \sqrt[3]{b}} \cdot \frac{c}{\sqrt[3]{b}}\right)\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 r42386 = b;
double r42387 = 0.0;
bool r42388 = r42386 >= r42387;
double r42389 = 2.0;
double r42390 = c;
double r42391 = r42389 * r42390;
double r42392 = -r42386;
double r42393 = r42386 * r42386;
double r42394 = 4.0;
double r42395 = a;
double r42396 = r42394 * r42395;
double r42397 = r42396 * r42390;
double r42398 = r42393 - r42397;
double r42399 = sqrt(r42398);
double r42400 = r42392 - r42399;
double r42401 = r42391 / r42400;
double r42402 = r42392 + r42399;
double r42403 = r42389 * r42395;
double r42404 = r42402 / r42403;
double r42405 = r42388 ? r42401 : r42404;
return r42405;
}
double f(double a, double b, double c) {
double r42406 = b;
double r42407 = -1.0065588182976136e+145;
bool r42408 = r42406 <= r42407;
double r42409 = 0.0;
bool r42410 = r42406 >= r42409;
double r42411 = 2.0;
double r42412 = c;
double r42413 = r42411 * r42412;
double r42414 = -r42406;
double r42415 = r42406 * r42406;
double r42416 = 4.0;
double r42417 = a;
double r42418 = r42416 * r42417;
double r42419 = r42418 * r42412;
double r42420 = r42415 - r42419;
double r42421 = sqrt(r42420);
double r42422 = r42414 - r42421;
double r42423 = r42413 / r42422;
double r42424 = r42417 * r42412;
double r42425 = r42424 / r42406;
double r42426 = r42411 * r42425;
double r42427 = 2.0;
double r42428 = r42427 * r42406;
double r42429 = r42426 - r42428;
double r42430 = r42411 * r42417;
double r42431 = r42429 / r42430;
double r42432 = r42410 ? r42423 : r42431;
double r42433 = 4.402171051432718e+122;
bool r42434 = r42406 <= r42433;
double r42435 = sqrt(r42421);
double r42436 = r42435 * r42435;
double r42437 = r42414 + r42436;
double r42438 = r42437 / r42430;
double r42439 = r42410 ? r42423 : r42438;
double r42440 = cbrt(r42406);
double r42441 = r42440 * r42440;
double r42442 = r42417 / r42441;
double r42443 = r42412 / r42440;
double r42444 = r42442 * r42443;
double r42445 = r42411 * r42444;
double r42446 = r42406 - r42445;
double r42447 = r42414 - r42446;
double r42448 = r42413 / r42447;
double r42449 = r42414 + r42421;
double r42450 = r42449 / r42430;
double r42451 = r42410 ? r42448 : r42450;
double r42452 = r42434 ? r42439 : r42451;
double r42453 = r42408 ? r42432 : r42452;
return r42453;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.0065588182976136e+145Initial program 61.2
Taylor expanded around -inf 11.9
if -1.0065588182976136e+145 < b < 4.402171051432718e+122Initial program 8.4
rmApplied add-sqr-sqrt8.4
Applied sqrt-prod8.6
if 4.402171051432718e+122 < b Initial program 32.7
Taylor expanded around inf 6.1
rmApplied add-cube-cbrt6.1
Applied times-frac2.1
Final simplification7.6
herbie shell --seed 2020036 +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))))