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.282180062770275197908078530250940945557 \cdot 10^{149}:\\
\;\;\;\;w0 \cdot \sqrt{1 - \frac{1}{\ell} \cdot \left({\left(\frac{M}{2} \cdot \frac{D}{d}\right)}^{2} \cdot h\right)}\\
\mathbf{elif}\;\frac{h}{\ell} \le -2.53200167457589704840317226177229055452 \cdot 10^{-63}:\\
\;\;\;\;\left(w0 \cdot \sqrt{\sqrt{1 - {\left(\frac{D \cdot M}{d \cdot 2}\right)}^{2} \cdot \frac{h}{\ell}}}\right) \cdot \sqrt{\sqrt{1 - {\left(\frac{D \cdot M}{d \cdot 2}\right)}^{2} \cdot \frac{h}{\ell}}}\\
\mathbf{else}:\\
\;\;\;\;w0 \cdot \sqrt{1 - \left(\left(h \cdot {\left(\frac{D \cdot M}{d \cdot 2}\right)}^{\left(\frac{2}{2}\right)}\right) \cdot \frac{1}{\ell}\right) \cdot {\left(\left(D \cdot M\right) \cdot \frac{1}{d \cdot 2}\right)}^{\left(\frac{2}{2}\right)}}\\
\end{array}double f(double w0, double M, double D, double h, double l, double d) {
double r5942512 = w0;
double r5942513 = 1.0;
double r5942514 = M;
double r5942515 = D;
double r5942516 = r5942514 * r5942515;
double r5942517 = 2.0;
double r5942518 = d;
double r5942519 = r5942517 * r5942518;
double r5942520 = r5942516 / r5942519;
double r5942521 = pow(r5942520, r5942517);
double r5942522 = h;
double r5942523 = l;
double r5942524 = r5942522 / r5942523;
double r5942525 = r5942521 * r5942524;
double r5942526 = r5942513 - r5942525;
double r5942527 = sqrt(r5942526);
double r5942528 = r5942512 * r5942527;
return r5942528;
}
double f(double w0, double M, double D, double h, double l, double d) {
double r5942529 = h;
double r5942530 = l;
double r5942531 = r5942529 / r5942530;
double r5942532 = -2.282180062770275e+149;
bool r5942533 = r5942531 <= r5942532;
double r5942534 = w0;
double r5942535 = 1.0;
double r5942536 = 1.0;
double r5942537 = r5942536 / r5942530;
double r5942538 = M;
double r5942539 = 2.0;
double r5942540 = r5942538 / r5942539;
double r5942541 = D;
double r5942542 = d;
double r5942543 = r5942541 / r5942542;
double r5942544 = r5942540 * r5942543;
double r5942545 = pow(r5942544, r5942539);
double r5942546 = r5942545 * r5942529;
double r5942547 = r5942537 * r5942546;
double r5942548 = r5942535 - r5942547;
double r5942549 = sqrt(r5942548);
double r5942550 = r5942534 * r5942549;
double r5942551 = -2.532001674575897e-63;
bool r5942552 = r5942531 <= r5942551;
double r5942553 = r5942541 * r5942538;
double r5942554 = r5942542 * r5942539;
double r5942555 = r5942553 / r5942554;
double r5942556 = pow(r5942555, r5942539);
double r5942557 = r5942556 * r5942531;
double r5942558 = r5942535 - r5942557;
double r5942559 = sqrt(r5942558);
double r5942560 = sqrt(r5942559);
double r5942561 = r5942534 * r5942560;
double r5942562 = r5942561 * r5942560;
double r5942563 = 2.0;
double r5942564 = r5942539 / r5942563;
double r5942565 = pow(r5942555, r5942564);
double r5942566 = r5942529 * r5942565;
double r5942567 = r5942566 * r5942537;
double r5942568 = r5942536 / r5942554;
double r5942569 = r5942553 * r5942568;
double r5942570 = pow(r5942569, r5942564);
double r5942571 = r5942567 * r5942570;
double r5942572 = r5942535 - r5942571;
double r5942573 = sqrt(r5942572);
double r5942574 = r5942534 * r5942573;
double r5942575 = r5942552 ? r5942562 : r5942574;
double r5942576 = r5942533 ? r5942550 : r5942575;
return r5942576;
}



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.282180062770275e+149Initial program 37.0
rmApplied div-inv37.0
Applied associate-*r*21.8
rmApplied times-frac21.9
if -2.282180062770275e+149 < (/ h l) < -2.532001674575897e-63Initial program 13.0
rmApplied add-sqr-sqrt13.0
Applied sqrt-prod13.1
Applied associate-*r*13.1
if -2.532001674575897e-63 < (/ h l) Initial program 9.6
rmApplied div-inv9.6
Applied associate-*r*7.3
rmApplied sqr-pow7.3
Applied associate-*l*5.5
rmApplied associate-*l*4.4
rmApplied div-inv4.4
Final simplification8.5
herbie shell --seed 2019200
(FPCore (w0 M D h l d)
:name "Henrywood and Agarwal, Equation (9a)"
(* w0 (sqrt (- 1.0 (* (pow (/ (* M D) (* 2.0 d)) 2.0) (/ h l))))))