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} \le -4.772760482564671173426908542606429127075 \cdot 10^{276}:\\
\;\;\;\;w0 \cdot \left(\left|\sqrt[3]{1 - \frac{{\left(\frac{M}{2} \cdot \frac{D}{d}\right)}^{2} \cdot h}{\ell}}\right| \cdot \sqrt{\sqrt[3]{1 - \frac{{\left(\frac{M}{2} \cdot \frac{D}{d}\right)}^{2} \cdot h}{\ell}}}\right)\\
\mathbf{elif}\;\frac{h}{\ell} \le -7.435657658983388129381875100171289188713 \cdot 10^{-315}:\\
\;\;\;\;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)}\\
\mathbf{else}:\\
\;\;\;\;w0 \cdot \sqrt{1}\\
\end{array}double f(double w0, double M, double D, double h, double l, double d) {
double r165733 = w0;
double r165734 = 1.0;
double r165735 = M;
double r165736 = D;
double r165737 = r165735 * r165736;
double r165738 = 2.0;
double r165739 = d;
double r165740 = r165738 * r165739;
double r165741 = r165737 / r165740;
double r165742 = pow(r165741, r165738);
double r165743 = h;
double r165744 = l;
double r165745 = r165743 / r165744;
double r165746 = r165742 * r165745;
double r165747 = r165734 - r165746;
double r165748 = sqrt(r165747);
double r165749 = r165733 * r165748;
return r165749;
}
double f(double w0, double M, double D, double h, double l, double d) {
double r165750 = h;
double r165751 = l;
double r165752 = r165750 / r165751;
double r165753 = -4.772760482564671e+276;
bool r165754 = r165752 <= r165753;
double r165755 = w0;
double r165756 = 1.0;
double r165757 = M;
double r165758 = 2.0;
double r165759 = r165757 / r165758;
double r165760 = D;
double r165761 = d;
double r165762 = r165760 / r165761;
double r165763 = r165759 * r165762;
double r165764 = pow(r165763, r165758);
double r165765 = r165764 * r165750;
double r165766 = r165765 / r165751;
double r165767 = r165756 - r165766;
double r165768 = cbrt(r165767);
double r165769 = fabs(r165768);
double r165770 = sqrt(r165768);
double r165771 = r165769 * r165770;
double r165772 = r165755 * r165771;
double r165773 = -7.4356576589834e-315;
bool r165774 = r165752 <= r165773;
double r165775 = r165757 * r165760;
double r165776 = r165758 * r165761;
double r165777 = r165775 / r165776;
double r165778 = 2.0;
double r165779 = r165758 / r165778;
double r165780 = pow(r165777, r165779);
double r165781 = r165780 * r165752;
double r165782 = r165780 * r165781;
double r165783 = r165756 - r165782;
double r165784 = sqrt(r165783);
double r165785 = r165755 * r165784;
double r165786 = sqrt(r165756);
double r165787 = r165755 * r165786;
double r165788 = r165774 ? r165785 : r165787;
double r165789 = r165754 ? r165772 : r165788;
return r165789;
}



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) < -4.772760482564671e+276Initial program 54.5
rmApplied div-inv54.5
Applied associate-*r*24.9
rmApplied times-frac24.7
rmApplied add-cube-cbrt24.8
Applied sqrt-prod24.8
Simplified24.8
Simplified24.8
if -4.772760482564671e+276 < (/ h l) < -7.4356576589834e-315Initial program 14.4
rmApplied sqr-pow14.4
Applied associate-*l*12.2
if -7.4356576589834e-315 < (/ h l) Initial program 7.5
Taylor expanded around 0 2.5
Final simplification8.5
herbie shell --seed 2019305 +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))))))