\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 -1.367002129773412099713675796535889049973 \cdot 10^{154}:\\
\;\;\;\;\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(2 \cdot \frac{a \cdot c}{b} - b\right) - b}{2 \cdot a}\\
\end{array}\\
\mathbf{elif}\;b \le 17754385347718217013022045448400749461500:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) - \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}} \cdot \sqrt{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\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}{2 \cdot \left(\frac{\sqrt[3]{a} \cdot \sqrt[3]{a}}{\sqrt[3]{b}} \cdot \left(\frac{\sqrt[3]{a}}{\sqrt[3]{b}} \cdot \frac{c}{\sqrt[3]{b}}\right)\right) - 2 \cdot b}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}{2 \cdot a}\\
\end{array}double f(double a, double b, double c) {
double r34580 = b;
double r34581 = 0.0;
bool r34582 = r34580 >= r34581;
double r34583 = 2.0;
double r34584 = c;
double r34585 = r34583 * r34584;
double r34586 = -r34580;
double r34587 = r34580 * r34580;
double r34588 = 4.0;
double r34589 = a;
double r34590 = r34588 * r34589;
double r34591 = r34590 * r34584;
double r34592 = r34587 - r34591;
double r34593 = sqrt(r34592);
double r34594 = r34586 - r34593;
double r34595 = r34585 / r34594;
double r34596 = r34586 + r34593;
double r34597 = r34583 * r34589;
double r34598 = r34596 / r34597;
double r34599 = r34582 ? r34595 : r34598;
return r34599;
}
double f(double a, double b, double c) {
double r34600 = b;
double r34601 = -1.367002129773412e+154;
bool r34602 = r34600 <= r34601;
double r34603 = 0.0;
bool r34604 = r34600 >= r34603;
double r34605 = 2.0;
double r34606 = c;
double r34607 = r34605 * r34606;
double r34608 = -r34600;
double r34609 = r34600 * r34600;
double r34610 = 4.0;
double r34611 = a;
double r34612 = r34610 * r34611;
double r34613 = r34612 * r34606;
double r34614 = r34609 - r34613;
double r34615 = sqrt(r34614);
double r34616 = r34608 - r34615;
double r34617 = r34607 / r34616;
double r34618 = r34611 * r34606;
double r34619 = r34618 / r34600;
double r34620 = r34605 * r34619;
double r34621 = r34620 - r34600;
double r34622 = r34621 - r34600;
double r34623 = r34605 * r34611;
double r34624 = r34622 / r34623;
double r34625 = r34604 ? r34617 : r34624;
double r34626 = 1.7754385347718217e+40;
bool r34627 = r34600 <= r34626;
double r34628 = sqrt(r34615);
double r34629 = r34628 * r34628;
double r34630 = r34608 - r34629;
double r34631 = r34607 / r34630;
double r34632 = r34615 - r34600;
double r34633 = r34632 / r34623;
double r34634 = r34604 ? r34631 : r34633;
double r34635 = cbrt(r34611);
double r34636 = r34635 * r34635;
double r34637 = cbrt(r34600);
double r34638 = r34636 / r34637;
double r34639 = r34635 / r34637;
double r34640 = r34606 / r34637;
double r34641 = r34639 * r34640;
double r34642 = r34638 * r34641;
double r34643 = r34605 * r34642;
double r34644 = 2.0;
double r34645 = r34644 * r34600;
double r34646 = r34643 - r34645;
double r34647 = r34607 / r34646;
double r34648 = r34604 ? r34647 : r34633;
double r34649 = r34627 ? r34634 : r34648;
double r34650 = r34602 ? r34625 : r34649;
return r34650;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -1.367002129773412e+154Initial program 64.0
Simplified64.0
Taylor expanded around -inf 11.5
if -1.367002129773412e+154 < b < 1.7754385347718217e+40Initial program 9.6
Simplified9.6
rmApplied add-sqr-sqrt9.6
Applied sqrt-prod9.7
if 1.7754385347718217e+40 < b Initial program 24.0
Simplified24.0
Taylor expanded around inf 7.5
rmApplied add-cube-cbrt7.5
Applied times-frac4.5
rmApplied add-cube-cbrt4.5
Applied times-frac4.5
Applied associate-*l*4.5
Final simplification8.3
herbie shell --seed 2019323
(FPCore (a b c)
:name "jeff quadratic root 2"
:precision binary64
(if (>= b 0.0) (/ (* 2 c) (- (- b) (sqrt (- (* b b) (* (* 4 a) c))))) (/ (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a))))