double f(double a, double b, double c) {
double r2156367 = b;
double r2156368 = 0.0;
bool r2156369 = r2156367 >= r2156368;
double r2156370 = 2.0;
double r2156371 = c;
double r2156372 = r2156370 * r2156371;
double r2156373 = -r2156367;
double r2156374 = r2156367 * r2156367;
double r2156375 = 4.0;
double r2156376 = a;
double r2156377 = r2156375 * r2156376;
double r2156378 = r2156377 * r2156371;
double r2156379 = r2156374 - r2156378;
double r2156380 = sqrt(r2156379);
double r2156381 = r2156373 - r2156380;
double r2156382 = r2156372 / r2156381;
double r2156383 = r2156373 + r2156380;
double r2156384 = r2156370 * r2156376;
double r2156385 = r2156383 / r2156384;
double r2156386 = r2156369 ? r2156382 : r2156385;
return r2156386;
}
double f(double a, double b, double c) {
double r2156387 = b;
double r2156388 = -7.629627197811718e+145;
bool r2156389 = r2156387 <= r2156388;
double r2156390 = 0.0;
bool r2156391 = r2156387 >= r2156390;
double r2156392 = 2.0;
double r2156393 = c;
double r2156394 = r2156392 * r2156393;
double r2156395 = -r2156387;
double r2156396 = r2156387 * r2156387;
double r2156397 = 4.0;
double r2156398 = a;
double r2156399 = r2156397 * r2156398;
double r2156400 = r2156399 * r2156393;
double r2156401 = r2156396 - r2156400;
double r2156402 = sqrt(r2156401);
double r2156403 = r2156395 - r2156402;
double r2156404 = r2156394 / r2156403;
double r2156405 = r2156387 / r2156398;
double r2156406 = r2156394 / r2156405;
double r2156407 = r2156406 - r2156387;
double r2156408 = r2156407 + r2156395;
double r2156409 = r2156392 * r2156398;
double r2156410 = r2156408 / r2156409;
double r2156411 = r2156391 ? r2156404 : r2156410;
double r2156412 = 1.6331904366858616e+90;
bool r2156413 = r2156387 <= r2156412;
double r2156414 = cbrt(r2156401);
double r2156415 = sqrt(r2156414);
double r2156416 = fabs(r2156414);
double r2156417 = r2156415 * r2156416;
double r2156418 = r2156395 - r2156417;
double r2156419 = r2156394 / r2156418;
double r2156420 = r2156402 + r2156395;
double r2156421 = r2156420 / r2156409;
double r2156422 = r2156391 ? r2156419 : r2156421;
double r2156423 = r2156398 * r2156393;
double r2156424 = r2156423 / r2156387;
double r2156425 = r2156392 * r2156424;
double r2156426 = r2156387 - r2156425;
double r2156427 = r2156395 - r2156426;
double r2156428 = r2156394 / r2156427;
double r2156429 = r2156391 ? r2156428 : r2156421;
double r2156430 = r2156413 ? r2156422 : r2156429;
double r2156431 = r2156389 ? r2156411 : r2156430;
return r2156431;
}
\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 -7.629627197811718 \cdot 10^{+145}:\\
\;\;\;\;\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(\frac{2 \cdot c}{\frac{b}{a}} - b\right) + \left(-b\right)}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 1.6331904366858616 \cdot 10^{+90}:\\
\;\;\;\;\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 \left|\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right|}\\
\mathbf{else}:\\
\;\;\;\;\frac{\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}{\left(-b\right) - \left(b - 2 \cdot \frac{a \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}


Bits error versus a



Bits error versus b



Bits error versus c
if b < -7.629627197811718e+145Initial program 57.3
rmApplied add-cube-cbrt57.3
Taylor expanded around -inf 9.9
Simplified2.5
if -7.629627197811718e+145 < b < 1.6331904366858616e+90Initial program 8.7
rmApplied add-cube-cbrt8.9
Applied sqrt-prod8.9
Simplified8.9
if 1.6331904366858616e+90 < b Initial program 29.9
Taylor expanded around inf 6.6
Final simplification7.6
herbie shell --seed 2019101
(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))))