w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell}}\begin{array}{l}
\mathbf{if}\;\frac{M \cdot D}{2 \cdot d} \le 1.463865090918739845478740718004778588708 \cdot 10^{287}:\\
\;\;\;\;w0 \cdot \sqrt{1 - \frac{{\left(\frac{M \cdot D}{2 \cdot d}\right)}^{\left(\frac{2}{2}\right)}}{\sqrt[3]{\ell} \cdot \sqrt[3]{\ell}} \cdot \frac{{\left(\frac{1}{\frac{2 \cdot d}{M \cdot D}}\right)}^{\left(\frac{2}{2}\right)} \cdot h}{\sqrt[3]{\ell}}}\\
\mathbf{else}:\\
\;\;\;\;w0 \cdot \sqrt{1 - {\left(\frac{M}{\frac{2 \cdot d}{D}}\right)}^{2} \cdot \frac{h}{\ell}}\\
\end{array}double f(double w0, double M, double D, double h, double l, double d) {
double r250377 = w0;
double r250378 = 1.0;
double r250379 = M;
double r250380 = D;
double r250381 = r250379 * r250380;
double r250382 = 2.0;
double r250383 = d;
double r250384 = r250382 * r250383;
double r250385 = r250381 / r250384;
double r250386 = pow(r250385, r250382);
double r250387 = h;
double r250388 = l;
double r250389 = r250387 / r250388;
double r250390 = r250386 * r250389;
double r250391 = r250378 - r250390;
double r250392 = sqrt(r250391);
double r250393 = r250377 * r250392;
return r250393;
}
double f(double w0, double M, double D, double h, double l, double d) {
double r250394 = M;
double r250395 = D;
double r250396 = r250394 * r250395;
double r250397 = 2.0;
double r250398 = d;
double r250399 = r250397 * r250398;
double r250400 = r250396 / r250399;
double r250401 = 1.4638650909187398e+287;
bool r250402 = r250400 <= r250401;
double r250403 = w0;
double r250404 = 1.0;
double r250405 = 2.0;
double r250406 = r250397 / r250405;
double r250407 = pow(r250400, r250406);
double r250408 = l;
double r250409 = cbrt(r250408);
double r250410 = r250409 * r250409;
double r250411 = r250407 / r250410;
double r250412 = 1.0;
double r250413 = r250399 / r250396;
double r250414 = r250412 / r250413;
double r250415 = pow(r250414, r250406);
double r250416 = h;
double r250417 = r250415 * r250416;
double r250418 = r250417 / r250409;
double r250419 = r250411 * r250418;
double r250420 = r250404 - r250419;
double r250421 = sqrt(r250420);
double r250422 = r250403 * r250421;
double r250423 = r250399 / r250395;
double r250424 = r250394 / r250423;
double r250425 = pow(r250424, r250397);
double r250426 = r250416 / r250408;
double r250427 = r250425 * r250426;
double r250428 = r250404 - r250427;
double r250429 = sqrt(r250428);
double r250430 = r250403 * r250429;
double r250431 = r250402 ? r250422 : r250430;
return r250431;
}



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 (/ (* M D) (* 2.0 d)) < 1.4638650909187398e+287Initial program 12.0
rmApplied associate-*r/8.5
rmApplied sqr-pow8.5
Applied associate-*l*7.0
rmApplied add-cube-cbrt7.0
Applied times-frac6.1
rmApplied clear-num6.1
if 1.4638650909187398e+287 < (/ (* M D) (* 2.0 d)) Initial program 64.0
rmApplied associate-/l*53.4
Final simplification7.7
herbie shell --seed 2019344 +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))))))