\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.32197412018708145 \cdot 10^{53}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0.0:\\
\;\;\;\;\frac{\frac{b \cdot b - \left(b \cdot b - \left(4 \cdot a\right) \cdot c\right)}{\sqrt{b \cdot b - \left(4 \cdot a\right) \cdot c} - b}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot c}{\left(-b\right) + \left(2 \cdot \left(a \cdot \frac{c}{b}\right) - b\right)}\\
\end{array}\\
\mathbf{elif}\;b \le 4.58193200392030278 \cdot 10^{61}:\\
\;\;\;\;\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|\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}\right| \cdot \sqrt{\sqrt[3]{b \cdot b - \left(4 \cdot a\right) \cdot c}}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0.0:\\
\;\;\;\;\frac{2 \cdot \frac{a \cdot c}{b} - 2 \cdot b}{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 r54580 = b;
double r54581 = 0.0;
bool r54582 = r54580 >= r54581;
double r54583 = -r54580;
double r54584 = r54580 * r54580;
double r54585 = 4.0;
double r54586 = a;
double r54587 = r54585 * r54586;
double r54588 = c;
double r54589 = r54587 * r54588;
double r54590 = r54584 - r54589;
double r54591 = sqrt(r54590);
double r54592 = r54583 - r54591;
double r54593 = 2.0;
double r54594 = r54593 * r54586;
double r54595 = r54592 / r54594;
double r54596 = r54593 * r54588;
double r54597 = r54583 + r54591;
double r54598 = r54596 / r54597;
double r54599 = r54582 ? r54595 : r54598;
return r54599;
}
double f(double a, double b, double c) {
double r54600 = b;
double r54601 = -2.3219741201870814e+53;
bool r54602 = r54600 <= r54601;
double r54603 = 0.0;
bool r54604 = r54600 >= r54603;
double r54605 = r54600 * r54600;
double r54606 = 4.0;
double r54607 = a;
double r54608 = r54606 * r54607;
double r54609 = c;
double r54610 = r54608 * r54609;
double r54611 = r54605 - r54610;
double r54612 = r54605 - r54611;
double r54613 = sqrt(r54611);
double r54614 = r54613 - r54600;
double r54615 = r54612 / r54614;
double r54616 = 2.0;
double r54617 = r54616 * r54607;
double r54618 = r54615 / r54617;
double r54619 = r54616 * r54609;
double r54620 = -r54600;
double r54621 = r54609 / r54600;
double r54622 = r54607 * r54621;
double r54623 = r54616 * r54622;
double r54624 = r54623 - r54600;
double r54625 = r54620 + r54624;
double r54626 = r54619 / r54625;
double r54627 = r54604 ? r54618 : r54626;
double r54628 = 4.581932003920303e+61;
bool r54629 = r54600 <= r54628;
double r54630 = r54620 - r54613;
double r54631 = r54630 / r54617;
double r54632 = cbrt(r54611);
double r54633 = fabs(r54632);
double r54634 = sqrt(r54632);
double r54635 = r54633 * r54634;
double r54636 = r54620 + r54635;
double r54637 = r54619 / r54636;
double r54638 = r54604 ? r54631 : r54637;
double r54639 = r54607 * r54609;
double r54640 = r54639 / r54600;
double r54641 = r54616 * r54640;
double r54642 = 2.0;
double r54643 = r54642 * r54600;
double r54644 = r54641 - r54643;
double r54645 = r54644 / r54617;
double r54646 = r54620 + r54613;
double r54647 = r54619 / r54646;
double r54648 = r54604 ? r54645 : r54647;
double r54649 = r54629 ? r54638 : r54648;
double r54650 = r54602 ? r54627 : r54649;
return r54650;
}



Bits error versus a



Bits error versus b



Bits error versus c
Results
if b < -2.3219741201870814e+53Initial program 25.8
Taylor expanded around -inf 7.6
rmApplied *-un-lft-identity7.6
Applied times-frac3.8
Simplified3.8
rmApplied flip--3.8
Simplified3.8
Simplified3.8
if -2.3219741201870814e+53 < b < 4.581932003920303e+61Initial program 9.1
rmApplied add-cube-cbrt9.4
Applied sqrt-prod9.4
Simplified9.4
if 4.581932003920303e+61 < b Initial program 39.6
Taylor expanded around inf 9.5
Final simplification7.8
herbie shell --seed 2020045
(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)))))))