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} = -\infty:\\
\;\;\;\;\sqrt[3]{\sqrt{1 - \frac{\frac{D \cdot M}{2}}{d} \cdot \frac{\left(\frac{\sqrt[3]{\frac{D \cdot M}{2}} \cdot \sqrt[3]{\frac{D \cdot M}{2}}}{\sqrt[3]{d} \cdot \sqrt[3]{d}} \cdot \frac{\sqrt[3]{\frac{D \cdot M}{2}}}{\sqrt[3]{d}}\right) \cdot h}{\ell}} \cdot \left(1 - \frac{\frac{D \cdot M}{2}}{d} \cdot \frac{\frac{\frac{D \cdot M}{2}}{d} \cdot h}{\ell}\right)} \cdot w0\\
\mathbf{elif}\;\frac{h}{\ell} \le -2.308843356560576 \cdot 10^{-249}:\\
\;\;\;\;\sqrt{1 - \frac{D \cdot M}{d \cdot 2} \cdot \left(\frac{h}{\ell} \cdot \frac{D \cdot M}{d \cdot 2}\right)} \cdot w0\\
\mathbf{else}:\\
\;\;\;\;\sqrt[3]{\left(1 - \frac{\frac{D \cdot M}{2}}{d} \cdot \frac{\frac{\frac{D \cdot M}{2}}{d} \cdot h}{\ell}\right) \cdot \sqrt{1 - \frac{h \cdot \left(\left(\sqrt[3]{\frac{D \cdot M}{2}} \cdot \sqrt[3]{\frac{D \cdot M}{2}}\right) \cdot \frac{\sqrt[3]{\frac{D \cdot M}{2}}}{d}\right)}{\ell} \cdot \frac{\frac{D \cdot M}{2}}{d}}} \cdot w0\\
\end{array}double f(double w0, double M, double D, double h, double l, double d) {
double r4928429 = w0;
double r4928430 = 1.0;
double r4928431 = M;
double r4928432 = D;
double r4928433 = r4928431 * r4928432;
double r4928434 = 2.0;
double r4928435 = d;
double r4928436 = r4928434 * r4928435;
double r4928437 = r4928433 / r4928436;
double r4928438 = pow(r4928437, r4928434);
double r4928439 = h;
double r4928440 = l;
double r4928441 = r4928439 / r4928440;
double r4928442 = r4928438 * r4928441;
double r4928443 = r4928430 - r4928442;
double r4928444 = sqrt(r4928443);
double r4928445 = r4928429 * r4928444;
return r4928445;
}
double f(double w0, double M, double D, double h, double l, double d) {
double r4928446 = h;
double r4928447 = l;
double r4928448 = r4928446 / r4928447;
double r4928449 = -inf.0;
bool r4928450 = r4928448 <= r4928449;
double r4928451 = 1.0;
double r4928452 = D;
double r4928453 = M;
double r4928454 = r4928452 * r4928453;
double r4928455 = 2.0;
double r4928456 = r4928454 / r4928455;
double r4928457 = d;
double r4928458 = r4928456 / r4928457;
double r4928459 = cbrt(r4928456);
double r4928460 = r4928459 * r4928459;
double r4928461 = cbrt(r4928457);
double r4928462 = r4928461 * r4928461;
double r4928463 = r4928460 / r4928462;
double r4928464 = r4928459 / r4928461;
double r4928465 = r4928463 * r4928464;
double r4928466 = r4928465 * r4928446;
double r4928467 = r4928466 / r4928447;
double r4928468 = r4928458 * r4928467;
double r4928469 = r4928451 - r4928468;
double r4928470 = sqrt(r4928469);
double r4928471 = r4928458 * r4928446;
double r4928472 = r4928471 / r4928447;
double r4928473 = r4928458 * r4928472;
double r4928474 = r4928451 - r4928473;
double r4928475 = r4928470 * r4928474;
double r4928476 = cbrt(r4928475);
double r4928477 = w0;
double r4928478 = r4928476 * r4928477;
double r4928479 = -2.308843356560576e-249;
bool r4928480 = r4928448 <= r4928479;
double r4928481 = r4928457 * r4928455;
double r4928482 = r4928454 / r4928481;
double r4928483 = r4928448 * r4928482;
double r4928484 = r4928482 * r4928483;
double r4928485 = r4928451 - r4928484;
double r4928486 = sqrt(r4928485);
double r4928487 = r4928486 * r4928477;
double r4928488 = r4928459 / r4928457;
double r4928489 = r4928460 * r4928488;
double r4928490 = r4928446 * r4928489;
double r4928491 = r4928490 / r4928447;
double r4928492 = r4928491 * r4928458;
double r4928493 = r4928451 - r4928492;
double r4928494 = sqrt(r4928493);
double r4928495 = r4928474 * r4928494;
double r4928496 = cbrt(r4928495);
double r4928497 = r4928496 * r4928477;
double r4928498 = r4928480 ? r4928487 : r4928497;
double r4928499 = r4928450 ? r4928478 : r4928498;
return r4928499;
}



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) < -inf.0Initial program 61.8
Simplified61.8
rmApplied add-cbrt-cube61.8
Simplified23.8
rmApplied add-cube-cbrt23.8
Applied add-cube-cbrt23.8
Applied times-frac23.8
if -inf.0 < (/ h l) < -2.308843356560576e-249Initial program 13.6
Simplified13.6
rmApplied associate-*l*12.1
if -2.308843356560576e-249 < (/ h l) Initial program 8.2
Simplified8.2
rmApplied add-cbrt-cube8.2
Simplified2.8
rmApplied *-un-lft-identity2.8
Applied add-cube-cbrt2.8
Applied times-frac2.8
Final simplification8.1
herbie shell --seed 2019143
(FPCore (w0 M D h l d)
:name "Henrywood and Agarwal, Equation (9a)"
(* w0 (sqrt (- 1 (* (pow (/ (* M D) (* 2 d)) 2) (/ h l))))))