\begin{array}{l}
\mathbf{if}\;b \ge 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.56549847594674 \cdot 10^{+97}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(2 \cdot \frac{a \cdot c}{b} - b\right) + \left(-b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 1.37593608973837 \cdot 10^{+37}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c} \cdot \sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\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}} + \left(-b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{2 \cdot \left(\frac{a}{b} \cdot c - b\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r662381 = b;
double r662382 = 0.0;
bool r662383 = r662381 >= r662382;
double r662384 = 2.0;
double r662385 = c;
double r662386 = r662384 * r662385;
double r662387 = -r662381;
double r662388 = r662381 * r662381;
double r662389 = 4.0;
double r662390 = a;
double r662391 = r662389 * r662390;
double r662392 = r662391 * r662385;
double r662393 = r662388 - r662392;
double r662394 = sqrt(r662393);
double r662395 = r662387 - r662394;
double r662396 = r662386 / r662395;
double r662397 = r662387 + r662394;
double r662398 = r662384 * r662390;
double r662399 = r662397 / r662398;
double r662400 = r662383 ? r662396 : r662399;
return r662400;
}
double f(double a, double b, double c) {
double r662401 = b;
double r662402 = -1.56549847594674e+97;
bool r662403 = r662401 <= r662402;
double r662404 = 0.0;
bool r662405 = r662401 >= r662404;
double r662406 = 2.0;
double r662407 = c;
double r662408 = r662406 * r662407;
double r662409 = -r662401;
double r662410 = r662401 * r662401;
double r662411 = 4.0;
double r662412 = a;
double r662413 = r662411 * r662412;
double r662414 = r662413 * r662407;
double r662415 = r662410 - r662414;
double r662416 = sqrt(r662415);
double r662417 = r662409 - r662416;
double r662418 = r662408 / r662417;
double r662419 = r662412 * r662407;
double r662420 = r662419 / r662401;
double r662421 = r662406 * r662420;
double r662422 = r662421 - r662401;
double r662423 = r662422 + r662409;
double r662424 = r662406 * r662412;
double r662425 = r662423 / r662424;
double r662426 = r662405 ? r662418 : r662425;
double r662427 = 1.37593608973837e+37;
bool r662428 = r662401 <= r662427;
double r662429 = cbrt(r662415);
double r662430 = r662429 * r662429;
double r662431 = sqrt(r662430);
double r662432 = sqrt(r662429);
double r662433 = r662431 * r662432;
double r662434 = r662409 - r662433;
double r662435 = r662408 / r662434;
double r662436 = sqrt(r662416);
double r662437 = r662436 * r662436;
double r662438 = r662437 + r662409;
double r662439 = r662438 / r662424;
double r662440 = r662405 ? r662435 : r662439;
double r662441 = r662412 / r662401;
double r662442 = r662441 * r662407;
double r662443 = r662442 - r662401;
double r662444 = r662406 * r662443;
double r662445 = r662408 / r662444;
double r662446 = r662416 + r662409;
double r662447 = r662446 / r662424;
double r662448 = r662405 ? r662445 : r662447;
double r662449 = r662428 ? r662440 : r662448;
double r662450 = r662403 ? r662426 : r662449;
return r662450;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.56549847594674e+97Initial program 44.4
Taylor expanded around -inf 10.2
if -1.56549847594674e+97 < b < 1.37593608973837e+37Initial program 9.1
rmApplied add-sqr-sqrt9.2
rmApplied add-cube-cbrt9.4
Applied sqrt-prod9.4
if 1.37593608973837e+37 < b Initial program 24.6
Taylor expanded around inf 7.7
Simplified4.7
Final simplification8.2
herbie shell --seed 2019149 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 2"
(if (>= b 0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))