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 -2.267407641527363 \cdot 10^{+244}:\\
\;\;\;\;w0 \cdot \sqrt{1 - \frac{h \cdot \left(\frac{D \cdot M}{2 \cdot d} \cdot \sqrt[3]{\left(\left(\frac{D}{2 \cdot d} \cdot M\right) \cdot \left(\frac{D}{2 \cdot d} \cdot M\right)\right) \cdot \left(\frac{D}{2 \cdot d} \cdot M\right)}\right)}{\ell}}\\
\mathbf{elif}\;\frac{h}{\ell} \le -4.510018172937262 \cdot 10^{-251}:\\
\;\;\;\;w0 \cdot \left(\sqrt{\sqrt{1 - \frac{h}{\ell} \cdot \left(\frac{D \cdot M}{2 \cdot d} \cdot \frac{D \cdot M}{2 \cdot d}\right)}} \cdot \sqrt{\sqrt{1 - \frac{h}{\ell} \cdot \left(\frac{D \cdot M}{2 \cdot d} \cdot \frac{D \cdot M}{2 \cdot d}\right)}}\right)\\
\mathbf{else}:\\
\;\;\;\;w0\\
\end{array}double f(double w0, double M, double D, double h, double l, double d) {
double r56731688 = w0;
double r56731689 = 1.0;
double r56731690 = M;
double r56731691 = D;
double r56731692 = r56731690 * r56731691;
double r56731693 = 2.0;
double r56731694 = d;
double r56731695 = r56731693 * r56731694;
double r56731696 = r56731692 / r56731695;
double r56731697 = pow(r56731696, r56731693);
double r56731698 = h;
double r56731699 = l;
double r56731700 = r56731698 / r56731699;
double r56731701 = r56731697 * r56731700;
double r56731702 = r56731689 - r56731701;
double r56731703 = sqrt(r56731702);
double r56731704 = r56731688 * r56731703;
return r56731704;
}
double f(double w0, double M, double D, double h, double l, double d) {
double r56731705 = h;
double r56731706 = l;
double r56731707 = r56731705 / r56731706;
double r56731708 = -2.267407641527363e+244;
bool r56731709 = r56731707 <= r56731708;
double r56731710 = w0;
double r56731711 = 1.0;
double r56731712 = D;
double r56731713 = M;
double r56731714 = r56731712 * r56731713;
double r56731715 = 2.0;
double r56731716 = d;
double r56731717 = r56731715 * r56731716;
double r56731718 = r56731714 / r56731717;
double r56731719 = r56731712 / r56731717;
double r56731720 = r56731719 * r56731713;
double r56731721 = r56731720 * r56731720;
double r56731722 = r56731721 * r56731720;
double r56731723 = cbrt(r56731722);
double r56731724 = r56731718 * r56731723;
double r56731725 = r56731705 * r56731724;
double r56731726 = r56731725 / r56731706;
double r56731727 = r56731711 - r56731726;
double r56731728 = sqrt(r56731727);
double r56731729 = r56731710 * r56731728;
double r56731730 = -4.510018172937262e-251;
bool r56731731 = r56731707 <= r56731730;
double r56731732 = r56731718 * r56731718;
double r56731733 = r56731707 * r56731732;
double r56731734 = r56731711 - r56731733;
double r56731735 = sqrt(r56731734);
double r56731736 = sqrt(r56731735);
double r56731737 = r56731736 * r56731736;
double r56731738 = r56731710 * r56731737;
double r56731739 = r56731731 ? r56731738 : r56731710;
double r56731740 = r56731709 ? r56731729 : r56731739;
return r56731740;
}



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) < -2.267407641527363e+244Initial program 47.6
Simplified47.6
rmApplied associate-*r/24.1
rmApplied add-cbrt-cube31.3
Applied add-cbrt-cube32.9
Applied cbrt-undiv33.4
Simplified27.4
if -2.267407641527363e+244 < (/ h l) < -4.510018172937262e-251Initial program 12.2
Simplified12.2
rmApplied add-sqr-sqrt12.2
Applied sqrt-prod12.3
if -4.510018172937262e-251 < (/ h l) Initial program 8.6
Simplified8.6
rmApplied associate-*r/5.2
Taylor expanded around 0 3.6
Final simplification9.2
herbie shell --seed 2019112
(FPCore (w0 M D h l d)
:name "Henrywood and Agarwal, Equation (9a)"
(* w0 (sqrt (- 1 (* (pow (/ (* M D) (* 2 d)) 2) (/ h l))))))