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 r177088 = w0;
double r177089 = 1.0;
double r177090 = M;
double r177091 = D;
double r177092 = r177090 * r177091;
double r177093 = 2.0;
double r177094 = d;
double r177095 = r177093 * r177094;
double r177096 = r177092 / r177095;
double r177097 = pow(r177096, r177093);
double r177098 = h;
double r177099 = l;
double r177100 = r177098 / r177099;
double r177101 = r177097 * r177100;
double r177102 = r177089 - r177101;
double r177103 = sqrt(r177102);
double r177104 = r177088 * r177103;
return r177104;
}
double f(double w0, double M, double D, double h, double l, double d) {
double r177105 = h;
double r177106 = l;
double r177107 = r177105 / r177106;
double r177108 = -inf.0;
bool r177109 = r177107 <= r177108;
double r177110 = -1.1378972524523761e-223;
bool r177111 = r177107 <= r177110;
double r177112 = !r177111;
bool r177113 = r177109 || r177112;
double r177114 = w0;
double r177115 = 1.0;
double r177116 = M;
double r177117 = D;
double r177118 = r177116 * r177117;
double r177119 = 2.0;
double r177120 = d;
double r177121 = r177119 * r177120;
double r177122 = r177118 / r177121;
double r177123 = 2.0;
double r177124 = r177119 / r177123;
double r177125 = pow(r177122, r177124);
double r177126 = 1.0;
double r177127 = r177126 / r177121;
double r177128 = r177118 * r177127;
double r177129 = pow(r177128, r177124);
double r177130 = r177129 * r177105;
double r177131 = r177125 * r177130;
double r177132 = r177126 / r177106;
double r177133 = r177131 * r177132;
double r177134 = r177115 - r177133;
double r177135 = sqrt(r177134);
double r177136 = r177114 * r177135;
double r177137 = r177125 * r177107;
double r177138 = r177125 * r177137;
double r177139 = r177115 - r177138;
double r177140 = sqrt(r177139);
double r177141 = r177114 * r177140;
double r177142 = r177113 ? r177136 : r177141;
return r177142;
}



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))))))