\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 -2.2572095326645574 \cdot 10^{165}:\\
\;\;\;\;\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(2 \cdot \frac{a \cdot c}{b} - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 7.98976121086484385 \cdot 10^{108}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\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}}}{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}\\
\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 r45597 = b;
double r45598 = 0.0;
bool r45599 = r45597 >= r45598;
double r45600 = -r45597;
double r45601 = r45597 * r45597;
double r45602 = 4.0;
double r45603 = a;
double r45604 = r45602 * r45603;
double r45605 = c;
double r45606 = r45604 * r45605;
double r45607 = r45601 - r45606;
double r45608 = sqrt(r45607);
double r45609 = r45600 - r45608;
double r45610 = 2.0;
double r45611 = r45610 * r45603;
double r45612 = r45609 / r45611;
double r45613 = r45610 * r45605;
double r45614 = r45600 + r45608;
double r45615 = r45613 / r45614;
double r45616 = r45599 ? r45612 : r45615;
return r45616;
}
double f(double a, double b, double c) {
double r45617 = b;
double r45618 = -2.2572095326645574e+165;
bool r45619 = r45617 <= r45618;
double r45620 = 0.0;
bool r45621 = r45617 >= r45620;
double r45622 = -r45617;
double r45623 = r45617 * r45617;
double r45624 = 4.0;
double r45625 = a;
double r45626 = r45624 * r45625;
double r45627 = c;
double r45628 = r45626 * r45627;
double r45629 = r45623 - r45628;
double r45630 = sqrt(r45629);
double r45631 = r45622 - r45630;
double r45632 = 2.0;
double r45633 = r45632 * r45625;
double r45634 = r45631 / r45633;
double r45635 = r45632 * r45627;
double r45636 = r45625 * r45627;
double r45637 = r45636 / r45617;
double r45638 = r45632 * r45637;
double r45639 = r45638 - r45617;
double r45640 = r45622 + r45639;
double r45641 = r45635 / r45640;
double r45642 = r45621 ? r45634 : r45641;
double r45643 = 7.989761210864844e+108;
bool r45644 = r45617 <= r45643;
double r45645 = sqrt(r45630);
double r45646 = r45645 * r45645;
double r45647 = r45622 - r45646;
double r45648 = r45647 / r45633;
double r45649 = r45622 + r45630;
double r45650 = r45635 / r45649;
double r45651 = r45621 ? r45648 : r45650;
double r45652 = r45617 - r45638;
double r45653 = r45622 - r45652;
double r45654 = r45653 / r45633;
double r45655 = r45621 ? r45654 : r45650;
double r45656 = r45644 ? r45651 : r45655;
double r45657 = r45619 ? r45642 : r45656;
return r45657;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -2.2572095326645574e+165Initial program 36.2
Taylor expanded around -inf 6.2
if -2.2572095326645574e+165 < b < 7.989761210864844e+108Initial program 9.1
rmApplied add-sqr-sqrt9.1
Applied sqrt-prod9.2
if 7.989761210864844e+108 < b Initial program 48.9
Taylor expanded around inf 9.8
Final simplification8.8
herbie shell --seed 2020047 +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)))))))