double f(double a, double b, double c) {
double r617607 = b;
double r617608 = 0.0;
bool r617609 = r617607 >= r617608;
double r617610 = 2.0;
double r617611 = c;
double r617612 = r617610 * r617611;
double r617613 = -r617607;
double r617614 = r617607 * r617607;
double r617615 = 4.0;
double r617616 = a;
double r617617 = r617615 * r617616;
double r617618 = r617617 * r617611;
double r617619 = r617614 - r617618;
double r617620 = sqrt(r617619);
double r617621 = r617613 - r617620;
double r617622 = r617612 / r617621;
double r617623 = r617613 + r617620;
double r617624 = r617610 * r617616;
double r617625 = r617623 / r617624;
double r617626 = r617609 ? r617622 : r617625;
return r617626;
}
double f(double a, double b, double c) {
double r617627 = b;
double r617628 = 6.270076023269765e+106;
bool r617629 = r617627 <= r617628;
double r617630 = 0.0;
bool r617631 = r617627 >= r617630;
double r617632 = 2.0;
double r617633 = c;
double r617634 = r617632 * r617633;
double r617635 = -r617627;
double r617636 = -4.0;
double r617637 = a;
double r617638 = r617637 * r617633;
double r617639 = r617627 * r617627;
double r617640 = fma(r617636, r617638, r617639);
double r617641 = sqrt(r617640);
double r617642 = r617635 - r617641;
double r617643 = r617634 / r617642;
double r617644 = cbrt(r617640);
double r617645 = r617644 * r617644;
double r617646 = sqrt(r617645);
double r617647 = cbrt(r617641);
double r617648 = r617647 * r617647;
double r617649 = sqrt(r617648);
double r617650 = r617646 * r617649;
double r617651 = r617650 - r617627;
double r617652 = r617632 * r617637;
double r617653 = r617651 / r617652;
double r617654 = r617631 ? r617643 : r617653;
double r617655 = r617635 - r617627;
double r617656 = r617634 / r617655;
double r617657 = r617641 - r617627;
double r617658 = r617657 / r617652;
double r617659 = r617631 ? r617656 : r617658;
double r617660 = r617629 ? r617654 : r617659;
return r617660;
}
\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 6.270076023269765 \cdot 10^{+106}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{(-4 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{\sqrt[3]{(-4 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*} \cdot \sqrt[3]{(-4 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}} \cdot \sqrt{\sqrt[3]{\sqrt{(-4 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}} \cdot \sqrt[3]{\sqrt{(-4 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*}}} - b}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - b}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{(-4 \cdot \left(a \cdot c\right) + \left(b \cdot b\right))_*} - b}{2 \cdot a}\\
\end{array}


Bits error versus a



Bits error versus b



Bits error versus c
if b < 6.270076023269765e+106Initial program 16.3
Simplified16.3
rmApplied add-cube-cbrt16.5
Applied sqrt-prod16.5
rmApplied add-sqr-sqrt16.5
Applied cbrt-prod16.5
if 6.270076023269765e+106 < b Initial program 31.3
Simplified31.3
Taylor expanded around 0 2.3
Final simplification13.1
herbie shell --seed 2019102 +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))))