\begin{array}{l}
\mathbf{if}\;b \ge 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 1.6691257204922504 \cdot 10^{+85}:\\
\;\;\;\;\begin{array}{l}
\mathbf{if}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - \sqrt{\mathsf{fma}\left(c, a \cdot -4, b \cdot b\right)}}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{\frac{\mathsf{fma}\left(\sqrt{\sqrt{\mathsf{fma}\left(c, a \cdot -4, b \cdot b\right)}}, \sqrt{\sqrt{\mathsf{fma}\left(c, a \cdot -4, b \cdot b\right)}}, -b\right)}{2}}\\
\end{array}\\
\mathbf{elif}\;b \ge 0:\\
\;\;\;\;\frac{\left(-b\right) - b}{2 \cdot a}\\
\mathbf{else}:\\
\;\;\;\;\frac{c}{\frac{\sqrt{\mathsf{fma}\left(c, a \cdot -4, b \cdot b\right)} - b}{2}}\\
\end{array}double f(double a, double b, double c) {
double r1263692 = b;
double r1263693 = 0.0;
bool r1263694 = r1263692 >= r1263693;
double r1263695 = -r1263692;
double r1263696 = r1263692 * r1263692;
double r1263697 = 4.0;
double r1263698 = a;
double r1263699 = r1263697 * r1263698;
double r1263700 = c;
double r1263701 = r1263699 * r1263700;
double r1263702 = r1263696 - r1263701;
double r1263703 = sqrt(r1263702);
double r1263704 = r1263695 - r1263703;
double r1263705 = 2.0;
double r1263706 = r1263705 * r1263698;
double r1263707 = r1263704 / r1263706;
double r1263708 = r1263705 * r1263700;
double r1263709 = r1263695 + r1263703;
double r1263710 = r1263708 / r1263709;
double r1263711 = r1263694 ? r1263707 : r1263710;
return r1263711;
}
double f(double a, double b, double c) {
double r1263712 = b;
double r1263713 = 1.6691257204922504e+85;
bool r1263714 = r1263712 <= r1263713;
double r1263715 = 0.0;
bool r1263716 = r1263712 >= r1263715;
double r1263717 = -r1263712;
double r1263718 = c;
double r1263719 = a;
double r1263720 = -4.0;
double r1263721 = r1263719 * r1263720;
double r1263722 = r1263712 * r1263712;
double r1263723 = fma(r1263718, r1263721, r1263722);
double r1263724 = sqrt(r1263723);
double r1263725 = r1263717 - r1263724;
double r1263726 = 2.0;
double r1263727 = r1263726 * r1263719;
double r1263728 = r1263725 / r1263727;
double r1263729 = sqrt(r1263724);
double r1263730 = fma(r1263729, r1263729, r1263717);
double r1263731 = r1263730 / r1263726;
double r1263732 = r1263718 / r1263731;
double r1263733 = r1263716 ? r1263728 : r1263732;
double r1263734 = r1263717 - r1263712;
double r1263735 = r1263734 / r1263727;
double r1263736 = r1263724 - r1263712;
double r1263737 = r1263736 / r1263726;
double r1263738 = r1263718 / r1263737;
double r1263739 = r1263716 ? r1263735 : r1263738;
double r1263740 = r1263714 ? r1263733 : r1263739;
return r1263740;
}



Bits error versus a



Bits error versus b



Bits error versus c
if b < 1.6691257204922504e+85Initial program 15.1
Simplified15.1
rmApplied add-sqr-sqrt15.1
Applied sqrt-prod15.2
Applied fma-neg15.2
if 1.6691257204922504e+85 < b Initial program 42.9
Simplified42.9
Taylor expanded around 0 4.1
Final simplification13.4
herbie shell --seed 2019163 +o rules:numerics
(FPCore (a b c)
:name "jeff quadratic root 1"
(if (>= b 0) (/ (- (- b) (sqrt (- (* b b) (* (* 4 a) c)))) (* 2 a)) (/ (* 2 c) (+ (- b) (sqrt (- (* b b) (* (* 4 a) c)))))))