\frac{\left(\left(-b_2\right) - \left(\sqrt{\left(\left(b_2 \cdot b_2\right) - \left(a \cdot c\right)\right)}\right)\right)}{a}\begin{array}{l}
\mathbf{if}\;b_2 \le 0.0343017578125:\\
\;\;\;\;\frac{\frac{a \cdot c + \left(\left(-b_2\right) + b_2\right) \cdot \left(\left(-b_2\right) + \left(-b_2\right)\right)}{a}}{\left(-b_2\right) + \sqrt{b_2 \cdot b_2 - a \cdot c}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(-b_2\right) - \sqrt{b_2 \cdot b_2 - a \cdot c}}{a}\\
\end{array}double f(double a, double b_2, double c) {
double r628768 = b_2;
double r628769 = -r628768;
double r628770 = r628768 * r628768;
double r628771 = a;
double r628772 = c;
double r628773 = r628771 * r628772;
double r628774 = r628770 - r628773;
double r628775 = sqrt(r628774);
double r628776 = r628769 - r628775;
double r628777 = r628776 / r628771;
return r628777;
}
double f(double a, double b_2, double c) {
double r628778 = b_2;
double r628779 = 0.0343017578125;
bool r628780 = r628778 <= r628779;
double r628781 = a;
double r628782 = c;
double r628783 = r628781 * r628782;
double r628784 = -r628778;
double r628785 = r628784 + r628778;
double r628786 = r628784 + r628784;
double r628787 = r628785 * r628786;
double r628788 = r628783 + r628787;
double r628789 = r628788 / r628781;
double r628790 = r628778 * r628778;
double r628791 = r628790 - r628783;
double r628792 = sqrt(r628791);
double r628793 = r628784 + r628792;
double r628794 = r628789 / r628793;
double r628795 = r628784 - r628792;
double r628796 = r628795 / r628781;
double r628797 = r628780 ? r628794 : r628796;
return r628797;
}



Bits error versus a



Bits error versus b_2



Bits error versus c
if b_2 < 0.0343017578125Initial program 2.7
rmApplied p16-flip--2.4
Applied associate-/l/2.5
Simplified0.6
rmApplied associate-/r*0.5
if 0.0343017578125 < b_2 Initial program 0.4
Final simplification0.4
herbie shell --seed 2019112 +o rules:numerics
(FPCore (a b_2 c)
:name "quad2m (problem 3.2.1, negative)"
(/.p16 (-.p16 (neg.p16 b_2) (sqrt.p16 (-.p16 (*.p16 b_2 b_2) (*.p16 a c)))) a))