w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell}}\begin{array}{l}
\mathbf{if}\;2 \cdot d \le -4.9978883920778511 \cdot 10^{159}:\\
\;\;\;\;w0 \cdot \sqrt{1 - {\left(\frac{M}{2} \cdot \frac{D}{d}\right)}^{2} \cdot \frac{h}{\ell}}\\
\mathbf{elif}\;2 \cdot d \le -8.4818635748686101 \cdot 10^{-74}:\\
\;\;\;\;w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)} \cdot \left(0.5 \cdot \left(\frac{h \cdot \left(M \cdot D\right)}{d \cdot \ell} \cdot {\left(\frac{1}{{-1}^{2}}\right)}^{1}\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)} \cdot \left(\left(\sqrt[3]{h} \cdot \left(\sqrt[3]{h} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)}\right)\right) \cdot \frac{\sqrt[3]{h}}{\ell}\right)}\\
\end{array}double f(double w0, double M, double D, double h, double l, double d) {
double r163835 = w0;
double r163836 = 1.0;
double r163837 = M;
double r163838 = D;
double r163839 = r163837 * r163838;
double r163840 = 2.0;
double r163841 = d;
double r163842 = r163840 * r163841;
double r163843 = r163839 / r163842;
double r163844 = pow(r163843, r163840);
double r163845 = h;
double r163846 = l;
double r163847 = r163845 / r163846;
double r163848 = r163844 * r163847;
double r163849 = r163836 - r163848;
double r163850 = sqrt(r163849);
double r163851 = r163835 * r163850;
return r163851;
}
double f(double w0, double M, double D, double h, double l, double d) {
double r163852 = 2.0;
double r163853 = d;
double r163854 = r163852 * r163853;
double r163855 = -4.997888392077851e+159;
bool r163856 = r163854 <= r163855;
double r163857 = w0;
double r163858 = 1.0;
double r163859 = M;
double r163860 = r163859 / r163852;
double r163861 = D;
double r163862 = r163861 / r163853;
double r163863 = r163860 * r163862;
double r163864 = pow(r163863, r163852);
double r163865 = h;
double r163866 = l;
double r163867 = r163865 / r163866;
double r163868 = r163864 * r163867;
double r163869 = r163858 - r163868;
double r163870 = sqrt(r163869);
double r163871 = r163857 * r163870;
double r163872 = -8.48186357486861e-74;
bool r163873 = r163854 <= r163872;
double r163874 = r163859 * r163861;
double r163875 = r163874 / r163854;
double r163876 = 2.0;
double r163877 = r163852 / r163876;
double r163878 = pow(r163875, r163877);
double r163879 = 0.5;
double r163880 = r163865 * r163874;
double r163881 = r163853 * r163866;
double r163882 = r163880 / r163881;
double r163883 = 1.0;
double r163884 = -1.0;
double r163885 = pow(r163884, r163852);
double r163886 = r163883 / r163885;
double r163887 = pow(r163886, r163858);
double r163888 = r163882 * r163887;
double r163889 = r163879 * r163888;
double r163890 = r163878 * r163889;
double r163891 = r163858 - r163890;
double r163892 = sqrt(r163891);
double r163893 = r163857 * r163892;
double r163894 = cbrt(r163865);
double r163895 = r163894 * r163878;
double r163896 = r163894 * r163895;
double r163897 = r163894 / r163866;
double r163898 = r163896 * r163897;
double r163899 = r163878 * r163898;
double r163900 = r163858 - r163899;
double r163901 = sqrt(r163900);
double r163902 = r163857 * r163901;
double r163903 = r163873 ? r163893 : r163902;
double r163904 = r163856 ? r163871 : r163903;
return r163904;
}



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 (* 2.0 d) < -4.997888392077851e+159Initial program 10.5
rmApplied times-frac8.9
if -4.997888392077851e+159 < (* 2.0 d) < -8.48186357486861e-74Initial program 12.3
rmApplied sqr-pow12.3
Applied associate-*l*10.9
Taylor expanded around -inf 8.6
if -8.48186357486861e-74 < (* 2.0 d) Initial program 16.5
rmApplied sqr-pow16.5
Applied associate-*l*14.6
rmApplied *-un-lft-identity14.6
Applied add-cube-cbrt14.6
Applied times-frac14.6
Applied associate-*r*11.8
Simplified11.8
rmApplied associate-*l*11.8
Final simplification10.7
herbie shell --seed 2020036 +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))))))