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 -3.7880103230179996 \cdot 10^{+184}:\\
\;\;\;\;\sqrt{1 - \frac{\sqrt[3]{h}}{\sqrt[3]{\ell}} \cdot \left(\left(\left(\frac{D \cdot M}{2 \cdot d} \cdot \left(\sqrt[3]{\sqrt[3]{h}} \cdot \sqrt[3]{\sqrt[3]{h}}\right)\right) \cdot \frac{\sqrt[3]{\sqrt[3]{h}}}{\sqrt[3]{\ell}}\right) \cdot \left(\left(\frac{D \cdot M}{2 \cdot d} \cdot \frac{\sqrt[3]{\sqrt[3]{h}} \cdot \sqrt[3]{\sqrt[3]{h}}}{\sqrt[3]{\sqrt[3]{\ell} \cdot \sqrt[3]{\ell}}}\right) \cdot \frac{\sqrt[3]{\sqrt[3]{h}}}{\sqrt[3]{\sqrt[3]{\ell}}}\right)\right)} \cdot w0\\
\mathbf{elif}\;\frac{h}{\ell} \le -7.22297199381291 \cdot 10^{-296}:\\
\;\;\;\;\sqrt{1 - \left(\frac{h}{\ell} \cdot \frac{D \cdot M}{2 \cdot d}\right) \cdot \frac{D \cdot M}{2 \cdot d}} \cdot w0\\
\mathbf{else}:\\
\;\;\;\;w0 \cdot \sqrt[3]{\sqrt{1 - \left(\frac{M}{2 \cdot d} \cdot D\right) \cdot \left(\left(\left(\frac{\sqrt[3]{\sqrt[3]{h}} \cdot \left(\frac{M}{2 \cdot d} \cdot D\right)}{\frac{\sqrt[3]{\sqrt[3]{\ell} \cdot \sqrt[3]{\ell}}}{\sqrt[3]{\sqrt[3]{h}}}} \cdot \frac{\sqrt[3]{h}}{\sqrt[3]{\ell}}\right) \cdot \frac{\sqrt[3]{\sqrt[3]{h}}}{\sqrt[3]{\sqrt[3]{\ell}}}\right) \cdot \frac{\sqrt[3]{h}}{\sqrt[3]{\ell}}\right)} \cdot \left(1 - \left(\frac{M}{2 \cdot d} \cdot D\right) \cdot \left(\left(\left(\frac{\sqrt[3]{\sqrt[3]{h}} \cdot \left(\frac{M}{2 \cdot d} \cdot D\right)}{\frac{\sqrt[3]{\sqrt[3]{\ell} \cdot \sqrt[3]{\ell}}}{\sqrt[3]{\sqrt[3]{h}}}} \cdot \frac{\sqrt[3]{h}}{\sqrt[3]{\ell}}\right) \cdot \frac{\sqrt[3]{\sqrt[3]{h}}}{\sqrt[3]{\sqrt[3]{\ell}}}\right) \cdot \frac{\sqrt[3]{h}}{\sqrt[3]{\ell}}\right)\right)}\\
\end{array}double f(double w0, double M, double D, double h, double l, double d) {
double r4726392 = w0;
double r4726393 = 1.0;
double r4726394 = M;
double r4726395 = D;
double r4726396 = r4726394 * r4726395;
double r4726397 = 2.0;
double r4726398 = d;
double r4726399 = r4726397 * r4726398;
double r4726400 = r4726396 / r4726399;
double r4726401 = pow(r4726400, r4726397);
double r4726402 = h;
double r4726403 = l;
double r4726404 = r4726402 / r4726403;
double r4726405 = r4726401 * r4726404;
double r4726406 = r4726393 - r4726405;
double r4726407 = sqrt(r4726406);
double r4726408 = r4726392 * r4726407;
return r4726408;
}
double f(double w0, double M, double D, double h, double l, double d) {
double r4726409 = h;
double r4726410 = l;
double r4726411 = r4726409 / r4726410;
double r4726412 = -3.7880103230179996e+184;
bool r4726413 = r4726411 <= r4726412;
double r4726414 = 1.0;
double r4726415 = cbrt(r4726409);
double r4726416 = cbrt(r4726410);
double r4726417 = r4726415 / r4726416;
double r4726418 = D;
double r4726419 = M;
double r4726420 = r4726418 * r4726419;
double r4726421 = 2.0;
double r4726422 = d;
double r4726423 = r4726421 * r4726422;
double r4726424 = r4726420 / r4726423;
double r4726425 = cbrt(r4726415);
double r4726426 = r4726425 * r4726425;
double r4726427 = r4726424 * r4726426;
double r4726428 = r4726425 / r4726416;
double r4726429 = r4726427 * r4726428;
double r4726430 = r4726416 * r4726416;
double r4726431 = cbrt(r4726430);
double r4726432 = r4726426 / r4726431;
double r4726433 = r4726424 * r4726432;
double r4726434 = cbrt(r4726416);
double r4726435 = r4726425 / r4726434;
double r4726436 = r4726433 * r4726435;
double r4726437 = r4726429 * r4726436;
double r4726438 = r4726417 * r4726437;
double r4726439 = r4726414 - r4726438;
double r4726440 = sqrt(r4726439);
double r4726441 = w0;
double r4726442 = r4726440 * r4726441;
double r4726443 = -7.22297199381291e-296;
bool r4726444 = r4726411 <= r4726443;
double r4726445 = r4726411 * r4726424;
double r4726446 = r4726445 * r4726424;
double r4726447 = r4726414 - r4726446;
double r4726448 = sqrt(r4726447);
double r4726449 = r4726448 * r4726441;
double r4726450 = r4726419 / r4726423;
double r4726451 = r4726450 * r4726418;
double r4726452 = r4726425 * r4726451;
double r4726453 = r4726431 / r4726425;
double r4726454 = r4726452 / r4726453;
double r4726455 = r4726454 * r4726417;
double r4726456 = r4726455 * r4726435;
double r4726457 = r4726456 * r4726417;
double r4726458 = r4726451 * r4726457;
double r4726459 = r4726414 - r4726458;
double r4726460 = sqrt(r4726459);
double r4726461 = r4726460 * r4726459;
double r4726462 = cbrt(r4726461);
double r4726463 = r4726441 * r4726462;
double r4726464 = r4726444 ? r4726449 : r4726463;
double r4726465 = r4726413 ? r4726442 : r4726464;
return r4726465;
}



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) < -3.7880103230179996e+184Initial program 38.0
Simplified38.0
rmApplied add-cube-cbrt38.0
Applied add-cube-cbrt38.1
Applied times-frac38.0
Applied associate-*r*23.1
Simplified18.2
rmApplied add-cube-cbrt18.2
Applied cbrt-prod18.2
Applied add-cube-cbrt18.3
Applied times-frac18.3
Applied associate-*r*18.3
rmApplied *-un-lft-identity18.3
Applied add-cube-cbrt18.3
Applied times-frac18.3
Applied associate-*r*18.3
if -3.7880103230179996e+184 < (/ h l) < -7.22297199381291e-296Initial program 12.9
Simplified12.9
rmApplied associate-*l*10.9
if -7.22297199381291e-296 < (/ h l) Initial program 8.2
Simplified8.2
rmApplied add-cube-cbrt8.2
Applied add-cube-cbrt8.2
Applied times-frac8.2
Applied associate-*r*5.5
Simplified2.3
rmApplied add-cube-cbrt2.3
Applied cbrt-prod2.3
Applied add-cube-cbrt2.3
Applied times-frac2.3
Applied associate-*r*2.3
rmApplied add-cbrt-cube2.3
Simplified2.4
Final simplification7.7
herbie shell --seed 2019144
(FPCore (w0 M D h l d)
:name "Henrywood and Agarwal, Equation (9a)"
(* w0 (sqrt (- 1 (* (pow (/ (* M D) (* 2 d)) 2) (/ h l))))))