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 -1.4589932569656996399740112599872681599 \cdot 10^{54}:\\
\;\;\;\;w0 \cdot \sqrt{1 - \frac{{\left(\frac{M}{\frac{2 \cdot d}{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)}{\ell}}\\
\mathbf{elif}\;\frac{h}{\ell} \le -1.137897252452376107719566610395472751847 \cdot 10^{-223}:\\
\;\;\;\;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 - \frac{{\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)}{\ell}}\\
\end{array}double f(double w0, double M, double D, double h, double l, double d) {
double r130272 = w0;
double r130273 = 1.0;
double r130274 = M;
double r130275 = D;
double r130276 = r130274 * r130275;
double r130277 = 2.0;
double r130278 = d;
double r130279 = r130277 * r130278;
double r130280 = r130276 / r130279;
double r130281 = pow(r130280, r130277);
double r130282 = h;
double r130283 = l;
double r130284 = r130282 / r130283;
double r130285 = r130281 * r130284;
double r130286 = r130273 - r130285;
double r130287 = sqrt(r130286);
double r130288 = r130272 * r130287;
return r130288;
}
double f(double w0, double M, double D, double h, double l, double d) {
double r130289 = h;
double r130290 = l;
double r130291 = r130289 / r130290;
double r130292 = -1.4589932569656996e+54;
bool r130293 = r130291 <= r130292;
double r130294 = w0;
double r130295 = 1.0;
double r130296 = M;
double r130297 = 2.0;
double r130298 = d;
double r130299 = r130297 * r130298;
double r130300 = D;
double r130301 = r130299 / r130300;
double r130302 = r130296 / r130301;
double r130303 = 2.0;
double r130304 = r130297 / r130303;
double r130305 = pow(r130302, r130304);
double r130306 = r130296 * r130300;
double r130307 = 1.0;
double r130308 = r130307 / r130299;
double r130309 = r130306 * r130308;
double r130310 = pow(r130309, r130304);
double r130311 = r130310 * r130289;
double r130312 = r130305 * r130311;
double r130313 = r130312 / r130290;
double r130314 = r130295 - r130313;
double r130315 = sqrt(r130314);
double r130316 = r130294 * r130315;
double r130317 = -1.1378972524523761e-223;
bool r130318 = r130291 <= r130317;
double r130319 = r130306 / r130299;
double r130320 = pow(r130319, r130304);
double r130321 = r130320 * r130291;
double r130322 = r130320 * r130321;
double r130323 = r130295 - r130322;
double r130324 = sqrt(r130323);
double r130325 = r130294 * r130324;
double r130326 = r130320 * r130311;
double r130327 = r130326 / r130290;
double r130328 = r130295 - r130327;
double r130329 = sqrt(r130328);
double r130330 = r130294 * r130329;
double r130331 = r130318 ? r130325 : r130330;
double r130332 = r130293 ? r130316 : r130331;
return r130332;
}



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) < -1.4589932569656996e+54Initial program 28.1
rmApplied associate-*r/18.8
rmApplied sqr-pow18.8
Applied associate-*l*17.7
rmApplied div-inv17.7
rmApplied associate-/l*18.3
if -1.4589932569656996e+54 < (/ h l) < -1.1378972524523761e-223Initial program 13.5
rmApplied sqr-pow13.5
Applied associate-*l*11.2
if -1.1378972524523761e-223 < (/ h l) Initial program 8.5
rmApplied associate-*r/5.7
rmApplied sqr-pow5.7
Applied associate-*l*3.7
rmApplied div-inv3.7
Final simplification8.8
herbie shell --seed 2019326
(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))))))