\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 r1263689 = b;
double r1263690 = 0.0;
bool r1263691 = r1263689 >= r1263690;
double r1263692 = -r1263689;
double r1263693 = r1263689 * r1263689;
double r1263694 = 4.0;
double r1263695 = a;
double r1263696 = r1263694 * r1263695;
double r1263697 = c;
double r1263698 = r1263696 * r1263697;
double r1263699 = r1263693 - r1263698;
double r1263700 = sqrt(r1263699);
double r1263701 = r1263692 - r1263700;
double r1263702 = 2.0;
double r1263703 = r1263702 * r1263695;
double r1263704 = r1263701 / r1263703;
double r1263705 = r1263702 * r1263697;
double r1263706 = r1263692 + r1263700;
double r1263707 = r1263705 / r1263706;
double r1263708 = r1263691 ? r1263704 : r1263707;
return r1263708;
}
double f(double a, double b, double c) {
double r1263709 = b;
double r1263710 = 1.6691257204922504e+85;
bool r1263711 = r1263709 <= r1263710;
double r1263712 = 0.0;
bool r1263713 = r1263709 >= r1263712;
double r1263714 = -r1263709;
double r1263715 = c;
double r1263716 = a;
double r1263717 = -4.0;
double r1263718 = r1263716 * r1263717;
double r1263719 = r1263709 * r1263709;
double r1263720 = fma(r1263715, r1263718, r1263719);
double r1263721 = sqrt(r1263720);
double r1263722 = r1263714 - r1263721;
double r1263723 = 2.0;
double r1263724 = r1263723 * r1263716;
double r1263725 = r1263722 / r1263724;
double r1263726 = sqrt(r1263721);
double r1263727 = fma(r1263726, r1263726, r1263714);
double r1263728 = r1263727 / r1263723;
double r1263729 = r1263715 / r1263728;
double r1263730 = r1263713 ? r1263725 : r1263729;
double r1263731 = r1263714 - r1263709;
double r1263732 = r1263731 / r1263724;
double r1263733 = r1263721 - r1263709;
double r1263734 = r1263733 / r1263723;
double r1263735 = r1263715 / r1263734;
double r1263736 = r1263713 ? r1263732 : r1263735;
double r1263737 = r1263711 ? r1263730 : r1263736;
return r1263737;
}



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)))))))