\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 -128454993639955.03125:\\
\;\;\;\;\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}{\mathsf{fma}\left(\frac{a \cdot c}{b}, 2, -2 \cdot b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 106106913250787377152:\\
\;\;\;\;\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(\sqrt[3]{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt[3]{\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}}}\right) \cdot \sqrt[3]{\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}}}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{\left(-b\right) - \left(b - 2 \cdot \frac{a \cdot c}{b}\right)}{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 r33379 = b;
double r33380 = 0.0;
bool r33381 = r33379 >= r33380;
double r33382 = -r33379;
double r33383 = r33379 * r33379;
double r33384 = 4.0;
double r33385 = a;
double r33386 = r33384 * r33385;
double r33387 = c;
double r33388 = r33386 * r33387;
double r33389 = r33383 - r33388;
double r33390 = sqrt(r33389);
double r33391 = r33382 - r33390;
double r33392 = 2.0;
double r33393 = r33392 * r33385;
double r33394 = r33391 / r33393;
double r33395 = r33392 * r33387;
double r33396 = r33382 + r33390;
double r33397 = r33395 / r33396;
double r33398 = r33381 ? r33394 : r33397;
return r33398;
}
double f(double a, double b, double c) {
double r33399 = b;
double r33400 = -128454993639955.03;
bool r33401 = r33399 <= r33400;
double r33402 = 0.0;
bool r33403 = r33399 >= r33402;
double r33404 = -r33399;
double r33405 = r33399 * r33399;
double r33406 = 4.0;
double r33407 = a;
double r33408 = r33406 * r33407;
double r33409 = c;
double r33410 = r33408 * r33409;
double r33411 = r33405 - r33410;
double r33412 = sqrt(r33411);
double r33413 = r33404 - r33412;
double r33414 = 2.0;
double r33415 = r33414 * r33407;
double r33416 = r33413 / r33415;
double r33417 = r33414 * r33409;
double r33418 = r33407 * r33409;
double r33419 = r33418 / r33399;
double r33420 = -2.0;
double r33421 = r33420 * r33399;
double r33422 = fma(r33419, r33414, r33421);
double r33423 = r33417 / r33422;
double r33424 = r33403 ? r33416 : r33423;
double r33425 = 1.0610691325078738e+20;
bool r33426 = r33399 <= r33425;
double r33427 = cbrt(r33412);
double r33428 = r33427 * r33427;
double r33429 = r33428 * r33427;
double r33430 = cbrt(r33429);
double r33431 = r33427 * r33430;
double r33432 = r33431 * r33430;
double r33433 = r33404 + r33432;
double r33434 = r33417 / r33433;
double r33435 = r33403 ? r33416 : r33434;
double r33436 = r33414 * r33419;
double r33437 = r33399 - r33436;
double r33438 = r33404 - r33437;
double r33439 = r33438 / r33415;
double r33440 = r33404 + r33412;
double r33441 = r33417 / r33440;
double r33442 = r33403 ? r33439 : r33441;
double r33443 = r33426 ? r33435 : r33442;
double r33444 = r33401 ? r33424 : r33443;
return r33444;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < -128454993639955.03Initial program 23.1
Taylor expanded around -inf 8.1
Simplified8.1
if -128454993639955.03 < b < 1.0610691325078738e+20Initial program 9.6
rmApplied add-cube-cbrt10.0
rmApplied add-cube-cbrt10.0
rmApplied add-cube-cbrt10.1
if 1.0610691325078738e+20 < b Initial program 34.5
Taylor expanded around inf 11.6
Final simplification9.8
herbie shell --seed 2019350 +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)))))))