w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell}}\begin{array}{l}
\mathbf{if}\;M \cdot D \le -1.8424936337956476 \cdot 10^{+198}:\\
\;\;\;\;\sqrt{1 - \frac{\frac{D}{\frac{\frac{\ell}{h}}{D}}}{\frac{2 \cdot d}{M} \cdot \frac{2 \cdot d}{M}}} \cdot w0\\
\mathbf{elif}\;M \cdot D \le -7.825691937265843 \cdot 10^{-166}:\\
\;\;\;\;\sqrt{1 - \frac{\left(\left(M \cdot D\right) \cdot \frac{M \cdot D}{2 \cdot d}\right) \cdot h}{\left(2 \cdot d\right) \cdot \ell}} \cdot w0\\
\mathbf{elif}\;M \cdot D \le 1.0402309426226118 \cdot 10^{-169}:\\
\;\;\;\;\sqrt{1 - \frac{\sqrt[3]{h} \cdot \left(\left(\frac{M \cdot D}{2 \cdot d} \cdot \sqrt[3]{h}\right) \cdot \left(\frac{M \cdot D}{2 \cdot d} \cdot \sqrt[3]{h}\right)\right)}{\ell}} \cdot w0\\
\mathbf{elif}\;M \cdot D \le 1.878928443575417 \cdot 10^{+74}:\\
\;\;\;\;\sqrt{1 - \frac{\left(\left(M \cdot D\right) \cdot \frac{M \cdot D}{2 \cdot d}\right) \cdot h}{\left(2 \cdot d\right) \cdot \ell}} \cdot w0\\
\mathbf{else}:\\
\;\;\;\;w0 \cdot \sqrt{1 - \frac{\sqrt[3]{h}}{\ell} \cdot \left(\left(\left(\sqrt[3]{h} \cdot D\right) \cdot \frac{1}{\frac{2 \cdot d}{M}}\right) \cdot \frac{\sqrt[3]{h} \cdot D}{\frac{2 \cdot d}{M}}\right)}\\
\end{array}double f(double w0, double M, double D, double h, double l, double d) {
double r99703419 = w0;
double r99703420 = 1.0;
double r99703421 = M;
double r99703422 = D;
double r99703423 = r99703421 * r99703422;
double r99703424 = 2.0;
double r99703425 = d;
double r99703426 = r99703424 * r99703425;
double r99703427 = r99703423 / r99703426;
double r99703428 = pow(r99703427, r99703424);
double r99703429 = h;
double r99703430 = l;
double r99703431 = r99703429 / r99703430;
double r99703432 = r99703428 * r99703431;
double r99703433 = r99703420 - r99703432;
double r99703434 = sqrt(r99703433);
double r99703435 = r99703419 * r99703434;
return r99703435;
}
double f(double w0, double M, double D, double h, double l, double d) {
double r99703436 = M;
double r99703437 = D;
double r99703438 = r99703436 * r99703437;
double r99703439 = -1.8424936337956476e+198;
bool r99703440 = r99703438 <= r99703439;
double r99703441 = 1.0;
double r99703442 = l;
double r99703443 = h;
double r99703444 = r99703442 / r99703443;
double r99703445 = r99703444 / r99703437;
double r99703446 = r99703437 / r99703445;
double r99703447 = 2.0;
double r99703448 = d;
double r99703449 = r99703447 * r99703448;
double r99703450 = r99703449 / r99703436;
double r99703451 = r99703450 * r99703450;
double r99703452 = r99703446 / r99703451;
double r99703453 = r99703441 - r99703452;
double r99703454 = sqrt(r99703453);
double r99703455 = w0;
double r99703456 = r99703454 * r99703455;
double r99703457 = -7.825691937265843e-166;
bool r99703458 = r99703438 <= r99703457;
double r99703459 = r99703438 / r99703449;
double r99703460 = r99703438 * r99703459;
double r99703461 = r99703460 * r99703443;
double r99703462 = r99703449 * r99703442;
double r99703463 = r99703461 / r99703462;
double r99703464 = r99703441 - r99703463;
double r99703465 = sqrt(r99703464);
double r99703466 = r99703465 * r99703455;
double r99703467 = 1.0402309426226118e-169;
bool r99703468 = r99703438 <= r99703467;
double r99703469 = cbrt(r99703443);
double r99703470 = r99703459 * r99703469;
double r99703471 = r99703470 * r99703470;
double r99703472 = r99703469 * r99703471;
double r99703473 = r99703472 / r99703442;
double r99703474 = r99703441 - r99703473;
double r99703475 = sqrt(r99703474);
double r99703476 = r99703475 * r99703455;
double r99703477 = 1.878928443575417e+74;
bool r99703478 = r99703438 <= r99703477;
double r99703479 = r99703469 / r99703442;
double r99703480 = r99703469 * r99703437;
double r99703481 = r99703441 / r99703450;
double r99703482 = r99703480 * r99703481;
double r99703483 = r99703480 / r99703450;
double r99703484 = r99703482 * r99703483;
double r99703485 = r99703479 * r99703484;
double r99703486 = r99703441 - r99703485;
double r99703487 = sqrt(r99703486);
double r99703488 = r99703455 * r99703487;
double r99703489 = r99703478 ? r99703466 : r99703488;
double r99703490 = r99703468 ? r99703476 : r99703489;
double r99703491 = r99703458 ? r99703466 : r99703490;
double r99703492 = r99703440 ? r99703456 : r99703491;
return r99703492;
}



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) < -1.8424936337956476e+198Initial program 41.8
Simplified41.8
rmApplied *-un-lft-identity41.8
Applied add-cube-cbrt41.8
Applied times-frac41.8
Applied associate-*r*42.3
rmApplied associate-*r/42.3
Applied associate-*l/42.3
Simplified33.0
rmApplied div-inv33.0
rmApplied un-div-inv33.0
Applied frac-times43.6
Applied associate-*l/43.7
Simplified39.4
if -1.8424936337956476e+198 < (* M D) < -7.825691937265843e-166 or 1.0402309426226118e-169 < (* M D) < 1.878928443575417e+74Initial program 12.5
Simplified12.5
rmApplied associate-*l/12.6
Applied frac-times8.3
if -7.825691937265843e-166 < (* M D) < 1.0402309426226118e-169Initial program 6.9
Simplified6.9
rmApplied *-un-lft-identity6.9
Applied add-cube-cbrt6.9
Applied times-frac6.9
Applied associate-*r*2.9
rmApplied associate-*r/2.9
Applied frac-times1.3
Simplified1.1
Simplified1.1
if 1.878928443575417e+74 < (* M D) Initial program 27.5
Simplified27.5
rmApplied *-un-lft-identity27.5
Applied add-cube-cbrt27.6
Applied times-frac27.6
Applied associate-*r*27.3
rmApplied associate-*r/27.3
Applied associate-*l/27.3
Simplified23.6
rmApplied div-inv23.6
Final simplification8.7
herbie shell --seed 2019107
(FPCore (w0 M D h l d)
:name "Henrywood and Agarwal, Equation (9a)"
(* w0 (sqrt (- 1 (* (pow (/ (* M D) (* 2 d)) 2) (/ h l))))))