w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell}}\begin{array}{l}
\mathbf{if}\;\frac{h}{\ell} = -\infty \lor \neg \left(\frac{h}{\ell} \le -1.137897252452376107719566610395472751847 \cdot 10^{-223}\right):\\
\;\;\;\;w0 \cdot \sqrt{1 - \left({\left(\frac{M \cdot D}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)} \cdot \left({\left(\left(M \cdot D\right) \cdot \frac{1}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)} \cdot h\right)\right) \cdot \frac{1}{\ell}}\\
\mathbf{else}:\\
\;\;\;\;w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)} \cdot \left({\left(\frac{M \cdot D}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)} \cdot \frac{h}{\ell}\right)}\\
\end{array}double f(double w0, double M, double D, double h, double l, double d) {
double r153704 = w0;
double r153705 = 1.0;
double r153706 = M;
double r153707 = D;
double r153708 = r153706 * r153707;
double r153709 = 2.0;
double r153710 = d;
double r153711 = r153709 * r153710;
double r153712 = r153708 / r153711;
double r153713 = pow(r153712, r153709);
double r153714 = h;
double r153715 = l;
double r153716 = r153714 / r153715;
double r153717 = r153713 * r153716;
double r153718 = r153705 - r153717;
double r153719 = sqrt(r153718);
double r153720 = r153704 * r153719;
return r153720;
}
double f(double w0, double M, double D, double h, double l, double d) {
double r153721 = h;
double r153722 = l;
double r153723 = r153721 / r153722;
double r153724 = -inf.0;
bool r153725 = r153723 <= r153724;
double r153726 = -1.1378972524523761e-223;
bool r153727 = r153723 <= r153726;
double r153728 = !r153727;
bool r153729 = r153725 || r153728;
double r153730 = w0;
double r153731 = 1.0;
double r153732 = M;
double r153733 = D;
double r153734 = r153732 * r153733;
double r153735 = 2.0;
double r153736 = d;
double r153737 = r153735 * r153736;
double r153738 = r153734 / r153737;
double r153739 = 2.0;
double r153740 = r153735 / r153739;
double r153741 = pow(r153738, r153740);
double r153742 = 1.0;
double r153743 = r153742 / r153737;
double r153744 = r153734 * r153743;
double r153745 = pow(r153744, r153740);
double r153746 = r153745 * r153721;
double r153747 = r153741 * r153746;
double r153748 = r153742 / r153722;
double r153749 = r153747 * r153748;
double r153750 = r153731 - r153749;
double r153751 = sqrt(r153750);
double r153752 = r153730 * r153751;
double r153753 = r153741 * r153723;
double r153754 = r153741 * r153753;
double r153755 = r153731 - r153754;
double r153756 = sqrt(r153755);
double r153757 = r153730 * r153756;
double r153758 = r153729 ? r153752 : r153757;
return r153758;
}



Bits error versus w0



Bits error versus M



Bits error versus D



Bits error versus h



Bits error versus l



Bits error versus d
Results
if (/ h l) < -inf.0 or -1.1378972524523761e-223 < (/ h l) Initial program 13.9
rmApplied div-inv13.9
Applied associate-*r*7.5
rmApplied sqr-pow7.5
Applied associate-*l*5.4
rmApplied div-inv5.4
if -inf.0 < (/ h l) < -1.1378972524523761e-223Initial program 14.4
rmApplied sqr-pow14.4
Applied associate-*l*13.0
Final simplification8.6
herbie shell --seed 2019326 +o rules:numerics
(FPCore (w0 M D h l d)
:name "Henrywood and Agarwal, Equation (9a)"
:precision binary64
(* w0 (sqrt (- 1 (* (pow (/ (* M D) (* 2 d)) 2) (/ h l))))))