\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 -7.722472254682146048078315783045499220403 \cdot 10^{145}:\\
\;\;\;\;\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{c \cdot 2}{b \cdot -2 + \frac{2 \cdot a}{\frac{b}{c}}}\\
\end{array}\\
\mathbf{elif}\;b \le 2.600195237234853208806198032492538244241 \cdot 10^{-282}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\frac{\left(4 \cdot a\right) \cdot c}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} + \left(-b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 3.256132414529082880539198020768074463896 \cdot 10^{96}:\\
\;\;\;\;\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{c \cdot 2}{b \cdot -2 + \frac{2 \cdot a}{\frac{b}{c}}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{c \cdot 2}{\sqrt{\sqrt[3]{b \cdot b - a \cdot \left(4 \cdot c\right)}} \cdot \left|\sqrt[3]{b \cdot b - a \cdot \left(4 \cdot c\right)}\right| + \left(-b\right)}\\
\end{array}double f(double a, double b, double c) {
double r36356 = b;
double r36357 = 0.0;
bool r36358 = r36356 >= r36357;
double r36359 = -r36356;
double r36360 = r36356 * r36356;
double r36361 = 4.0;
double r36362 = a;
double r36363 = r36361 * r36362;
double r36364 = c;
double r36365 = r36363 * r36364;
double r36366 = r36360 - r36365;
double r36367 = sqrt(r36366);
double r36368 = r36359 - r36367;
double r36369 = 2.0;
double r36370 = r36369 * r36362;
double r36371 = r36368 / r36370;
double r36372 = r36369 * r36364;
double r36373 = r36359 + r36367;
double r36374 = r36372 / r36373;
double r36375 = r36358 ? r36371 : r36374;
return r36375;
}
double f(double a, double b, double c) {
double r36376 = b;
double r36377 = -7.722472254682146e+145;
bool r36378 = r36376 <= r36377;
double r36379 = 0.0;
bool r36380 = r36376 >= r36379;
double r36381 = -r36376;
double r36382 = r36376 * r36376;
double r36383 = 4.0;
double r36384 = a;
double r36385 = r36383 * r36384;
double r36386 = c;
double r36387 = r36385 * r36386;
double r36388 = r36382 - r36387;
double r36389 = sqrt(r36388);
double r36390 = r36381 - r36389;
double r36391 = 2.0;
double r36392 = r36391 * r36384;
double r36393 = r36390 / r36392;
double r36394 = r36386 * r36391;
double r36395 = -2.0;
double r36396 = r36376 * r36395;
double r36397 = r36376 / r36386;
double r36398 = r36392 / r36397;
double r36399 = r36396 + r36398;
double r36400 = r36394 / r36399;
double r36401 = r36380 ? r36393 : r36400;
double r36402 = 2.6001952372348532e-282;
bool r36403 = r36376 <= r36402;
double r36404 = r36389 - r36376;
double r36405 = r36387 / r36404;
double r36406 = r36405 / r36392;
double r36407 = r36389 + r36381;
double r36408 = r36394 / r36407;
double r36409 = r36380 ? r36406 : r36408;
double r36410 = 3.256132414529083e+96;
bool r36411 = r36376 <= r36410;
double r36412 = 1.0;
double r36413 = r36386 / r36376;
double r36414 = r36376 / r36384;
double r36415 = r36413 - r36414;
double r36416 = r36412 * r36415;
double r36417 = r36383 * r36386;
double r36418 = r36384 * r36417;
double r36419 = r36382 - r36418;
double r36420 = cbrt(r36419);
double r36421 = sqrt(r36420);
double r36422 = fabs(r36420);
double r36423 = r36421 * r36422;
double r36424 = r36423 + r36381;
double r36425 = r36394 / r36424;
double r36426 = r36380 ? r36416 : r36425;
double r36427 = r36411 ? r36401 : r36426;
double r36428 = r36403 ? r36409 : r36427;
double r36429 = r36378 ? r36401 : r36428;
return r36429;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -7.722472254682146e+145 or 2.6001952372348532e-282 < b < 3.256132414529083e+96Initial program 20.3
Taylor expanded around -inf 8.0
Simplified6.0
if -7.722472254682146e+145 < b < 2.6001952372348532e-282Initial program 8.3
rmApplied flip--8.3
Simplified8.3
Simplified8.3
if 3.256132414529083e+96 < b Initial program 47.2
Taylor expanded around inf 10.4
Simplified4.0
Taylor expanded around 0 3.8
Simplified3.8
rmApplied add-cube-cbrt3.8
Applied sqrt-prod3.8
Simplified3.8
Simplified3.8
Final simplification6.5
herbie shell --seed 2019195
(FPCore (a b c)
:name "jeff quadratic root 1"
(if (>= b 0.0) (/ (- (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a)) (/ (* 2.0 c) (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))))))