\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 -7.914888075650537298136924086228362423609 \cdot 10^{142}:\\
\;\;\;\;\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}:\\
\;\;\;\;1 \cdot \left(\frac{c}{b} - \frac{b}{a}\right)\\
\end{array}\\
\mathbf{elif}\;b \le 3.145245930173682791630322722650846320978 \cdot 10^{50}:\\
\;\;\;\;\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{\sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b} \cdot \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \left(b - \frac{2 \cdot a}{\frac{b}{c}}\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 r33495 = b;
double r33496 = 0.0;
bool r33497 = r33495 >= r33496;
double r33498 = 2.0;
double r33499 = c;
double r33500 = r33498 * r33499;
double r33501 = -r33495;
double r33502 = r33495 * r33495;
double r33503 = 4.0;
double r33504 = a;
double r33505 = r33503 * r33504;
double r33506 = r33505 * r33499;
double r33507 = r33502 - r33506;
double r33508 = sqrt(r33507);
double r33509 = r33501 - r33508;
double r33510 = r33500 / r33509;
double r33511 = r33501 + r33508;
double r33512 = r33498 * r33504;
double r33513 = r33511 / r33512;
double r33514 = r33497 ? r33510 : r33513;
return r33514;
}
double f(double a, double b, double c) {
double r33515 = b;
double r33516 = -7.914888075650537e+142;
bool r33517 = r33515 <= r33516;
double r33518 = 0.0;
bool r33519 = r33515 >= r33518;
double r33520 = 2.0;
double r33521 = c;
double r33522 = r33520 * r33521;
double r33523 = -r33515;
double r33524 = r33515 * r33515;
double r33525 = 4.0;
double r33526 = a;
double r33527 = r33525 * r33526;
double r33528 = r33527 * r33521;
double r33529 = r33524 - r33528;
double r33530 = sqrt(r33529);
double r33531 = r33523 - r33530;
double r33532 = r33522 / r33531;
double r33533 = 1.0;
double r33534 = r33521 / r33515;
double r33535 = r33515 / r33526;
double r33536 = r33534 - r33535;
double r33537 = r33533 * r33536;
double r33538 = r33519 ? r33532 : r33537;
double r33539 = 3.1452459301736828e+50;
bool r33540 = r33515 <= r33539;
double r33541 = r33530 - r33515;
double r33542 = sqrt(r33541);
double r33543 = r33542 * r33542;
double r33544 = r33520 * r33526;
double r33545 = r33543 / r33544;
double r33546 = r33519 ? r33532 : r33545;
double r33547 = r33515 / r33521;
double r33548 = r33544 / r33547;
double r33549 = r33515 - r33548;
double r33550 = r33523 - r33549;
double r33551 = r33522 / r33550;
double r33552 = r33530 + r33523;
double r33553 = r33552 / r33544;
double r33554 = r33519 ? r33551 : r33553;
double r33555 = r33540 ? r33546 : r33554;
double r33556 = r33517 ? r33538 : r33555;
return r33556;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -7.914888075650537e+142Initial program 58.9
Taylor expanded around -inf 9.9
Simplified2.2
Taylor expanded around 0 2.1
Simplified2.1
if -7.914888075650537e+142 < b < 3.1452459301736828e+50Initial program 8.8
rmApplied add-sqr-sqrt9.0
Simplified9.0
Simplified9.0
if 3.1452459301736828e+50 < b Initial program 26.2
Taylor expanded around inf 7.7
Simplified4.3
Final simplification6.9
herbie shell --seed 2019179
(FPCore (a b c)
:name "jeff quadratic root 2"
(if (>= b 0.0) (/ (* 2.0 c) (- (- b) (sqrt (- (* b b) (* (* 4.0 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4.0 a) c)))) (* 2.0 a))))